Strict Standards: Only variables should be passed by referen

kikity_94

Registered
Може ли да ми обясните защо подяволите ми дава тази грешка... Преди 1 година някаде когато ползвах скрипта работеше перфектно , а сега ....
PHP:
<?php	
	$exp = array("jpg", "jpeg", "png", "gif");
	$max_size = 800;
	if(isset($_POST['upload'])) {
		$file = isset($_FILES['file']['tmp_name']);
		$name = isset($_FILES['file']['name']);
		$size = isset($_FILES['file']['size']);	
			if(in_array(strtolower(end(explode(".", $name))), $exp)) {
				if($size > 0 && $size <= $max_size * 1024) {									
					if(move_uploaded_file($file, "uploads/".$name)) {
						echo ":P";
					}
				}			
			}
			else {
				echo "Файлът не трябва да надвишава $max_size KB";
			}		
	}
?>

Strict Standards: Only variables should be passed by reference in E:\Programs\xampp\htdocs\upload\index.php on line 18

18-ти ред е това
if(in_array(strtolower(end(explode(".", $name))), $exp)) {
 
То всъщност отговора на твоя въпрос е, че от PHP5 може да подаваме само променливи по референция като параметри на функции.

Смени това :
Код:
if(in_array(strtolower(end(explode(".", $name))), $exp)) {
=>
Код:
$name = explode(".", $name);
$name = end($name );
$name = strtolower($name );

if(in_array($name , $exp)) {
 
Fakeheal каза:
То всъщност отговора на твоя въпрос е, че от PHP5 може да подаваме само променливи по референция като параметри на функции.

Смени това :
Код:
if(in_array(strtolower(end(explode(".", $name))), $exp)) {
=>
Код:
$name = explode(".", $name);
$name = end($name );
$name = strtolower($name );

if(in_array($name , $exp)) {

Така се скрива грешката, но излиза друго когато се опитам да кача снимката и ми вади условието грешно и само елса си изкарва

echo "Файлът не трябва да надвишава $max_size KB";

А ето това е кодът след като го добавих

PHP:
<?php	
	$exp = array("jpg", "jpeg", "png", "gif");
	$max_size = 800;
	if(isset($_POST['upload'])) {
		$file = isset($_FILES['file']['tmp_name']);
		$name = isset($_FILES['file']['name']);
		$size = isset($_FILES['file']['size']);	
		
		$name = explode(".", $name);
		$name = end($name );
		$name = strtolower($name );

			if(in_array($name , $exp)) {
				if($size > 0 && $size <= $max_size * 1024) {									
					if(move_uploaded_file($file, "uploads/".$name)) {
						echo ":P";
					}
				}			
			}
			else {
				echo "Файлът не трябва да надвишава $max_size KB";
			}		
	}
?>
 
аз се оправих :) Ето ще ви дам и кода може на някой да му е полезен :)
PHP:
<?php
	error_reporting(E_ALL);
	ini_set("display_errors", true);	
	$exp = array("jpg", "jpeg", "png", "gif");
	$max_size = 800; //Във килобайти!!!
	if(isset($_POST['upload'])) {
		$file = $_FILES['file']['tmp_name'];
		$name = $_FILES['file']['name'];
		$size = $_FILES['file']['size'];	
			if(in_array(strtolower(end(explode(".", $name))), $exp)) {
				if($size > 0 && $size <= $max_size * 1024) {									
					if(move_uploaded_file($file, "uploads/".$name)) {
						echo ":P";
					}
				}			
			}
			else {
				echo "Файлът не трябва да надвишава $max_size KB";
			}		
	}
?>
 

Горе