2013-03-12 68 views
0

嗨我试图做一个简单的登录系统。 (没有mysql)。我不知道我的代码有什么问题,并想知道是否有人可以帮助我。简单的登录系统在PHP和HTML

<?php 
$user=" "; 
$password=" "; 
if(isset($_POST['submit'])){ 

if(($_POST['user'] == $user) and ($_POST['password'] == $password)){ 
    echo "successful login!"; 
    } 
    else 
    { 
    echo "Bad Login."; 
    } 
} 
?> 
<html> 
    <input type="text" name = "user" value = "username" /> 
    <br> 
    <input type="password" name = "password" value = "password" /> 
    <br> 
    <input type="submit" name = "submit" value = "login"/ > 
</html> 

当我点击登录按钮时,没有任何反应。 谢谢

回答

1

如您所知,您应该使用==而不是=。但这里的一句话(我张贴作为一个答案,因为在评论,我不能缩进代码)

你为什么不使用

if(($_POST['user'] == $user) and ($_POST['password'] == $password)){ 
    echo 'success'; 
    } 
else{ 
    echo 'Bad login'; 
    } 
1
if($_POST['password'] = $password) 

需要进行:

if($_POST['password'] == $password) 

而且

if($_POST['user'] = $user) 

需要是:

if($_POST['user'] == $user) 

单等号将分配值,而2会比较他们。

你也错过了一个HTML表单。

<html> 
<form method="POST"> 
<input type="text" name = "user" value = "username" /> 
<br> 
<input type="password" name = "password" value = "password" /> 
<br> 
<input type="submit" name = "submit" value = "login"/ > 
</form> 
</html> 
+0

生病尝试,谢谢:3 – FlameBlazer 2013-03-12 20:09:28

+0

欲了解更多信息的样子这里:http://php.net/manual/en/language.operators.comparison.php – Jammerx2 2013-03-12 20:10:21

+0

因为他们应该是字符串,你应该使用===。 – 2013-03-12 20:11:03

3

您正在分配(=)的值,而在检查相等(==)。尝试更换

$_POST['user'] = $user 
$_POST['password'] = $password 

$_POST['user'] === $user 
$_POST['password'] === $password 

此外,因为你没有输出为错误的登录名和密码错误不同的错误,你可以在一个线面相结合的检查:

if ($_POST['user'] === $user && $_POST['password'] === $password) { 
    echo "Bad Login."; 
} else { 
    //Your other output here 
} 
+0

同样,因为它们应该是字符串,所以应该尽可能使用'==='。 – 2013-03-12 20:11:25

+0

@JordanDoyle,好点,谢谢。 – J0HN 2013-03-12 20:35:48

0

在PHP和我知道的所有语言都使用IFs,你使用两个等号(==)。只是在分配操作员。所以你的代码如下。

<?php 
    $user="teamhijack"; 
    $password="@#@#[email protected]#@#"; 
    if(isset($_POST['submit'])){ 

    if($_POST['user'] == $user){ 

    if($_POST['password'] == $password){ 
     echo "successful login!"; 
     } 
     else 
     { 
     echo "Bad Login."; 
     } 
     } 
     else 
     { 
     echo "Bad Login."; 
     } 
    } 
    ?> 
    <html> 
     <input type="text" name = "user" value = "username" /> 
     <br> 
     <input type="password" name = "password" value = "password" /> 
     <br> 
     <input type="submit" name = "submit" value = "login"/ > 
    </html> 

永远记住一个等于是分配。 IE:($ a =“Hello,World!”;)

两个等于等于运算符。 IE:if(“d”==“d”)

0

您错过了一个HTML表单。

<form method="POST"> 
    <input type="text" name = "user" value = "username" /> 
    <br> 
    <input type="password" name = "password" value = "password" /> 
    <br> 
    <input type="submit" name = "submit" value = "login"/ > 
</form> 

此外,如果你没有得到未定义指数告示..然后当您打开错误报告error_reporting(E_ALL);你certinaly会..

使用isset();声明,以尽量减少这些通知。

if (isset($_POST['submit'])) 
{ 
// Carry on the login 
} 

此外,通过使用==运算符查找与if语句更精确的匹配。

if($_POST['user'] == $user){