LINUX.ORG.RU

ошибка в библиотеке загрузки


0

1

индикатор загрузки файла в браузере идет до 100% ( тоесть файл загружается) после чего белая страница, ошибок нет


<?php

	 $upload_path = dirname (__FILE__).$upload_dir;
	 $upload_filename = basename($_FILES["filename"]["name"]);
	 $upload_dir = 'uploads';
	 $upload_link = "http://".$_SERVER ["HTTP_HOST"].dirname ($_SERVER ["PHP_SELF"]).$upload_dir.$upload_filename;
   
function upload_file($max_size=3145728) {
	global $upload_path, $upload_filename, $upload_dir, $upload_link;

	if ($_FILES) 
	{
		switch ($_FILES['filename']['type'])
		{
			case 'image/jpeg':	$ext='jpg'; break;
			case 'image/pjpeg':	$ext='jpg'; break;
			case 'image/png':	$ext='png'; break;
			case 'application/pdf':	$ext='pdf'; break;
			case 'application/x-bzip2':	$ext='bz2'; break;
			case 'application/x-gzip':	$ext='gz'; break;
			case 'application/x-tar':	$ext='tar gz'; break;
			case 'application/x-troff-man':	$ext='man'; break;
			case 'application/zip':	$ext='zip'; break;
         case 'audio/mpeg':	$ext='mp3'; break;
		
			default:			$ext='';
		}	
		if ($ext == true && $_FILES['filename']['size'] <= $max_size)
		{
			/*$file=time().'.'.$ext;*/
	  $m=@move_uploaded_file($_FILES['filename']['tmp_name'], /*TE_DIR.'/upload/'*/$upload_dir.$upload_filename);
			
			if ($m){ 
	  ini_set('display_errors',1);
     error_reporting(E_ALL);
	  $mes='Файл загружен.'; 
	  echo "Линки:<br>";
     echo "<input type='text' size=80 onclick='this.select()' value='".$upload_link."'><br><br>";
     echo "HTML Линк:<br>";
     echo "<input type='text' size=80 onclick='this.select()' value=\"<a href='".$upload_link."'>".$upload_link."</a>\"><br><br>";
     echo "BB-Code Линк:<br>";
     echo "<input type='text' size=80 onclick='this.select()' value='[url]".$upload_link."[/url]'><br><br>";
     echo "<a href='?".md5(microtime())."'>Загрузить другой файл</a>"; }
     
     elseif(!$m) {
     	ini_set('display_errors',1);
      error_reporting(E_ALL);
     	print_r($_FILES["filename"]["error"] );
			$mes='Ошибка. Возможно не хватает прав доступа.'; 
	  }
		else { 
		print_r($_FILES["filename"]["error"] );
		$mes='Ошибка. Тип файла не поддерживается или его размер больше допустимого.'; 
	 }
	return $mes;
   }
  }
 }
?>

что не так?

Ответ на: комментарий от trashymichael

интересно ты мыслишь, собаку я потом поставил т.к. в 5 версии php если в error_reporting, E_NOTICE добавить то на чтение неинициализированной переменной варнинги выводятся.
без собаки то же пробовал, и вывод ошибок то же ставил в начале, потом в саму функцию

эффект тот же

noname_user ★★★ ()
Ответ на: комментарий от noname_user

чтение неинициализированной переменной

в нормальных языках это критическая ошибка,

если ошибки нет в браузере поищи ее в логах апача, или что у тебя там за сервер

иногда бывает чистый экран из-за какой-то полной лажи, типа ошибки синтаксиса, редко но встречалось

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

trashymichael ★★★ ()
Ответ на: комментарий от noname_user

тут понимаешь такое дело что ты сам свой код смотреть не хочешь а нас просишь, у тебя там в первой же строке лажа, $upload_dir только в третей определяется, а в первой уже используется. короче, хочешь научиться — грызи, хочешь код исправить — в /jobs

trashymichael ★★★ ()
Ответ на: комментарий от trashymichael

ии??? тебе следует почитать учебники по php и узнать о том что переменная может использоваться до того как она инициализирована, а вот если она вообще не инициализирована или отсутствует тогда будет ошибка о неопределенной переменной, ты мой код гамном называешь, а сам даже азов не знаешь, ок спс разобрался уже, и дело было далеко не в переменной $upload_dir хД

noname_user ★★★ ()
Ответ на: комментарий от noname_user

>переменная может использоваться до того как она инициализирована

И чему же у тебя будет равен $upload_path после первой строки, толстячок?

anonymous ()
Ответ на: комментарий от anonymous

да о великий, прочти начальне главы по php, я провалил твою теорему, переставил переменные и о боже результат не изменился!

noname_user ★★★ ()
Ответ на: комментарий от Deleted

ок давай) тут ловить нечего) мне все ярко и коротко пояснили после 5 минтуного разбора кода на одном хорошем форуме по php (я не халтурщик ссылку не дам =))

noname_user ★★★ ()
Ответ на: комментарий от noname_user

>да о великий, прочти начальне главы по php, я провалил твою теорему, переставил переменные и о боже результат не изменился!

Так что будет внутри $upload_path после первой строки (где присваивается значение для него)? Конкретно, через var_dump.

anonymous ()
Ответ на: комментарий от noname_user

ок давай) тут ловить нечего) мне все ярко и коротко пояснили после 5 минтуного разбора кода на одном хорошем форуме по php (я не халтурщик ссылку не дам =))

Забирай свои ведерки и не писай в наш горшок. Иди на свой «хороший форум по php»

xpahos ★★★★★ ()
Ответ на: комментарий от noname_user

и я надеюсь это пыхклуб, потусуйся, там тебе тоже мозги быстро вставят

trashymichael ★★★ ()
Ответ на: комментарий от noname_user

> ссылку не дам

Это интернет, дружок, тут ссылку гуглятся на раз :)

http://www.php.ru/forum/viewtopic.php?t=36451

В своём решении ты всё же строки-то местами переставил, а говорил, что не важно, где переменную определять...

SOmni ★★ ()
Ответ на: комментарий от anonymous

> И чему же у тебя будет равен $upload_path после первой строки

У него эта переменная всё равно не используется :-)

sjinks ★★★ ()
Ответ на: комментарий от noname_user

> переменная может использоваться до того как она инициализирована

а вот если она вообще не инициализирована […] тогда будет ошибка

«До того, как она инициализирована» и «вообще не инициализирована» — это не одно и то же?

sjinks ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.