2015-04-03 51 views
0

我有这个项目在DBMS上。我的表单正在工作,如果我输入正确的用户名和密码..但它只显示一个空白页面,当我输入错误的细节..它不执行其他部分..它如果部分工作正常..任何人都可以帮助我..我是PHP新手。其他部分不执行在PHP如果条件

<html> 
<head> 
    <title></title> 
</head> 
<body> 

<?php 
include 'connection.php'; 
SESSION_START(); 
$user = $_POST['registeredEmail']; 
$pass = $_POST['registeredpassword']; 
$sql = "SELECT * FROM users WHERE email = '".$user."' and password = '".$pass."';"; 
$qry = mysql_query($sql) or die(mysql_error()); 
$result = mysql_fetch_array($qry) or die(mysql_error()); 
if($result) 
{ 
$_SESSION['UserName'] = $result['name']; 
echo '<script type="text/javascript">'; 
echo 'alert("Sign In Successful");'; 
echo 'window.location.href = "sell.php";'; 
echo '</script>'; 



} 
else 
{ 
// header('Location: index.php'); 
echo 'sign in unsuccessful'; 
echo '<script type="text/javascript">'; 
echo 'alert("Sign In UnSuccessful. Either Email or password or both are wrong.. please try again or Sign Up");'; 
echo 'window.location.href = "index.php";'; 
echo '</script>'; 
} 
?> 
</body> 
</html> 
+0

你看过你的源代码吗?你的网页真的是空白吗? – Rizier123 2015-04-03 13:02:49

+1

请您在做任何其他事情之前阅读此http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php。 – 2015-04-03 13:04:54

回答

0

有在你的代码一些问题。我们首先关注如何解决这个问题。用下面的代码代替。

$sql = "SELECT * FROM `users` WHERE `email` = '".$user."' and `password` = '".$pass."';"; 
$qry = mysql_query($sql) or die(mysql_error()); 
if(mysql_num_rows($qry) == 1) 
{ 

您的代码易受SQL注入攻击。

How can I prevent SQL injection in PHP?

不要储存在纯文本的密码。使用诸如md5之类的加密算法。

Best way to store password in database

+0

这个,它似乎存储明文密码。我希望这段代码永远不会看到任何真实的应用。 – 2015-04-03 13:08:47

+0

这就是为什么我提到代码在开始时有问题 – Techie 2015-04-03 13:09:47

+0

我只是通过本地主机上的xampp使用代码朗姆酒..将遵从您的建议..非常感谢所有你们帮助... – 2015-04-03 13:54:09

1

而不是if($result)

可以使用if(mysql_num_rows($qry)>0)

+0

你会希望它是'if(mysql_num_rows($ qry)== 1)',因为它是一个登录表单,并且你不想要多于1个匹配 – Guinn 2015-04-03 13:11:27

0
<?php 
include 'connection.php'; 
SESSION_START(); 
$user = $_POST['registeredEmail']; 
$pass = $_POST['registeredpassword']; 
$sql = "SELECT * FROM `users` WHERE `email` = '".$user."' and `password` = '".$pass."';"; 
$qry = mysql_query($sql) or die(mysql_error()); 
$num=mysql_num_rows($qry); 
if($num==1) 
{ 
$result = mysql_fetch_array($qry) or die(mysql_error()); 

$_SESSION['UserName'] = $result['name']; 
echo '<script type="text/javascript">'; 
echo 'alert("Sign In Successful");'; 
echo 'window.location.href = "sell.php";'; 
echo '</script>'; 



} 
else 
{ 
// header('Location: index.php'); 
echo 'sign in unsuccessful'; 
echo '<script type="text/javascript">'; 
echo 'alert("Sign In UnSuccessful. Either Email or password or both are wrong.. please try again or Sign Up");'; 
echo 'window.location.href = "index.php";'; 
echo '</script>'; 
} 
?> 

试试这个

0

Basicly if语句总是条件为真,所以else语句永远不会达到你的。如果你检查一个不同的条件,比如vivek建议,在你检查你的查询是否只有一个匹配的情况下(因为我想你会希望一个用户只有一个账户),这个语句也可以是false,因此它会跳到else语句。