Форма не будет публиковать ввод текста с загрузкой файла в таблицу SQL с помощью PHP - PullRequest
0 голосов
/ 30 марта 2012

Я хочу получить правильный скрипт загрузки изображений, но по какой-то причине ему не нравится ввод описания.Он работал отлично, прежде чем я добавил описание ввода, и я не могу думать о том, что может быть не так, потому что это выглядит хорошо. Мой код не любит ввод описания в форме, что не так? Спасибо за помощь!

Форма HTML

<h1>Image Gallery</h1>  
 <form enctype="multipart/form-data" action="upload.php" method="POST">
 Please choose a file: <input name="uploaded" type="file" /><br />
 Description: <textarea maxlength="255" name="description" id="description"></textarea><br />
 <input type="submit" value="Upload" />
</form> 

Код PHP (естькод до этого, но это не имеет значения)

$userid = mysql_real_escape_string($_SESSION['UserID']);  
$imageid = mysql_real_escape_string($i);  
$image = mysql_real_escape_string($rename); 
$description = mysql_real_escape_string($_POST['description']); 
$registerquery = mysql_query("INSERT INTO imageupload (UserID, ImageID, Image, Description) VALUES('".$userid."', '".$imageid."', '".$image."', '".$description."')");  
 if($registerquery) {  
  header( 'Location: manage.php' ) ;
 }  
 else {  
  echo "<h1>Error</h1>";  
  echo "<p>Sorry, an error occured. Please go back and try again.</p>";  
 }   

Ответы [ 4 ]

0 голосов
/ 30 марта 2012

Распечатайте запрос и попробуйте запустить его в интерфейсе командной строки mysql, выдает ли он ошибку?

вы не очищаете строку описания, поэтому открыты для инъекции.

0 голосов
/ 30 марта 2012

Какой тип данных является столбцом для описания?

Замените текущий запрос на:

$description = mysql_real_escape_string(strip_tags(stripslashes($_POST['description']))); 
$register = "INSERT INTO imageupload (UserID, ImageID, Image, Description) VALUES('$userid', '$imageid', '$image', '$description')";

$registerquery = mysql_query($register) or die (mysql_error()); 


 if($registerquery) {  
  header( 'Location: manage.php' ) ;
 }  

 else {  
  echo "<h1>Error</h1>";  
  echo "<p>Sorry, an error occured. Please go back and try again.</p>";  
 }   
0 голосов
/ 30 марта 2012

Попробуйте заменить

 $description = $_POST['description'];

с

 $description = mysql_real_escape_string($_POST['description']);
0 голосов
/ 30 марта 2012

Может быть, описание, которое вы вставляете, содержит странные символы для db like "; ' и так далее ...?

В случае экранирования описания, полученного из поста, с помощью функции экранирования библиотеки php базы данных ... Это также хорошая практика, чтобы избежать внедрения sql

Если вы используете mysql: http://www.php.net/manual/en/function.mysql-real-escape-string.php

...