Форма загрузки файла PHP не работает - PullRequest
1 голос
/ 31 мая 2011

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

ФОРМА HTML:

<p>
<h2>Add News</h2><br />
REQUIRED *<br /><br />
<form enctype="multipart/form-data" action='addnews2.php' method='post' onsubmit="chose.value = uploadForm()" name="newsform">
<p>Headline:  *
<br>
<input name="title" type="text" size="75">
<br />
<br/>

  News: *<br>
<textarea name="text" cols="75" rows="10" width="200"></textarea><br /><br />
Image File:   
<br>
<input type="file" name="filetoupload" id="filetoupload"><br/><br />

  <input type="submit" name="choose" value="Submit" />
</p>
</form>
</p>

Страница обработки:

$date=date("l F d, Y");

$title=stripslashes($_POST['title']);
$text=stripslashes($_POST['text']);

if (($_FILES["filetoupload"]["type"] == "image/gif")
|| ($_FILES["filetoupload"]["type"] == "image/jpeg")
|| ($_FILES["filetoupload"]["type"] == "image/pjpeg")
|| ($_FILES["filetoupload"]["type"] == "image/png")
|| ($_FILES["filetoupload"]["type"] == "image/jpg"))
  {
  if ($_FILES["filetoupload"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["filetoupload"]["error"] . "<br />";
    }
    else
      {
            if (file_exists("images/news/" . $_FILES["filetoupload"]["name"]))
      {
      echo $_FILES["filetoupload"]["name"] . " already exists. ";
      }
      move_uploaded_file($_FILES["filetoupload"]["tmp_name"],
      "images/news/" . $_FILES["filetoupload"]["name"]);
      }
    }



$image = "images/news/".$_FILES['filetoupload']['name'];


if($title==""||$text==""){
    die("You need to fill in all details");
}


connect_to_db();
$query="insert into news (date, title, text, image) values ('".$date."','".mysql_real_escape_string($title)."','".mysql_real_escape_string($text)."','".$image."')";
$result=mysql_query($query);

if(mysql_affected_rows()==1){
header("Location:index.php?page=Admin&news=added");
}
else{
    die("there was a problem");
}
mysql_close();

1 Ответ

1 голос
/ 31 мая 2011

Похоже, вы пропустили оператор else, возможно, форматирование кода отключено и вызывает путаницу:

  if (file_exists("images/news/" . $_FILES["filetoupload"]["name"]))
  {
      echo $_FILES["filetoupload"]["name"] . " already exists. ";
  }else {
      move_uploaded_file($_FILES["filetoupload"]["tmp_name"],
  "images/news/" . $_FILES["filetoupload"]["name"]);
  } 

Сделайте это.Если нет, проверьте ваши разрешения и т. Д. И убедитесь, что файл не загружается, просто не в том месте, где вы ожидали.

Немного информации, я бы проверил $title и $text перед проверкой изображения.Как вы, вероятно, не хотите загружать изображение на сайт, если оба из них являются нулевыми.Вы также должны экранировать имя файла в пути к изображению до вставки:

$image = "images/news/".mysql_real_escape_string($_FILES['filetoupload']['name']);

Так как это также может быть подвержено инъекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...