2013-03-08 205 views
-2

我已經做了數據庫列電子郵件,名字,姓氏,密碼..等等數據
我的登錄頁面使用電子郵件和密碼用於登錄
我想要檢索的名字列在鍵入的名字同一行作爲電子郵件
我想知道怎麼做
我的代碼如下所示: -
檢索MySQL數據庫

$query=mysql_query("SELECT * FROM Users WHERE email='$email' AND 
`password`='$encrypted_pass' "); 

在此之後,我希望能夠給一個變量分配給姓氏,所以我可以創建一個會話連同登錄

+4

[**在新的代碼,請不要使用'mysql_ *'功能**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit 2013-03-08 01:31:54

+0

我建議你需要一個很好的教程。這可能是一個網站,也許是一個谷歌搜索「php mysql教程」,或一本好書。你當地的公共圖書館可能有一些。 – 2013-03-08 01:36:28

回答

0

我認爲這涵蓋了你要求的一切。開始一個會話,檢查它是否好,爲我們的發佈數據設置幾個變量,做一些數據驗證,設置查詢,查詢數據庫,檢查結果,在會話中設置var lastname。

<?php 
header('Content-type: text/html'); 

    session_start(); 
    if (session_id() === '') { 
     echo 'session_id is null!'; 
     exit; 
    } 
    $myemail = null; 
    $mypassword = null; 

    if (isset($_POST['Submit']) == true) { 
     //assuming you have a db connection 
     //mysql_connect($host, $user, $password) || die(mysql_error()); 
     //mysql_select_db($database) || die(mysql_error()); 

    if ((isset($_POST["username"]) === false)|| 
      (isset($_POST["password"]) === false)) { 
      echo 'Please fill in all fields'; 
      exit; 
     } else { 
      // get the post data 
      $myemail = ($_POST["username"]); 
      $mypassword = ($_POST["password"]); 
     } 

    // check the form in database 
    $sql = "SELECT * FROM Users WHERE email = '".$myemail."' 
      AND password = '".$mypassword."'"; 
    $result = mysql_query($sql); 
    $count = mysql_num_rows($result); 

    $_SESSION['loggedin'] = false; 
    if ($count === 1) { 
     $userrecord = mysql_fetch_array($result); 
     $_SESSION['username'] = $userrecord['username']; 
     $_SESSION['password'] = $userrecord['password']; 
     $_SESSION['loggedin'] = true; 
     $_SESSION['lastname'] = $userrecord['lastname']; 
     // assign last name to a session var 

     echo 'You have been logged in successfully"; 
    } else { 
     echo 'Wrong username or password'; 
     exit; 
    } 
} else { 
    echo "No form post detected.<br><br>"; 
} 
?> 

這裏有一些基本的東西使用Mysqli,因爲mysql_命令已被棄用。再次,它使用一些常用名稱,以便相應地進行調整

/********************************/ 
    // using mysqli (untested but should work) 
    /********************************/ 

    $mysqli = new mysqli("localhost", "dbuser", "dbpassword", "default_dbname"); 

    /* check connection */ 
    if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    } 

    // ecsape the query params 
    $myemail = $mysqli->real_escape_string($myemail); 
    $mypassword = $mysqli->real_escape_string($mypassword); 

    if ($mysqli->query("SELECT * FROM Users WHERE email = '$myemail' 
         AND password = '$mypassword'")) { 
     printf("%d Rows returned.\n", $mysqli->affected_rows); 

    // here is where you can set the $_SESSION vars 
    // and do any other work you want to do on login. 

    } 


    $mysqli->close(); 
    /********************************/ 
    //end mysqli 
    /********************************/ 

最後一件事。獲取GitHub.com存儲庫設置,以便您可以輕鬆回滾到以前的版本。這真的是一個必須有國際海事組織。

+0

array(3){[「name」] => NULL [「lastname」] => NULL [「logged_in」] => string(9)「logged in」}您已成功登錄 我試過這個 - >如果($計數=== 1){ \t $ userrecord = mysql_fetch_array($結果); \t session_start(); $ _SESSION ['lastname'] = $ userrecord ['lastname']; \t $ _SESSION [ 'LOGGED_IN'] = '登錄'; \t var_dump($ _ SESSION); echo'您已成功登錄'; } – Tomer 2013-03-08 02:15:23

+0

我在那裏留下了var_dump oops。這是在查詢中爲名稱使用常用值的示例代碼等,您是否檢查一切是否正確?數組值爲空,因爲查詢沒有返回任何內容(如果它實際上運行)。沒有必要移動session_start或代碼的任何其他部分來嘗試這個或那個。如果您的表單正確發佈並且我使用的名稱是正確的,代碼將起作用。我在代碼中評論了你的數據庫連接,並假定你有一個連接打開,是嗎? – 2013-03-08 02:54:35

+0

工作..謝謝!我可以收到你的電子郵件嗎,所以當我遇到麻煩時我可以請你幫忙嗎?我是一個14歲的新手 – Tomer 2013-03-08 04:00:37

1

然後你在列列表中指定列:

SELECT LastName 
FROM Users 
WHERE email = '$email' 
... 

然後,您需要獲取結果集將其分配給一個變量。

1

mysql_職能正式廢棄,不再維護/使用安全。

你應該使用PHP的PDO,而不是因爲它是一個更安全,更面向對象的方法。 在DB_NAME,DB_USER_NAME和DB_USER_PASS只需填寫您的特定憑據,此代碼應爲你工作。

$database = new PDO('mysql:host=localhost;dbname=DB_NAME;charset=UTF-8', 'DB_USER_NAME', 'DB_USER_PASS'); 

$query = $database->prepare("SELECT * FROM Users WHERE `email` = ? AND `password` = ? "); 
$query->bindValue(1, $email); 
$query->bindValue(2, $encrypted_pass); 
$query->execute(); 

if($query->rowCount() > 0) { # If rows are found for query 

    $result = $query->fetch(PDO::FETCH_ASSOC); 
    echo $result[ 'LastName' ]; # <-- The LastName field you were looking for! 

} 
else { echo "No Rows Returned!"; } 

對於PHP PDO的更多信息,請參閱http://www.php.net/manual/en/book.pdo.php