如下两串代码不一样吗,为什么第一串代码不报错,第二串代码会报错
<?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="姓名必须是汉字的哦";
}
}
?>
<?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="姓名必须是汉字的哦";
}
}
?>
抱什么错难道是 重符声明了$name
那是因为第二段代码中$_POST['name']变量还未定义就直接用了,给$_POST变量加个检测就可以了,把代码按如下改一下试试看:
$name=$_POST['name'];
//上边这行代码改为:
$name = isset($_POST['name']) ? $_POST['name'] : '';