我已阅读了这么多页面,并且在过去的三个小时内我一直坚持这一点,因为它不会起作用。
我一直收到通知:未定义的索引:名字
这是无法正常工作的大部分细分:
$errMsg = "";
function sanitise($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if (isset($_POST["firstname"]))
{
$firstname = $_POST["firstname"];
$firstname = sanitise($firstname);
if (!preg_match("/^[A-Za-z \-]+$/",$firstname))
{
$errMsg .= "First name must contain only letters or hyphens.<br/>";
}
if (strlen($firstname) > 40)
{
$errMsg .= "First name cannot be over 40 characters long.<br/>";
}
} else {
$errMsg .= "First name cannot be empty.<br/>";
$firstname = "";
}
if ($errMsg != "")
{
header("Location: fix_order.php?firstname=$firstname");
}
这是我想访问变量的fix_order.php上的代码。
$firstname = $_GET["firstname"];
echo "<p>firstname is $firstname .</p>";
我已经测试了第一页上的$ firstname,它回显了正确的值。
答案 0 :(得分:1)
将您的代码更改为
$firstname = $_GET["errMsg"];
echo "<p>firstname is $firstname .</p>";
您无法访问$firstname
,因为这不是关键值。 errMsg
是你应该使用的关键。
答案 1 :(得分:0)
对我来说很好,它应该工作。
要删除通知,您需要使用isset()
定义变量$firstname = isset($_GET['firstname']) ? $_GET['firstname'] : '';
OR
if(isset($_GET['firstname'])) {
$firstname = $_GET['firstname'];
} else {
$firstname = '';
}