2009-07-15 2 views
0

привет всем, у меня есть некоторые проблемы ... вопрос в том, что я хочу получить информацию из формы и сохранить ее в базе данных, данные (комментарий, загрузка изображений и электронная почта), когда я это сделал дал предупреждениеPHP и mysql question

код

// 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 (Загрузки/holder.jpg): не удалось не удалось открыть поток: нет такого файла или каталога в (адрес) в строке 48

Предупреждение: move_uploaded_file(): Не удается переместить '/ TMP/php4OAZMC' в 'загрузками/holder.jpg' в (какой-то адрес) в строке 48 Хранится в: загрузками/holder.jpg

как я могу это исправить?

заранее спасибо

ответ

1

Я думаю, что ему нужен абсолютный путь для сохраняемого файла в, а не относительно местоположения сценария, т.е.

/home/meme/www/example.com/Uploads/ 

Кроме того, проверьте разрешения на Upload каталог. Также еще один маленький совет, который сохранит ваш бекон в будущем - сохраните каталог и имена файлов в нижнем регистре; то вы не будете укусаться внизу в будущем, когда ваш код ищет файл или каталог, которого нет, потому что ваша файловая система чувствительна к регистру!

0

Имеются ли файлы Uploads/folder? Если нет, попробуйте создать его в первую очередь. Это может вызвать ошибку.

Кроме того, было бы неплохо проверить, работает ли move_uploaded_file() или нет. Он возвращает true, если он сработал, и false, если нет.

Также, как уже упоминалось, попробуйте использовать абсолютный путь.

Reference

+0

Определенно хорошая идея. Однако в этом случае move_uploaded_file() на самом деле бросает ошибку. – Gav

+0

Да, я знаю, что это вызвало ошибку, я просто передал некоторые советы, поэтому он может выйти чисто, если загрузка файла никогда не срабатывает по неизвестной причине и т. Д. – DeadHead

0

Вы также должны убедиться, что папка загрузок имеет свои права доступ установлены правильно - Для целей тестирования, CHMOD папки загрузок 777, используя ваш любимый FTP-клиент.

Удостоверьтесь, что, когда вы будете готовы применить свою загрузку, вы обеспечите правильную защиту папки (убедитесь, что она не может писать на нее), и убедитесь, что вы установите фильтры для файлов.

0
  1. Проверьте, существует ли путь к перемещению к существующему, и ваш процесс веб-сервера имеет права на него писать.
  2. Ваш запрос на вставку - это простое отверстие безопасности, ожидающее только инъекции SQL.Вы можете использовать следующие функции, чтобы уменьшить вероятность взлома:

    $ comments = mysql_real_escape_string ($ _ POST ['comments']); $ email = mysql_real_escape_string ($ _ POST ['email']); $ query = "вставить в гостевую книгу (комментарии, адрес электронной почты, img, display) значения ('{$ comments}', '{$ email}', 'some address', '0')";