0

我需要更改变量的值$destination以帮助验证表单。如果表单中没有任何字段,则页面会刷新并显示错误消息,这很有效。如果所有字段均已填写,则$destination值应更改并'it works!'打印消息。但是,如果填写了所有字段并且用户提交了表单,'it works!'则会打印消息,但$destination' 的值仍设置为'this-page'。我在这里想念什么?

$destination = '';

$fname = $_POST['fname'];
$lname = $_POST['lname'];
$phone = $_POST['phone'];
$email = $_POST['email'];

if (!$fname OR !$lname OR !$email OR !$phone) {
print 'Please fill in all of your contact information';
$destination = 'this-page';
}
else {
print 'It works!';
    $destination = 'results-page';
}
4

3 回答 3

0

似乎问题与此处的验证部分无关。您从 else 语句中得到 print 和从 if 语句中得到 $destination 变量?这在逻辑上应该是不可能的。您确定您的代码中没有任何语法错误等吗?那是您程序中的确切代码吗?

于 2013-02-01T17:38:16.080 回答
0
$destination = '';

$fname = $_POST['fname'];
$lname = $_POST['lname'];
$phone = $_POST['phone'];
$email = $_POST['email'];

if (!empty($fname) || !empty($lname) || !empty($email) OR !empty($phone)) {
    print 'Please fill in all of your contact information';
    $destination = 'this-page';
}
else {
    print 'It works!';
    $destination = 'results-page';
}
于 2013-02-01T16:57:58.980 回答
0

希望这是学术性的。有更好的方法来解决这个问题。但在这儿:

$destination = '';

$fname = isset($_POST['fname']) ? $_POST['fname'] : null ;
$lname = isset($_POST['lname']) ? $_POST['lname'] : null ;
$phone = isset($_POST['phone']) ? $_POST['phone'] : null ;
$email = isset($_POST['email']) ? $_POST['email'] : null ;

if (empty($fname) || empty($lname) || empty($phone) || empty($email)) {
    print 'Please fill in all of your contact information';
    $destination = 'this-page';
} else {
    print 'It works!';
    $destination = 'results-page';
}

有朝一日看看一些 PHP 框架以及它们如何处理表单验证。例如: http: //framework.zend.com/manual/1.12/en/zend.form.elements.html 可能会给你一些见解。

于 2013-02-01T16:58:29.860 回答