Привет всем, у меня есть некоторые проблемы... вопрос в том, что я хочу получить информацию из формы и сохранить ее в базе данных, данные (комментарий, загрузка изображений и электронная почта), когда я сделал это, он дал предупреждение
код
// move file from temp location on server to your uploads folder
move_uploaded_file($F1["tmp_name"], "Uploads/$F1[name]");
print "Stored in: Uploads/$F1[name]";
// save location of upload to text file uploads.txt for later use
$datafile = fopen("uploads.txt","a");
flock($datafile,1);
fwrite($datafile, "Uploads/$F1[name]\n");
flock($datafile,3);
fclose($datafile);
// divide size by 1024 to get it in KB
/* if ($F1["size"] / 1024 > 50) {
print "Your gif file is too large! Less that 50KB please!";
exit(0);
}*/
if (!(IsSet($_FILE["fname"]))) {
$query="insert into guestbook (comments, email, img,display) values
('$_POST[comments]','$_POST[email]','some address ', '0')";}
else
$query="insert into guestbook (comments, email, img, display) values
('$_POST[comments]','$_POST[email]','some addres', '$_POST[0]')";
предупреждение, которое я получил,
Предупреждение: move_uploaded_file (Uploads/holder.jpg): не удалось открыть поток: нет такого файла или каталога в (адрес) в строке 48
Предупреждение: move_uploaded_file(): Невозможно переместить '/tmp/php4OAZMC' в 'Uploads/holder.jpg' в (некоторый адрес) в строке 48 Сохранено в: Uploads/holder.jpg
как я могу это исправить?
заблаговременно
Я думаю, что ему нужен абсолютный путь для сохранения файла, а не относительно местоположения script, т.е.
/home/meme/www/example.com/Uploads/
Также проверьте свои разрешения для каталога загрузки. Также еще один маленький совет, который сохранит ваш бекон в будущем - сохраните каталог и имена файлов в нижнем регистре; то вы не будете укусаться в нижней части когда-нибудь в будущем, когда ваш код ищет файл или каталог, которого нет, потому что ваша файловая система чувствительна к регистру!
Ваш запрос на вставку - это уязвимое отверстие безопасности, ожидающее только инъекции SQL. Вы можете использовать следующее, чтобы уменьшить вероятность взлома:
$comments = mysql_real_escape_string ($ _ POST ['comments']); $ email = mysql_real_escape_string ($ _ POST ['email']); $ query = "вставить в гостевую книгу (комментарии, email, img, display) значения ('{$ comments}', '{$ email}', 'some address', '0')";
Уже существует ли Uploads/folder? Если нет, попробуйте создать его в первую очередь. Это может вызвать ошибку.
Кроме того, его хорошая идея проверить, работает ли move_uploaded_file() или нет. Он возвращает true
, если он работает, и false
, если нет.
Также, как уже упоминалось, попробуйте также использовать абсолютный путь.
Вы также должны убедиться, что ваша папка Uploads установлена правильно. Для целей тестирования chmod загружает папку на 777 с помощью вашего любимого FTP-клиента.
Удостоверьтесь, что, когда вы будете готовы применить свою загрузку, вы убедитесь, что вы правильно защищаете папку (убедитесь, что не только кто-то может ее записать), и убедитесь, что вы установите фильтры для файлов типов.