2016-06-07 68 views
0
<?php 

session_start(); 
include_once 'dbconnect.php'; 

if (isset($_SESSION['user']) != "") { 
    header("Location: home.php"); 
} 
if (isset($_POST['btn-login'])) { 
    $email = mysql_real_escape_string($_POST['email']); 
    $upass = mysql_real_escape_string($_POST['pass']); 
    $res = mysql_query("SELECT * FROM telecomt_user WHERE email='$email'"); 
    $row = mysql_fetch_array($res); 
    if ($row['password'] == md5($upass)) { 
     $_SESSION['user'] = $row['user_id']; 
     header("Location: home.php"); 
    } else { 
     ?> 
     <script>alert('wrong details');</script> 
     <?php 

    } 
} 
?> 

這是我從數據庫獲取數據的代碼,讓用戶通過電子郵件和密碼登錄。我的表名是「telecomt_user」。在獲取登錄頁面的數據時執行錯誤行的PHP代碼

<form method="post"> 
    <table align="center" width="30%" border="0"> 
     <tr> 
      <td><input type="text" name="email" placeholder="Your Email" required /> </td> 
     </tr> 
     <tr> 
      <td><input type="password" name="pass" placeholder="Your Password" required /></td> 
     </tr> 
     <tr> 
      <td><button type="submit" name="btn-login">Sign In</button></td> 
     </tr> 
     <tr> 
      <td><a href="register.php">Sign Up Here</a></td> 
     </tr> 
    </table> 

</form> 

而這是我的html表單代碼。代碼在localhost中工作正常,但是當我將其上傳到我的服務器時,它不起作用。它始終執行此行:

<script>alert('wrong details');</script> 

在我的數據庫中存在問題嗎?但我使用的是我在本地主機中使用的相同名稱和模式,並且我的註冊表單也適用於相同的數據庫。我的「dbconnect.php」文件也沒關係。問題是什麼?

+1

mysql_ *函數不贊成使用PHP 5,並且完全在PHP 7.刪除原因是mysql_ *函數不再被維護,已經過時,只能用於已經停止使用的mysql版本,以及可怕的不安全。您需要切換到更新的mysql接口庫。 – GordonM

+0

如果你把$ email = $ _ POST ['email'];還有通行證;你有什麼 ? – bfahmi

+0

我可以用什麼來代替mysql _ *。請建議我 – M0GLI

回答

0

更好地做到檢查上查詢只電子郵件地址和密碼

$res=mysql_query("SELECT * FROM telecomt_user WHERE email='$email' AND password='md5($upass)'"); 
$row=mysql_fetch_array($res); 

現在狀態登錄或沒有

if(count($row)>=1){ 
//login 
}else{ 
// credentials wrong message 
} 
+0

$ res = mysql_query(「SELECT * FROM telecomt_user WHERE email ='$ email'AND password ='md5($ upass)'」); $ row = mysql_fetch_array($ res); (count($ row)> = 1) $ $ _SESSION ['user'] = $ row ['user_id']; header(「Location:home.php」); } 其他{....} 現在它沒有顯示錯誤行,但沒有登錄。它仍然在同一頁index.php,但它應該去home.php – M0GLI

+0

是否應用這些代碼? – srinivas

+0

ob_start();請將這些標籤保留在文檔頂部。它肯定會重定向。 – srinivas

0

,而不是$行[「密碼」],你可以試着鍵入列字符串中的密碼,例如$ row [0](如果密碼列是第一列)。

0

您應該使用mysqli_ *函數而不是棄用的mysql_ *函數。

http://php.net/manual/en/book.mysqli.php

+0

這是一條評論,而不是答案。 [獲得足夠的代表發表評論並不難。](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an-i-相反) –

0

我認爲你必須把破發點中的每個條件一樣

if(your condition){ 
    echo "something";exit; 
}else{ 
    echo "nothing";exit; 
} 
+0

這是不正確的。 –