有关php$_POST的问题:如下两串代码不一样吗,为什么第一串代码不报错,第二串代码会报错

如下两串代码不一样吗,为什么第一串代码不报错,第二串代码会报错


<?php
$name=$age="";
$nameErr=$ageErr="";
//$age=$_POST['age'];
//验证name
if(empty($_POST['name']))
{
    $nameErr="名字为必须输入字段";
}
else
{
    $name=$_POST['name'];
    if(!preg_match("/^\x{4e00}-\x{9fa5}{2,4}$/u",$name))
    {
        $nameErr="姓名必须是汉字的哦";
    }
}
?>

img

<?php
$name=$age="";
$nameErr=$ageErr="";
$name=$_POST['name'];
//$age=$_POST['age'];
//验证name
if(empty($name))
{
    $nameErr="名字为必须输入字段";
}
else
{
    if(!preg_match("/^\x{4e00}-\x{9fa5}{2,4}$/u",$name))
    {
        $nameErr="姓名必须是汉字的哦";
    }
}
?>

img

抱什么错难道是 重符声明了$name

那是因为第二段代码中$_POST['name']变量还未定义就直接用了,给$_POST变量加个检测就可以了,把代码按如下改一下试试看:

$name=$_POST['name'];
//上边这行代码改为:
$name = isset($_POST['name']) ? $_POST['name'] : '';