<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title></title>
</head>
<body>
<?php
if ($_POST['password'] != $_POST['confirmpassword'])
{
$password = md5($_POST['password']);
$confirmPass = md5($_POST['confirmpassword']);
echo "<script type='text/javascript'>alert('Error. Passwords do not match.');</script>";
header("Refresh:0; Registration.html");
}
else
{
$password = md5($_POST['password']);
$confirmPass = md5($_POST['confirmpassword']);
echo 'Name: '.$_POST['firstname'].' '.$_POST['lastname']. '<br>';
if($_POST['agerange'] == 1)
{
echo "Under 18<br>";
}
elseif($_POST['agerange'] == 2)
{
echo "Age 18-24<br>";
}
elseif($_POST['agerange'] == 3)
{
echo "Age 25-34<br>";
}
elseif($_POST['agerange'] == 4)
{
echo "Age 35-44<br>";
}
elseif($_POST['agerange'] == 5)
{
echo "Age 45-54<br>";
}
elseif($_POST['agerange'] == 6)
{
echo "Age 55-64<br>";
}
else
{
echo "Age 65 or older<br>";
}
if ($_POST['sex'] == 'male')
{
echo "Gender: Male<br>";
}
else
{
echo "Gender: Female<br>";
}
echo 'Phone Number: '.$_POST['daytimephone']. '<br>';
echo 'Email: '.$_POST['email']. '<br>';
echo 'Username: '.$_POST['username']. '<br>';
if(isset($_POST['specialoffers']))
{
echo "You would like to recieve special offers from us via email.";
}
else
{
echo "You would NOT like to recieve special offers from us via email.";
}
}
?>
</body>
</html>
所以这个PHP脚本调用我的注册.html表单。当密码字段与确认密码字段不匹配时,会发布一条警报,指出它们不匹配,然后应刷新页面。出于某种原因,我无法弄清楚为什么它会踢出此错误:无法修改标头信息 - 标头已由 (输出从文档''我的网站''第 2 周''练习 4.php''注册.php:8 开始)在第 14 行的文档''我的网站''第 2 周''练习 4''注册:8)有人对如何解决这个问题有建议吗?我想要的只是在密码字段不匹配时刷新注册表。
在修改标头之前,您无法输出任何内容。这意味着:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title></title>
</head>
<body>
而这个:
echo "<script type='text/javascript'>alert('Error. Passwords do not match.');</script>";
不好。
除了其他人提到的安全方面之外,确保两个密码匹配的最佳方法是在使用jQuery valid或类似的东西提交表单之前。
如果您必须这样做,最好将消息存储在会话变量中,然后将其输出到另一个页面上:
if ($_POST['password'] != $_POST['confirmpassword'])
{
$password = md5($_POST['password']);
$confirmPass = md5($_POST['confirmpassword']);
$_SESSION["msg"] = "Error. Passwords do not match.";
header("Location: Registration.php");
}
注册时.php:
if (isset($_SESSION["msg"])){
echo "<script type='text/javascript'>alert('" . $_SESSION["msg"] . "');</script>";
unset($_SESSION["msg"]);
}