2015-04-03 82 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語句。