2015-07-15 5 views
0

Я работаю над функцией загрузки изображений на свой файловый сервер и в то же время создаю предварительный просмотр большого пальца и создаю запись в мою базу данных mysql. До тех пор, как работает функция upload_image(), она загружает изображение и создает большой палец.Функция PHP-формы работает, но возвращает пустую страницу

Проблема заключается в том, что, когда я нажимаю кнопку отправки, чтобы загрузить выбранное изображение, функция PHP выполняет свою работу, но возвращает BLANK PAGE. Да, я знаю, «еще одна пустая страница вопроса о смерти, пойдите, найдите все остальные 53 сообщения, связанные с этим вопросом, и найдите решение« правильно? Ну, это не так просто.

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

Что я пробовал, спросите вы? Следующее просто представит соответствующий набор решений, которые я нахожу:

  1. Настройка параметров PHP.INI для ошибки: DONE. Даже создание файла журнала для каждой отдельной ошибки.
  2. Переопределение параметров PHP.INI из функции php-файла с настройками: DONE. Также я использовал сценарий из некоторых ответов, которые перекрывают протокол протокола ошибок.
  3. Поместите функцию выхода ('wtf') с начала на снизу, чтобы увидеть, есть ли ее синтаксическая ошибка или ошибка на определенной строке: DONE. Каждая строка будет печатать WTF на забытой боге странице.

Ну, есть другие решения, которые я пробовал, буду моим гостем и предложите некоторые ответы, и я скажу вам, если я уже пробовал.

Позволяет добраться до него. Мой HTML-код, который вызывает файл РНР:

<form action="assets/php/image_uploader.php" method="post" enctype="multipart/form-data">       
    <input type="file" name="myfile" id="fileToUpload"> 
    </br> 
    </br> 
    <input type="text" name="title" value="Titulo" size="64"> 
    <br> 
    <br> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 

И мой image_uploader.php код:

<?php 
function upload_image() 
{ 
$root = realpath($_SERVER["DOCUMENT_ROOT"]); 

$name = "image_" . date('Y-m-d-H-i-s') . "_" . uniqid() . ".jpg"; 
$type= $_FILES["myfile"]["type"]; 
$size= $_FILES["myfile"]["size"]; 
$temp= $_FILES["myfile"]["tmp_name"]; 
$error= $_FILES["myfile"]["error"]; 

if ($error > 0) 
{ 
    die("Error uploading file! code $error."); 
} 
else 
{ 
    if($type=="image/png" || $size > 2000000)//condition for the file 
    { 
     die("Format not allowed or file size too big!"); 
    } 
    else 
    { 
     if(move_uploaded_file($temp, $root . "/images/fulls/" . $name)) 
     { 
      list($ancho, $alto) = getimagesize($root . "/images/fulls/" .$name); 
      $nuevo_alto = 212; 
      $nuevo_ancho = 212; 
      $dx = 0; 
      $dy = 0; 
      $sx = 0; 
      $sy = 0; 
      if($ancho == $alto) 
      {   
      } 
      else 
      { 
       if($ancho > $alto) 
       { 
        $nuevo_ancho = $ancho * (212/$alto); 
       } 
       else 
       { 
        $sy = $alto/2 - $nuevo_alto/2; 
        $alto = $ancho; 
       } 
      } 
      $thumb = imagecreatetruecolor($nuevo_ancho, $nuevo_alto); 
      $origen = imagecreatefromjpeg($root . "/images/fulls/" .$name); 
      imagecopyresampled($thumb, $origen, $dx, $dy, $sx, $sy, $nuevo_ancho, $nuevo_alto, $ancho, $alto); 
      imagejpeg($thumb, $root . "/images/thumbs/" .$name); 
      imagedestroy($thumb); 
      echo "The file ". basename($_FILES["myfile"]["name"]). " has been uploaded."; 
     } 
    } 
} 
} 
if(isset($_POST['submit'])) 
{ 
    upload_image(); 
} 
?> 
+0

Пожалуйста, обратите внимание, что это Joomla и действия формы не совпадают. Вы можете просто ссылаться на такой файл PHP. Я не скажу, что прочитал множество вопросов, поскольку я знаю, что разработка для Joomla может быть тяжелой, так как мы все были там, но чтобы увидеть, как работает простая форма, возможно, посмотрите на модуль Login;) Чтение документации также покажет вам, как использовать стандарты кодирования Joomla, например, не используя '$ _POST',' $ _FILES' или 'date()'. У Joomla есть собственный API, поэтому для обеспечения безопасности, проверки и просто лучшего кода я бы предложил использовать его – Lodder

+0

@Lodder оправдывает мое невежество; Почему вы упоминаете Joomla? –

+0

О, дерьмо. Извините, что опубликовал это на неправильной вкладке. ** уходит в постель ** – Lodder

ответ

0

Разместил код в HTML f Ile, который был переименован позже, чтобы иметь расширение .php и называется функцией в разделе формы, как:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" enctype="multipart/form-data"> 
<input type="file" name="myfile" id="fileToUpload"> 
</br> 
</br> 
<input type="text" name="title" value="Titulo" size="64"> 
<br> 
<br> 
<input type="submit" value="Upload Image" name="submit"> 
</form> 

И теперь он работает, как если бы это была магия, я не знаю, если htmlspecialchar() функция имеет ничего сделайте это, но теперь код работает без ошибок. Поэтому я бы опубликовал это как ответ, но напомнил вам не рассматривать это как решение экрана смерти BLANK PAGE.

0

попробовать это:

$new_file = $root . "/images/fulls/" . $name; 
copy($temp, $new_file); 
if(!is_file($new_file)) { 
    die('cannot copy file'); 
} 

также обернуть основную часть с:

try{ 

} 
catch(Exception $ex) {die('['.$ex->getLine().'] '.$ex->getMessage());} 
+0

Спасибо за этот быстрый ответ, но это не отображает никаких ошибок на Пустой странице смерти и ее еще пустоте. –

+0

может попытаться отладить скрипт, добавив die («точка останова»); чтобы поймать линию, где она ломается, ваш файл не такой большой. – num8er

+0

Я думаю, что это проблема ограничения памяти, когда вы создаете изображение, попробуйте увеличить лимит памяти для этой операции: ini_set ('memory_limit', '128M'); – num8er

Смежные вопросы