我有一个问题要解决这个类型的错误,我也声明变量给它一个问题。
这是我的完整档案:
$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行
我做错了什么?
答案 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']
和其他索引y
,w
和h
的值。所以你必须在使用之前检查它。
例如,尝试
$x = (isset($_POST['x'])? (int) $_POST['x'] : 0;
对$_POST['y']
执行相同的操作,对h
和w
执行相同操作,您最好按照以下内容编写内容(我使用条件以获得更好的可读性):
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] );