получение ошибок в PHP-кодировании чего-то неопределенного переменной

0

Я получаю следующую ошибку в этом коде: Strict Standards: Only variables should be passed by reference in C:\xampp\htdocs\uploader\upload.php on line 12 Success

также другая ошибка. Notice: Undefined variable: fulltarget in C:\xampp\htdocs\uploader\upload.php on line 101

Notice: Undefined variable: fulltarget in C:\xampp\htdocs\uploader\upload.php on line 101

Вот ссылка pastebin, чтобы увидеть весь код: http://pastebin.com/JKegmNHC

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

Вот код:

    <?php

$submit=$_POST['sub'];
if(isset($submit))
{
$name=$_FILES['img']['name'];
$type=$_FILES['img']['type'];

$size=($_FILES['img']['size'])/1024;

$ext=end(explode('.',$name));
if (($ext == "gif")
|| ($ext == "jpeg")
|| ($ext == "jpg")
|| ($ext =="png")
&& ($size > 30))
{


############################## File Renaming ###################################################

$newname=uniqid();
//$ext=end(explode('.',$name));
$fullname=$newname.".".$ext;
$target="pics/";
$fulltarget=$target.$fullname;
if(move_uploaded_file($_FILES['img']['tmp_name'],$fulltarget))
{
echo "Success";
}
else
{
echo "Failed";
}
############################## File Renaming end ###################################################
}
else{
echo "not successful";
}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="abhi.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Php Image Uploader</title>
</head>

<body>
<div id="a1">
<form name="frm" method="post" enctype="multipart/form-data">
<input type="file" name="img" /><br />

<input type="submit" name="sub" value="Store" />
</form>
</div>
<div id="a2">

<?php echo "
<html>
<head>
<title>Aviary Photo Editer</title>
<!-- Load Feather code -->
<script type='text/javascript' src='http://feather.aviary.com/js/feather.js'></script>
<!-- Instantiate Feather -->
<script type='text/javascript'>
var featherEditor = new Aviary.Feather({
apiKey: 'ceegvx4siylhayrr',
apiVersion: 3,
theme: 'dark', // Check out our new 'light' and 'dark' themes!
tools: 'enhance,frames,crop,orientation,brightness,saturation,sharpness,draw,redeye,blemish,effects,stickers,resize,focus,contrast,warmth,colorsplash,text,whiten',
appendTo: '',
onSave: function(imageID, newURL) {
    var img = document.getElementById(imageID);
    img.src = newURL;
},
onError: function(errorObj) {
    alert(errorObj.message);
}
});
function launchEditor(id, src) {
featherEditor.launch({
    image: id,
    url: src
 });
return false;
}
 </script>
</head>

<body>

<div id='injection_site'></div>

<img id='image1' src='$fulltarget'/>

<p><input type='image' src='http://images.aviary.com/images/edit-photo.png' value='Edit photo' onclick=\"return launchEditor('image1', '$fulltarget');\" /></p>";

?>


</body>
</html>
Теги:

2 ответа

0

Вы получаете ошибки "Уведомление: неопределенные переменные", потому что вы пытаетесь использовать переменную, не инициализируя ее в первую очередь. В вашем HTML вы используете "$ fulltarget", но он устанавливается только после отправки формы. Если вы хотите избавиться от этого уведомления, вы должны положить что-то вроде $fulltarget = ''; после вашего PHP-открывающего тега.

Если вы проверите документацию по функциям PHP end() http://php.net/manual/en/function.end.php, вы увидите, что функция принимает массив как параметр через ссылку. Чтобы исправить эту ошибку, вы должны сохранить результаты explode() как переменную, а затем передать эту функцию переменной to end(). Например: $arr = explode('.', $name); $ext = end($arr); $arr = explode('.', $name); $ext = end($arr);

  • 0
    Как насчет этой ошибки, пожалуйста, это происходит, когда я загружаю изображение, и изображение отображается так, чтобы оно отображалось ... Strict Standards: Only variables should be passed by reference in C:\xampp\htdocs\uploader\upload.php on line 12 Success
  • 0
    Второй абзац моего ответа объясняет, в чем проблема с этой ошибкой.
0

Согласно [ PHP: end-Manual ], когда вы используете end() он передает последний элемент в массиве в качестве ссылки.

Вы можете попробовать пару вещей:

  1. Не используйте explode() в end(). Попробуйте выполнить взрыв, когда вы объявляете $name:
    $name = explode( '.', $_FILES['img']['name'] );

  2. Используйте array_slice() и list() вместо end():
    list($ext) = array_slice( explode( '.', $name), -1 );

Возможно, любой из них будет работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню