2011-07-03 37 views
0

有人可以帮我修复这段代码吗?我想解决的是:表单值变量和提交问题

如果一个人没有输入用户名或密码,我只是想在没有'抱歉,无法访问'的信息上面显示错误文本(红色信息在旁边)。另外,如果一个人获得访问权限(或不),我希望文本字段和提交按钮消失。

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

谢谢!

<?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> 

回答

0

试试这个:

<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 } ?> 
+0

虽然这确实有效(并且顺便说一下),但有没有办法让我在输入字段旁边出现单个错误消息?那最终是我想要的,当然,对我来说是最难的事! LOL – Reki

+0

@Reki对不起,这是你的工作。这是问答网站,而不是农场编程。 –

+0

我以为我的问题是q和q的'q'!我并不是要求某人为我写一些东西,我已经尽我所能完成了我的问题,我诚实地希望能够朝着正确的方向努力...... – Reki

0

考虑使用表单对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>'; 
    } 
} 

然后在窗体上: <form action="" method="post" onSubmit="checkForm()">

然后找出你要如何检查与JavaScript的形式。你可以拼凑其余的。