繁体   English   中英

未定义的索引:提交但它工作正常尝试过isset但失败

[英]Undefined index: submit but its working fine tried isset but fail

我收到此错误有人可以帮助我吗?

Notice: Undefined index: submit in
D:\xampp\htdocs\testsubject\cntcinfo.php on line 7

这是我的代码:

if($_POST['submit']=='Update')
{
mysqli_query($link,"    UPDATE usr_profile
                    SET phone='".$_POST['phone']."',
                        email='".$_POST['emails']."',
                        address='".$_POST['address']."',
                        postcode='".$_POST['postcode']."',
                        city='".$_POST['city']."';  
                    ");
header('Location: '.$_SERVER['HTTP_REFERER']);
exit;
}

我厌倦了使用isset但我得到了这个错误:

Fatal error: Cannot use isset() on the result of an expression (you
can use "null !== expression" instead) in
D:\xampp\htdocs\testsubject\cntcinfo.php on line 7

这是我的 isset

if(isset($_POST['submit']=='Update'))

如果要检查是否设置了 POST 值,则需要使用以下代码:

if(isset($_POST['submit'])) { 
    if($_POST['submit'] == 'Update') {
        //Do work here
    }
}

(或缩短它):

if(isset($_POST['submit']) && ($_POST['submit'] == 'Update')) {
    //Do work here
}

当您在isset()函数中调用$_POST['submit']=='Update' ,您要求它检查表达式的结果是否已设置(它无法处理)。 所以你需要像我上面显示的那样嵌套它。

如果您发现您获得了未定义的索引,请确保您发布的表单已将submit设置为其表单元素之一。

isset不用于比较。 您可以将其用作

if(isset($_POST['submit']) && $_POST['submit']=='Update')
{

}

Ans 确保您提交类型为

<input type="submit" name="submit" value="Update"/>

您的查询已开放用于 sql 注入,您可以在更新前使用

 $phone=mysqli_real_escape_string ( $link , $_POST['phone'] );

检查如何防止 PHP 中的 SQL 注入?

用这个

if(isset($_POST['submit']) && $_POST['submit']=='Update')) {
// Your code here
}

并非所有浏览器都为提交按钮发送值,如果表单也可用于添加用户,请考虑使用复选框来标记它是否是对用户个人资料的更新。

您是该代码的 SQL 注入攻击的坐鸭,您应该使用准备好的语句来消除 SQL 注入攻击的风险,您还应该检查 MySQL 是否曾经为查询返回任何错误。

无论您对用户的了解/信任程度如何,都需要验证所有用户提交的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM