2016-05-23 34 views
-4

我只是想爲php應用程序編寫登錄系統。 我需要通過類型(管理員/用戶儀表板)的用戶日誌類型,我沒有看到任何理由,爲什麼這不應該工作。 如果有人幫我,我會很高興。非常感謝。 的問題是,當ü嘗試,即使登錄,在適當的用戶名和密碼,它是正確的,它只是拋出「錯誤的用戶名或PW ......」用戶類型的PHP + MySQL登錄系統

<?php 
session_start(); 
$host="127.0.0.1"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="rocketevents"; // Database name 
$tbl_name="users"; // Table name 


mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 


$myusername=$_POST['myusername']; 
$mypassword=($_POST['mypassword']); 
$type=''; 


$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 
$sql = "SELECT * FROM $tbl_name WHERE `Username`= '$myusername' and `Password`= '$mypassword' and `Type`= '$type'"; 
$result = mysql_query($sql); 
$array = mysql_fetch_array($result); 
$_SESSION['myusername']=$array['myusername']; 
$_SESSION['mypassword']=$array['mypassword']; 
$user_type = $array['Type']; 

$count=mysql_num_rows($result); 


if (empty($_POST['myusername']) or (empty($_POST['mypassword']))){ 
echo"Please fill in your username or password"; 
echo"<br>Please try to <a href='index.php'>Log in </a> again"; 
} else { 
if ($count == 1) { 

$_SESSION ['myusername'] = $myusername; 
$_SESSION ['mypassword'] = $mypassword; 

if ($user_type == "Admin") { 
    header ("location: admin.php"); 
} else if ($array ["type"] == "User") { 
    header ("location: user.php"); 
} else if ($array ["type"] == "Visitor") { 
    header ("location: visitor.php"); 
} 
} 
else { 
include("index.php"); 
    echo"Wrong user or password"; 
    echo"<br>Please try to <a href='index.php'>Log in</a> again or go to <a  href='sign.php'>registration</a> page"; 
} 
} 
?> 
+1

'mysql_ *'已過時,請嘗試使用'mysqli_ *或PDO' – Nehal

+0

尋求調試幫助的問題(_「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證的示例。](http://stackoverflow.com/help/mcve) – Epodax

+0

對不起,我是PHP編碼的新手。我可能會編寫全新的代碼,因爲我找不到這個問題..我很難「修復」它。 –

回答

0

您嘗試訪問您查詢中未指定名稱的結果列。

$array = mysql_fetch_array($result); 
$_SESSION['myusername']=$array['myusername']; 
$_SESSION['mypassword']=$array['mypassword']; 

結果將不包含任何名爲myusername或mypassword的列。 使用var_dump($array);來調查您的查詢實際返回的內容。

1

你的代碼很多的缺陷和mysql_ *已被棄用,請嘗試使用mysqli_ *或PDO

試試這個

<?php 
session_start(); 
//db connection 
global $conn; 
$servername = "127.0.0.1"; //host name 

$username = "root"; //username 

$password = "password"; //password 

$mysql_database = "rocketevents"; //database name 



//mysqli prepared statement 

    $conn = mysqli_connect($servername, $username, $password) or die("Connection failed: " . mysqli_connect_error()); 

    mysqli_select_db($conn,$mysql_database) or die("Opps some thing went wrong"); 



if (empty($_POST['myusername']) || (empty($_POST['mypassword']))) 
    { 
     echo"Please fill in your username or password"; 
     echo"<br>Please try to <a href='index.php'>Log in </a> again"; 
    } 
else 
{ 
     function test_input($data) 
      { 
        $data = trim($data); 
        $data = stripslashes($data); 
        $data = htmlspecialchars($data); 
        mysql_real_escape_string($data); 
        return $data; 
      }  

    $myusername=test_input($_POST['myusername']); 
    $mypassword=test_input($_POST['mypassword']); 

    $type='Admin'; //here you have set $_POST value of type 

    $tbl_name="users"; // Table name 


    $stmt = $conn->prepare("SELECT * FROM $tbl_name WHERE Username= and Password= and Type=? "); 

      $stmt->bind_param('sss',$myusername,$mypassword,$type); 

      $stmt->execute(); 
      $result=$stmt->get_result(); 
      $value=$result->fetch_assoc(); 

      $row_count= $stmt->affected_rows; 

      $stmt->close(); 
      $conn->close(); 


if ($row_count > 0) 
{ 
    //session setup 
    $_SESSION['myusername']=$value['Username']; 
    $_SESSION['mypassword']=$value['Password']; 
    $_SESSION['myusertype']=$value['Type']; 

    if ($_SESSION['myusertype'] == "Admin") 
    { 
     header ("location: admin.php"); 
    } 
    else if ($_SESSION['myusertype'] == "User") 
    { 
     header ("location: user.php"); 
    } 
    else ($_SESSION['myusertype'] == "Visitor") 
    { 
     header ("location: visitor.php"); 
    } 
} 
else 
{ 

    include("index.php"); 
    echo"Wrong user or password"; 
    echo"<br>Please try to <a href='index.php'>Log in</a> again or go to <a  href='sign.php'>registration</a> page"; 
} 
} 
?>