我已经读了很多页面,在过去的三个小时里一直坚持下去,因为它根本不起作用。
我不断收到通知:未定义的索引:名字
以下是大部分不起作用的细分:
$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,它回显了值。
将
代码更改为
$firstname = $_GET["errMsg"];
echo "<p>firstname is $firstname .</p>";
您无法访问$firstname
因为这是值而不是键。 errMsg
是您应该使用的密钥。
对我来说
看起来不错,它应该可以工作。
要摆脱通知,您需要使用 isset(( 定义变量
$firstname = isset($_GET['firstname']) ? $_GET['firstname'] : '';
或
if(isset($_GET['firstname'])) {
$firstname = $_GET['firstname'];
} else {
$firstname = '';
}