如何在PHP中修复未定义的错误

时间:2016-09-13 07:11:22

标签: php

我有一个问题要解决这个类型的错误,我也声明变量给它一个问题。

这是我的完整档案:

$success='';
$error1='';
$valid_exts = array('jpeg', 'jpg', 'png', 'gif');

$max_file_size = 2000* 1024; #200kb

$nw = $nh = 50;
# image with # height

if(isset($_REQUEST['submit']))  
{
    $title=$_REQUEST['title'];
    $date=date('d-M-Y');
    /****prod image*******************************/
    $fn1=$_FILES['image']['name'];

    $fs1=$_FILES['image']['size'];

    $ftemp1=$_FILES['image']['tmp_name'];

    $img_type1=$_FILES['image']['type'];

    if(! $_FILES['image']['error'] && $_FILES['image']['size'] < $max_file_size) {
        $ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));

        if (in_array($ext, $valid_exts))
        {
            // Check if file already exists
            $path = 'image/thumb/'.$fn1;
            $size = getimagesize($_FILES['image']['tmp_name']);

            $x = (int) $_POST['x'];
            $y = (int) $_POST['y'];
            $w = (int) $_POST['w'] ? $_POST['w'] : $size[0];
            $h = (int) $_POST['h'] ? $_POST['h'] : $size[1];

            $data = file_get_contents($_FILES['image']['tmp_name']);
            $vImg = imagecreatefromstring($data);
            $dstImg = imagecreatetruecolor($nw, $nh);
            imagecopyresampled($dstImg, $vImg, 0, 0, $x, $y, $nw, $nh, $w, $h);
            imagejpeg($dstImg, $path);
            imagedestroy($dstImg);

            if(move_uploaded_file ($ftemp1,"image/$fn1")){
                $result="INSERT INTO add_banner VALUES ('','$title','$fn1','$date')";
                if(mysql_query($result)){

                    //echo "<script>alert('Banner Added Successfully !');</script>";
                    $success='<div class="alert alert-success" role="alert"><strong>Well done!</strong> You successfully add the banner.</div>';

                    // echo "<script>document.location.href='front_banner.php'</script>";
                } else {
                    $error1='<div class="alert alert-danger" role="alert"><strong>Oh snap!</strong> Change a few things up and try submitting again.</div>';
                    //echo "<script>document.location.href='front_banner.php'</script>";
                }
            } else {
                $error1='<div class="alert alert-danger" role="alert"><strong>Oh snap!</strong> Change a few things up and try submitting again.</div>';
                //echo "<script>document.location.href='front_banner.php'</script>";
            }
        } else {
            $error1='<div class="alert alert-danger" role="alert"><strong>Oh snap!</strong> Sorry, only JPG, JPEG, PNG & GIF files are allowed.</div>';         
        }
    } else {
        $error1='<div class="alert alert-danger" role="alert"><strong>Oh snap!</strong> Sorry, Please fill the Field</div>';
    }
}

这是我的输出:

  


注意:未定义的索引:x in    E:\ xampp \ htdocs \ novus_admin_panel \ web \ front_banner.php on   line 28

注意事项:未定义的索引:y in    E:\ xampp \ htdocs \ novus_admin_panel \ web \ front_banner.php on   line 29

注意:未定义的索引:w in    E:\ xampp \ htdocs \ novus_admin_panel \ web \ front_banner.php on   第30行

注意事项
:未定义的索引:h in   E:\ xampp \ htdocs \ novus_admin_panel \ web \ front_banner.php on   第31行

我做错了什么?

6 个答案:

答案 0 :(得分:0)

<?php if(isset($success)) { echo $success ; } .''.if(isset($error1)) { echo $error1 ;}.''.if(isset($error)) { echo $error;}?>

答案 1 :(得分:0)

您可以在设置它的php文件中初始化变量。

这样的事情:

<?php
$success = "";
$error1 = "";
$error = "";

然后你可以确定你的变量没有未定义,你可以在没有这个“未定义错误”的情况下使用它们。

在这些线之后,你可以做任何你想做的事。

修改

您的$_POST['x']$_POST['y']$_POST['w']$_POST['h']似乎未设置。尝试var_dump($_POST['x'], $_POST['y'], $_POST['w'], $_POST['h'])查看它是否已填满。

您可以检查是否设置为:

if ($_POST['x'] != "" && $_POST['y'] != "" && $_POST['w'] != "" && $_POST['h'] != "") {

if (!empty($_POST['x']) && !empty($_POST['y']) && !empty($_POST['w']) && !empty($_POST['h'])) {

if (isset($_POST['x']) && isset($_POST['y']) && isset($_POST['w']) && isset($_POST['h'])) {

    $x = (int) $_POST['x'];
    $y = (int) $_POST['y'];
    $w = (int) $_POST['w'] ? $_POST['w'] : $size[0];
    $h = (int) $_POST['h'] ? $_POST['h'] : $size[1];

    // do your thing ...
} else {
    $error1='<div class="alert alert-danger" role="alert"><strong>Oh snap!</strong> Blablabla </div>';         
}

编辑2

在您询问是否if (in_array($ext, $valid_exts))时,请在下面的第一个编辑中添加代码。这看起来像这样:

if (in_array($ext, $valid_exts)) {
    if ($_POST['x'] != "" && $_POST['y'] != "" && $_POST['w'] != "" && $_POST['h'] != "") {

        // ...
        // here is your code where you set $x, $y, $w, $h and the other things
        // ...

    } else {
        $error1='<div class="alert alert-danger" role="alert"><strong>Oh snap!</strong> Blablabla </div>';         
    }
} else {
    $error1='<div class="alert alert-danger" role="alert"><strong>Oh snap!</strong> Sorry, only JPG, JPEG, PNG & GIF files are allowed.</div>';         
}

希望这有帮助。

答案 2 :(得分:0)

我不完全理解你的问题,但这段代码看起来更好地显示错误信息。

<?php
if(isset($success) && !empty($success))
{
    echo $success." ";
}
if(isset($error1) && !empty($success))
{
    echo $success." ";
}
if(isset($success) && !empty($success))
{
    echo $success;
}
?>

答案 3 :(得分:0)

使用isset http://php.net/manual/en/function.isset.php

<?php
$success = "";
$error1 = "";
$error = "";

if (isset($success)) echo $success;
if (isset($error1)) echo $error1;
if (isset($error)) echo $error;
?>

答案 4 :(得分:0)

未定义$_POST['x']和其他索引ywh的值。所以你必须在使用之前检查它。

例如,尝试

$x = (isset($_POST['x'])? (int) $_POST['x'] : 0;

$_POST['y']执行相同的操作,对hw执行相同操作,您最好按照以下内容编写内容(我使用条件以获得更好的可读性):

if (isset($_POST['h']) && ((int) $_POST['h'] > 0)) {
    $h = (int) $_POST['h'] ;
} else {
    $h = $size['h'] ;
}

当然,也要查看你的POST的提交,因为它似乎没有定义这些值。

答案 5 :(得分:0)

试试这个:

$x = (int) ( isset($_POST['x']) ? $_POST['x'] : 0 );
$y = (int) ( isset($_POST['y']) ? $_POST['y'] : 0 );
$w = (int) ( isset($_POST['w']) ? $_POST['w'] : $size[0] );
$h = (int) ( isset($_POST['h']) ? $_POST['h'] : $size[1] );