2014-11-03 147 views
-1

我有一個登錄頁面。我確信數據庫已連接,但是當我提交表單時,頁面刷新並沒有任何反應。 我可以請知道這裏有什麼問題嗎?我似乎無法修復它。 =(我的登錄頁面似乎無法正常工作

<?php 
session_start(); 

require_once('common/config.php'); 

if(isset($_POST['username'])) 
{ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    $sql = "SELECT * FROM `users` WHERE username='$username' and password='$password'"; 

    $result = mysql_query($sql) or die(mysql_error()); 
    $count = mysql_num_rows($result); 

    if ($count == 1) 
    { 
     $_SESSION['username'] = $username; 
     header("location: adminhomepage.php"); 
    } 
    else 
    { 
     echo "Invalid Login Credentials."; 
    } 

} 
?> 

這裏是我的形式。

<html> 
<head> 
    <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon"> 
    <link rel="icon" href="images/favicon.ico" type="image/x-icon"> 
    <title> 
     XXX 
    </title> 
    <link rel="stylesheet" href="login.css"> 
</head> 
<body> 
<img id= "loginlogo" src="images/loginlogo.png" alt="XXX"> 
<h1 id = "loginmain"> 
    XXX 
</h1> 
<br> 
    <div id= "inputs"> 
     <form id ="loginform" action="login.php" method="post"> 
      <h2 id = "loginheading"> 
       LOGIN 
      </h2> 
      <hr id ="loginline"> 
         <br> 
       <input id="username" type="text" placeholder="Username" autofocus required> 
         <br><br> 
       <input id="password" type="password" placeholder="Password" required> 
         <br><br> 
       <input id="loginbutton" type="submit" value="Login"> 
     </form> 
    </div> 
</body> 
</html> 
+1

你是否在迴應$ count並查看它將要發生什麼? – Choco 2014-11-03 11:48:34

+0

檢查密碼並在調用標題後添加一個'exit();' – Mihai 2014-11-03 11:51:57

+0

如果表單有方法等於post method =「post」 – Eldar 2014-11-03 11:58:17

回答

2

您沒有設置你的HTML輸入(用戶名/密碼)的名字。您只設置了一個ID(ID用於分配CSS)。請將name='username'name='password'添加到您的輸入中。通過這樣做,$_POST[username]$_POST[password]現在將包含您的表單中發佈的值。

Ergo,您當前的代碼表示:如果$_POST[username]已設置,請執行此操作。如果沒有設置,則不會發生任何事(空白頁)。嘗試在您上次}加入這個讓我的建議修改前:

else { echo "SESSION[username] is not set"; }

即時猜測這會給你消息「SESSION [用戶名]設置爲不」,而不是一個空白頁?

+0

我得到了這個錯誤。解析錯誤:語法錯誤,在C:\ xampp \ htdocs \ login中出現意外的'}'。第27行的php – Zazu 2014-11-03 12:44:47

+1

請在$ _POST鍵周圍添加引號,因爲php以這種方式將它們識別爲常量。 – vaso123 2014-11-04 09:15:01

2

調試時,它是打印使用echo()爲$ username和$ password接收到的值有時是有用的,也許你會發現,一個在POST []的元素沒有被正確發送發帖登錄形式將是有益的

1

首先,你需要知道一些重要的變化:。

  • 請勿使用mysql函數,請改用mysqli或PDO,否則bacuase mysql函數將被棄用。

  • 總是避免關於sql注入!逃脫你的絃樂,它們來自一個形式。

  • 您不需要創建$username$password變量,如果您以後不使用它們或不想操縱它們。直接使用$_POST["username"]$_POST["password"]即可。

  • 不要在數據庫中存儲明文密碼。使用像md5這樣的密碼算法,並將表格的值與加密的密碼進行比較。

在重定向頁面之前,您還可以嘗試調試您的代碼。所以當你調試時,註釋掉header("Location ...");這一行,然後轉儲你的sql。

所以,你應該代碼似乎就是這樣,當你調試:

session_start(); 
require_once('common/config.php'); 
if (isset($_POST['username'])) { 
    $sql = "SELECT * FROM `users` WHERE username='".mysqli_real_escape_string($link, $_POST["username"]). "'" 
     . " AND password='".md5($_POST["password"]). "'"; 
    echo $sql; //Here you can see, what your $sql has, and you can paste it directly into your CLI or phpMyAdmin, etc... 
    $result = mysql_queryi($link, $sql) or die(mysqli_error($link)); 
    $count = mysqli_num_rows($result); 
    if ($count == 1) { 
     $_SESSION['username'] = $_POST["username"]; 
     header("location: adminhomepage.php"); 
    } else { 
     echo "Invalid Login Credentials."; 
    } 
} 
+0

仍然沒有變化。 =(可能是我的表單有什麼不對嗎? – Zazu 2014-11-03 12:11:54