【问题标题】:Form values variables and submission problems表单值变量和提交问题
【发布时间】:2011-07-03 03:00:27
【问题描述】:

有人可以帮我修复此代码吗?我要解决的是:

如果一个人没有输入用户名或密码,我只想要错误文本(侧面的红色消息),顶部没有“抱歉,无法访问”消息。

另外,如果有人获得(或没有)访问权限,我希望文本字段和提交按钮消失。

这不会是一个真实的表格,所以请不要担心我如何使用用户名和密码......如果可能的话,你认为我的大部分代码可以保持不变吗?

谢谢!

    <?php
    echo '<style type="text/css">
        .error
        {
            color: red;
        }
    </style>';

    $error = false;

    if (isset($_POST['submitted']))
    {

    if (empty($_POST['username']) || empty($_POST['password']))
    {
    $error = TRUE;
    }

    if (!$error && $_POST['username']=='test' && $_POST['password']=='abc123') {

    echo '<p>Correct. Thank you for entering.<p/>';
    }

    else
    {
    echo '<p>Sorry, no access.</p>
    ';
     }

     }
     ?>
     <form action="" method="post">
     Username: <input type="text" name="username" size="20" value="<?php
    if (isset($_POST['submitted']) && !empty($_POST['username']))
    {
        echo $_POST['username'];
    } ?>" />
    <?php
    if (isset($_POST['submitted']) && empty($_POST['username']))
    {
        echo '<span class="error">Please enter a username.</span>';
    }
    ?>
    <br />Password: <input type="password" name="password" size="20" value="<?php
    if (isset($_POST['submitted']) && !empty($_POST['password']))
    {
        echo $_POST['password'];
    } ?>" />
    <?php
    if (isset($_POST['submitted']) && empty($_POST['password']))
    {
        echo '<span class="error">Please enter a password.</span>';
    }
    ?>
   <br /><input type="submit" value="Log in" />
   <br /><input type="hidden" name="submitted" value="true" />
   </form>

【问题讨论】:

    标签: php webforms form-submit


    【解决方案1】:

    试试这个:

    <style type="text/css">
    .error {
    color: red;
    }
    </style>
    <?php
    
    $submitted  = isset($_POST['submitted']);
    $userName   = isset($_POST['username']) ? $_POST['username'] : null;
    $password   = isset($_POST['password']) ? $_POST['password'] : null;
    
    if($submitted) {
        if (!$userName || !$password) {
            echo '<p class="error">Please go back and fill the inputs.</p>';
        } elseif($userName == 'test' && $password == 'abc123') {
            echo '<p>Correct. Thank you for entering.<p/>';
        } else {
            echo '<p class="error">Sorry, no access.</p>';
        }
    } else {
    ?>
    <form action="" method="post">
    Username: <input type="text" name="username" size="20" value="<?php echo $userName; ?>" />
    <br />
    Password: <input type="password" name="password" size="20" value="" />
    <br /><input type="submit" value="Log in" />
    <br /><input type="hidden" name="submitted" value="true" />
    </form>
    <?php } ?>
    

    【讨论】:

    • 虽然这确实有效(顺便感谢一下),但有没有我在输入字段旁边出现的个别错误消息?这最终是我想要的,当然也是我最难做的事情!哈哈
    • @Reki 抱歉,这是你的工作。这是问答网站,不是编程农场。
    • 我认为我的问题是 q 和 a 的“q”!我不是要求有人从头开始为我写东西……我已经尽我所能解决了我的问题,老实说,我只是希望被推向正确的方向……
    【解决方案2】:

    考虑在表单上使用 onSubmit 事件。

    这里需要将php和javascript结合起来才能防止提交。创建一个由 onSubmit 调用的 Jscript 函数。如果未填写值,则返回 false。它会取消提交按钮并直接在屏幕上打印出来。

    所以就拿这个吧:

    $submitted  = isset($_POST['submitted']);
    $userName   = isset($_POST['username']) ? $_POST['username'] : null;
    $password   = isset($_POST['password']) ? $_POST['password'] : null;
    
    if($submitted)
    {
         if (!$userName || !$password) {
            echo '<p class="error">Please go back and fill the inputs.</p>';
        }
    }
    

    然后在您的表单上: &lt;form action="" method="post" onSubmit="checkForm()"&gt;

    然后弄清楚您将如何使用 javascript 检查表单。你可以把剩下的拼凑起来。

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 2011-03-04
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多