2012-02-02 42 views
3

在Register.php中,它包含一個表單。PHP - strlen不工作

<html> 
<body> 

<form action="Insert.php" method="post"> 
Email: <input type="text" name="email" /><br/> 
Username: <input type="text" name="username" /><br/> 
<input type="submit" name="Send Registration" value="Send Registration"/> 
</form> 

</body> 
</html> 

在Insert.php中,它包含執行一些驗證的代碼。

​​

當我輸入一個無效的電子郵件地址點擊'發送註冊',它會顯示錯誤信息「電子郵件無效」。 因此,我試圖輸入一個有效的電子郵件地址,並在用戶名字段輸入5個或更少的字符,然後點擊'發送註冊'。但它不顯示錯誤消息。

我可以知道我的代碼有什麼問題嗎?
對不起,我是編程和php的初學者。
在此先感謝!

回答

3

你的邏輯是錯的:

if(!strlen($_POST[username])>=6) 

替換爲:*也注意到變量中的「字符(否定器替換爲小於雙重否定,這是比較容易理解,如果你有通過大量的代碼看,你可能會錯過

if (strlen($_POST['username'])<6) 

希望這有助於

也是東西,你可能要考慮「!」。 擺脫「insert.php」並將THAT中的代碼放入與表單相同的頁面中。你可以做這樣的事情:

形式:<form method="post" action="'.$self.'">

(放在頁面的PHP括號內的頂部)

$self = $_SERVER['PHP_SELF']; 
$username = $_GET['username']; 
$email  = $_GET['email']; 

這取決於你想要的設置,使用POST或GET,我不能告訴你要使用哪個。

從這裏,你可以操縱你的變量和任何東西。

+0

感謝您的解釋! – Lloydworth 2012-02-02 04:13:16

2

如果您需要檢查5點或更少的字符:

 

if(strlen($_POST["username"])<=5) { 
    //show error 
} 

 
2

試試這個:

<?php 

if(!filter_var($_POST[email], FILTER_VALIDATE_EMAIL)) 
{ 
    exit("E-mail is not valid"); 
} 
else 
{ 
    $len = strlen($_POST["username"]); 
    if($len<=5) { 
    { 
    exit("Username should be at least 6 characters"); 
    } 
    else 
    { 
    // Continue other validations 
    } 
} 

?>