Php “始终打印”;请填写所有字段“;即使所有字段都已满?
在我的代码中,如果您没有填写,它应该打印“请填写所有字段”,但它永远不会像应该的那样继续注册,并且总是打印错误消息;虽然我做了一个测试,它会打印所有变量,以确保它们有一个值,而且它们有,所以我看不出问题Php “始终打印”;请填写所有字段“;即使所有字段都已满?,php,Php,在我的代码中,如果您没有填写,它应该打印“请填写所有字段”,但它永远不会像应该的那样继续注册,并且总是打印错误消息;虽然我做了一个测试,它会打印所有变量,以确保它们有一个值,而且它们有,所以我看不出问题 if($_POST['signUp']){ if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDE
if($_POST['signUp']){
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$display = $_POST['newDisplay'];
$username = $_POST['newUsername'];
$pass = $_POST['newPassword'];
$email = $_POST['newEmail'];
if ($display && $password && $username && $email) {
$signedUp = SignUp($username,$pass,$display,$ip,$email);
echo $signUpCode[$signedUp];
}
else {
echo "<p class='BasicText'>Please fill out all fields.</p>";
}
}
if($\u POST['signUp'])){
如果(!空($\u服务器['HTTP\u客户端\u IP'])){
$ip=$\服务器['HTTP\客户端\ ip'];
}elseif(!empty($_服务器['HTTP\u X\u FORWARDED\u FOR'])){
$ip=$\服务器['HTTP\u X\u FORWARDED\u'];
}否则{
$ip=$\u服务器['REMOTE\u ADDR'];
}
$display=$\u POST['newDisplay'];
$username=$_POST['newUsername'];
$pass=$\u POST['newPassword'];
$email=$_POST['newEmail'];
如果($display&&$password&&&$username&&$email){
$signedUp=SignUp($username、$pass、$display、$ip、$email);
echo$signUpCode[$signedUp];
}
否则{
echo“请填写所有字段。
”;
}
}
我知道所有的HTML字段都在工作,因为如果我删除if/else,它可以很好地为您注册。您的问题是您引用的
$password
,但变量是$pass
if ($display && $pass && $username && $email) {
您的问题出现在您参考的
$password
条件下,但变量是$pass
if ($display && $pass && $username && $email) {
执行
var\u dump($\u POST)
并将结果发布到这里(你的验证充其量也很差。你真的可以极大地改进它)。你是真的这样编码(没有缩进),还是只是复制和粘贴的某种问题?试图调试我自己的代码时,我会发疯。@Sam将所有缩进完整地粘贴到您的代码中,然后突出显示并单击{}
编辑器工具栏按钮以生成代码块或ctl-k
。您使用$password而不是$pass。这可能是个人偏好,但当$var是字符串时,我倾向于不使用if($var)
。相反,根据我要做的事情,将其转换为布尔值。如果要确保它已设置,请执行If(isset($var))
或如果我要确保它已设置且不为空If(!empty($var))
等。这样可以避免类型转换问题。也许你想确保它是一个非空字符串,但是如果字符串是“0”
,那么执行if($var)
将是错误的。执行var\u dump($\u POST)
并将结果发布在这里(你的验证最好不过是糟糕的。你真的可以极大地改进它)。你真的这样编码吗(没有缩进)或者这只是复制和粘贴的某种问题?试图调试我自己的代码时,我会发疯。@Sam将所有缩进完整地粘贴到您的代码中,然后突出显示并单击{}
编辑器工具栏按钮以生成代码块或ctl-k
。您使用$password而不是$pass。这可能是个人偏好,但当$var是字符串时,我倾向于不使用if($var)
。相反,根据我要做的事情,将其转换为布尔值。如果要确保它已设置,请执行If(isset($var))
或如果我要确保它已设置且不为空If(!empty($var))
等。这样可以避免类型转换问题。也许您想确保它是非空字符串,但是如果字符串是“0”
,那么执行if($var)
将是错误的。@Sam:调试规则1:始终有。PHP调试规则2:不要只启用错误报告
,还要在屏幕上显示错误<代码>错误报告(E_全部);ini设置(“显示错误”,1)代码>在运行时,或者在php.ini
@Sam:Rule#1 of debug:always have.Rule#2 of php debug:不仅启用错误报告
,还在屏幕上显示错误<代码>错误报告(E_全部);ini设置(“显示错误”,1)代码>在运行时,或在php.ini
中同时设置。