Помогите понять magic_quotes_gpc ()

я изучал этот PHP-код из учебника по загрузке файлов

<form method="post" enctype="multipart/form-data">
  <input name="userfile" type="file" id="userfile">  
</form>

<?php
  if (isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) {
    $fileName = $_FILES['userfile']['name'];
    $tmpName  = $_FILES['userfile']['tmp_name'];
    $fileSize = $_FILES['userfile']['size'];
    $fileType = $_FILES['userfile']['type'];

    $fp      = fopen($tmpName, 'r');
    $content = fread($fp, filesize($tmpName));
    $content = addslashes($content);
    fclose($fp);

   if (!get_magic_quotes_gpc()) {
     $fileName = addslashes($fileName);
   }

   include 'library/config.php';
   include 'library/opendb.php';

   $query = "INSERT INTO upload (name, size, type, content ) ".
     "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

   mysql_query($query) or die('Error, query failed');
   include 'library/closedb.php';

, теперь я понимаю каждую функцию и все, используя документацию php

ЗА ИСКЛЮЧЕНИЕМ

get_magic_quotes_gpc()
  • ЧТО ЭТО? Что это делает?
  • Является ли это существенным? Если да, есть ли замена для этого?
  • В руководстве по PHP сказано: «Эта функция устарела с версии PHP 5.3.0. Использование этой функции крайне не рекомендуется». Уточните пожалуйста?
  • Нет ли способа загрузить файлы на (веб) сервер harDisk и предоставить ссылки на них ..
8
задан kiamlaluno 18 August 2010 в 12:40
поделиться

1 ответ

get_magic_quotes_gpc () - это функция, которая проверяет конфигурацию (php.ini) и возвращает 0, если magic_quotes_gpc выключен (в противном случае возвращает 1).

Когда включены magic_quotes, все символы '(одинарные кавычки), "(двойные кавычки), \ (обратная косая черта) и NUL автоматически экранируются обратной косой чертой. Это сделано для предотвращения всевозможных проблем безопасности внедрения.

В В вашем случае код проверяет, отключена ли настройка, и добавляет косую черту, чтобы правильно экранировать содержимое, чтобы предотвратить внедрение SQL.

Как вы сказали, эта функция устарела и, безусловно, будет удалена в будущем (на самом деле они удалили ее в PHP6 ).

Альтернативой является экранирование данных во время выполнения по мере необходимости

19
ответ дан 5 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: