2015-07-11 110 views
1

我正在學習pHp。我做了一個登錄頁面。 我在這裏面臨的問題是,當用戶點擊登錄按鈕&如果記錄被發現,然後他被帶到顯示重定向鏈接的其他頁面,用戶必須點擊該按鈕才能進入下一頁。 現在我想要的是,當用戶點擊登錄按鈕,那麼細節應該在數據庫中進行交叉檢查,如果找到記錄,那麼用戶應該直接重定向到下一頁,否則應該顯示錯誤。 這是我的html頁面:無法從登錄頁面重定向到主頁

<!DOCTYPE html> 
<html> 
    <head> 
     <title>OpenMoz</title> 
     <meta charset="utf-8"/> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <link rel="stylesheet" type="text/css" href="index.css"/> 
     </head> 
    <body style="height:650px;"> 
    <h1 align="center" ><b><i>City Login</i></b></h1> 
     <div class="login"> 
     <form action="login.php" method="post"> 
      <input type="text" placeholder="Username" name="username" autocorrect=off autocapitalize=words required> <br> 
      <input type="password" placeholder="password" name="password" autocorrect=off autocapitalize=words required> <br> 
      <a href="home.php"><input type="submit" name="submit" value="Sign In"></a> 
     </form> 

     <a href="signup.php"><input type="submit" name="submit" value="Sign Up"></a> 
     <div> 
    </body> 
</html> 

這是login.php中腳本來驗證細節:

<?php 
$username = $_POST["username"]; 
$password = $_POST["password"]; 

if($username && $password) 
{ 
    $connect = mysql_connect("localhost","root","password") or die("Couldn't connect"); 
    mysql_select_db("phplogin")or die("Couldn't connect"); 
    $query = mysql_query("SELECT * FROM users WHERE username='$username'"); 
    $numrows = mysql_num_rows($query); 
    if($numrows!=0) 
    { 
     while($row = mysql_fetch_assoc($query)) 
     { 
      $dbusername = $row['username']; 
      $dbpassword = $row['password']; 
     } 
     if($username==$dbusername && $password==$dbpassword) 
     { 
      echo ("<center><a href='home.php'>Redirect</a></center>"); 
      $_SESSION['username'] = $username; 
     } 
     else 
     { 
      echo ("Incorrect Password !"); 
     } 
    } 
    else 
     die("The user doesn't exist"); 

} 
else 
    echo ("Please enter username & password"); 

?> 

如果我的問題被解決,我會真的很感謝。

回答

2

只要你沒有輸出任何東西到瀏覽器,你可以做一個頭重定向。這將實現你的目標。

更改此:

echo ("<center><a href='home.php'>Redirect</a></center>"); 
$_SESSION['username'] = $username; 

要這樣:

$_SESSION['username'] = $username; 
header("Location: /some-new-page.php"); 
exit; 

位置重定向後,請務必exit;

哦,是的,並清理您的輸入.. ..你是開放SQL注入。

$username = mysql_real_escape_string($_POST["username"]); 
$password = mysql_real_escape_string($_POST["password"]); 

哦是啊..和mysql_ *已棄用。使用mysqli_ *

+0

非常感謝你,先生,和是的,我會盡快學習SQL注入。 – Harsh

0

use header(「Location:home.php」);它的最好辦法在PHP重定向頁面

0
header("Location:whaeverpage.php"); 
exit(); 

任何數據發送到瀏覽器之前就做,否則你會得到一個頭媒體鏈接仙錯誤由JavaScript

或:

If($connected ==='yes'){//your connection statement 
    ?> 
     <script>window.location.replace("whatever_page");</script> 
    <? 
} 
0

WOWOW NONONO停! DO 不是學習mysql_新的開發API。它被棄用/不被支持,古老而容易出錯。學習使用mysqli_或更好的PDO,這裏是一個很好的教程http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

也在這裏:$ query = mysql_query(「SELECT * FROM users WHERE username ='$ username'」);

代碼容易受到黑客的SQL注入攻擊。必須使用mysql_real_escape_string。

另外,你不應該使用*,在大多數情況下,應該是特定的。此外,你不應該以明文存儲密碼(因爲你的登錄系統正在這樣做),你應該散列它.. 除此之外,檢查克里斯馬格已經說過我會would'ev https://stackoverflow.com/a/31355969/1067003