2011-07-03 70 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的形式。你可以拼湊其餘的。