я изучал этот 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()
get_magic_quotes_gpc () - это функция, которая проверяет конфигурацию (php.ini) и возвращает 0, если magic_quotes_gpc выключен (в противном случае возвращает 1).
Когда включены magic_quotes, все символы '(одинарные кавычки), "(двойные кавычки), \ (обратная косая черта) и NUL автоматически экранируются обратной косой чертой. Это сделано для предотвращения всевозможных проблем безопасности внедрения.
В В вашем случае код проверяет, отключена ли настройка, и добавляет косую черту, чтобы правильно экранировать содержимое, чтобы предотвратить внедрение SQL.
Как вы сказали, эта функция устарела и, безусловно, будет удалена в будущем (на самом деле они удалили ее в PHP6 ).
Альтернативой является экранирование данных во время выполнения по мере необходимости