0
if(!empty($_POST))
{
if(empty($_POST['username'])) {die("Please enter a username.");}
....

结果是空白页 - 带有上述警报。
我想将表单保留在页面上。就像是:

if(empty($_POST['username']))?> <div id="info"><?php{echo "Please enter a username"};?></div> 

因此,只需编写一个信息,然后从此时停止代码执行。

4

3 回答 3

3

停止执行,但您可以使用:

die( ' <div id="info">Please enter a username</div> ');

要允许加载页面的其余部分,您可以使用:

$errors = array();
if(empty($_POST['username'])) { 
    $errors[] = 'Please enter your username'; 
}

然后稍后在您的html中添加

foreach($errors as $error){
    echo "<div class='error'>$error</div>;
}
于 2013-01-09T17:08:37.957 回答
1

设置一些标志并返回/重定向到同一页面。在同一页面(带有表单的脚本)上,检查标志集并显示消息。

于 2013-01-09T17:10:55.840 回答
1

与其在单个验证错误上“停止执行”,不如获取所有错误并将它们显示给用户:

<?php
if (!empty($_POST))
{
    // validate form
    $errors = array();

    if (empty($_POST['username']))
    {
        $errors['username'] = 'Please enter a username.';
    }

    if (empty($_POST['address']))
    {
        $errors['address'] = 'Please enter an address.';
    }

    if (empty($errors))
    {
        // save to database then redirect
    }
}

?>
<form>
    Username:<br />
    <input type="text" name="username" value="" /><br />
<?php if (!empty($errors['username'])): ?>
    <div class="error">
        <?php echo $errors['username'] ?>
    </div>
<?php endif ?>

    Address:<br />
    <input type="text" name="address" value="" /><br />
<?php if (!empty($errors['address'])): ?>
    <div class="error">
        <?php echo $errors['address'] ?>
    </div>
<?php endif ?>
</form>
于 2013-01-09T17:16:53.830 回答