2014-10-01 106 views
-3

我知道在SO中有這麼多的問題。但是,我所擁有的代碼與此有點不同。在索引頁面顯示用戶名

我所擁有的是登錄頁面,我必須首先登錄才能進入索引頁面。

首先,我想說,我從某人那裏得到的這段代碼在幾天前沒有工作。但是,當我今天再次檢查它時,現在令人難以置信。

所以,今天我有兩個問題在這裏,具體如下:


  1. 我要顯示在索引頁的用戶信息。其實我只想顯示用戶名。但是,由於數據庫表中沒有用戶名行,因此如果它只能顯示用戶電子郵件,我會接受它。

  • 我想在這裏也有專家審查我的代碼。正如我上面提到的,前幾天的代碼不起作用。今天,它沒有我改變的單一事物。

  • 這裏最重要的問題是,問題數之一,是向用戶展示信息。

    這裏是我的代碼:

    1的index.php

    <?php 
    include('UserSessionAdmin.php'); 
    ?> 
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>DASHBOARD</title> 
    <link rel="stylesheet" type="text/css" href="css.css"/> 
    
    
    </head> 
    
    <body> 
    <?php echo "$myemail";?> 
    

    2. UserSessionAdmin.php

    <?php 
    session_start(); 
    
    if ($_SESSION['login_id'] == 0 || $_SESSION['login_id'] == '') { 
        header('location: login.html'); 
        exit(); 
    } 
    
    require_once('configPDO.php'); 
    ?> 
    

    3的login.html

       <div id="login-form"> 
           <form method="post" action="CheckLogin.php"> 
            <span class="identity">E-mail</span> 
             <input type="text" id="myemail" name="myemail" class="text" /> 
            <span class="identity">Password</span> 
             <input type="text" id="mypassword" name="mypassword" class="text" /> 
            <p id="button"> 
             <input type="submit"/></p> 
           </form> 
          </div> 
    

    4. CheckLogin.php

    <?php 
    // Start Session because we will save some values to session varaible. 
    session_start(); 
    
        include("configPDO.php"); 
    
        $myemail=$_POST['myemail']; 
        $mypassword=$_POST['mypassword']; 
    
        $STM = $dbh->prepare("SELECT * FROM user WHERE myemail = :myemail AND mypassword = :mypassword"); 
    
        $STM->bindParam(':myemail', $myemail); 
        $STM->bindParam(':mypassword', $mypassword); 
    
        $STM->execute(); 
    
        $count = $STM->rowCount(); 
    
        $row = $STM -> fetch(); 
    
        if($count==1) 
    
        { 
        $_SESSION['login_id']=$row['id']; 
    
        if($_SESSION['login_id'] == 1) { 
         header("location:index.php"); 
        } 
        else { 
         header("location:login3.html"); 
        } 
    
    } 
    
    else 
    { 
    header("location:login4.html"); 
    } 
    
    $dbh = null; 
    ?> 
    


    謝謝你的幫助。歡呼和問候,

    +0

    你的index.php使用不是甚至定義的變量。你必須在你的會話中設置用戶信息,以在你的index.php中顯示它們。你在非常基礎上掙扎。 – 2014-10-01 08:52:33

    +0

    @eeK這就是我想知道的。 :) – 2014-10-01 08:53:46

    +0

    您可以像設置用戶的ID一樣設置電子郵件($ _SESSION ['email'] = $ row ['email'];),其中$ row ['email']表示列名你想使用的表格。在你的index.php中,你可以輸出你的$ _SESSION ['email']。 – 2014-10-01 08:57:06

    回答

    2

    CheckLogin.php

    if ($count == 1) { 
        $_SESSION['login_id'] = $row['id']; 
        $_SESSION['username'] = $row['username']; // added 
    
        if ($_SESSION['login_id'] != '' || $_SESSION['login_id'] > 0) { // edited 
         header("location: index.php"); 
        } else { 
         header("location: login3.html"); 
        } 
    } 
    

    的index.php

    <?php 
        require_once 'UserSessionAdmin.php'; // edited 
        $username = $_SESSION['username']; // added 
    ?> 
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>DASHBOARD</title> 
        <link rel="stylesheet" type="text/css" href="css.css"/> 
    </head> 
    
    <body> 
    <?php echo $username; ?> // edited 
    
    +0

    我只記得當代碼昨天不工作時,我在表中刪除了行用戶名。現在我想再次添加用戶名的行,但是我擔心代碼不能再次工作? – 2014-10-01 09:18:09

    +0

    沒有它的好,theres用戶名列沒有問題,因爲你通過列名稱而不是索引來調用它。 – 2014-10-01 09:20:24

    +0

    謝謝,我會盡快試一試。但請你看看Mohit的回答以及我的評論...... – 2014-10-01 09:25:40

    0

    創建,您可以使用通過電子郵件,並具有用戶名的方法返回象這樣:

    function usernameFromEmail($email) { 
        $username = $db->prepare('SELECT username FROM table WHERE email = ?'); 
        $username->execute(array($email)); 
    
        return $username->fetch(); 
    } 
    

    然後,您可以調用該方法,並通過電子郵件你將擁有用戶名。

    將表格替換爲表格的名稱,包含列的真實名稱的電子郵件以及包含列的真實名稱的用戶名。

    2

    首先改變你必須做是Checklogin.php文件:

    1)CheckLogin.php:

    if($_SESSION['login_id'] == 1) { 
        $_SESSION['myemail'] = $myemail; 
        header("location:index.php"); 
    } 
    else { 
        header("location:login3.html"); 
    } 
    

    第二個變化,你必須做在index.php文件:

    2)的index.php

    <?php echo $_SESSION['myemail'];?> 
    

    但實際上CheckLogin.php文件中存在檢查login_id的問題。數據庫中的所有用戶的login_id都等於1.並且爲了什麼目的,您在數據庫表中添加了login_id字段。根據此代碼,只有那些具有login_id的用戶等於1,並且正確的用戶名&密碼才能夠登錄。否則,即使他輸入正確的用戶名和密碼將無法登錄,這在你的情況發生之前,我認爲是這樣。

    +0

    我必須改變,以便不僅有可以登錄的Id 1的用戶? – 2014-10-01 09:22:02

    +0

    您只需刪除此代碼「if($ _ SESSION ['login_id'] == 1)」,因爲您已在檢查上面的用戶名和密碼。但是,如果您將其用於任何目的,請檢查您使用此檢查或條件的目的。 – 2014-10-01 09:26:35