2013-04-10 215 views
0

我正在嘗試瞭解如何在登錄後如何在PHP中回顯當前用戶。我知道這很簡單,但我無法弄清楚。當我做<?php echo $_SESSION['usersignedin']; ?>時,我得到「用戶名」。在此先感謝您的幫助。獲取當前登錄用戶PHP

這是我正在使用的。

的index.php(在登錄頁面)

<?php 

require_once('include.php'); 

$error = ''; 

$form = (isset( $_POST['submit']) ? $_POST['submit'] : null); 

$username = (isset( $_POST['username']) ? $_POST['username'] : null); 

$password = (isset( $_POST['password']) ? $_POST['password'] : null); 

if(isset($form)) { 

if(isset($username) && isset($password) && $username !== '' && $password !== '') { 


$sql = mysql_query("SELECT * FROM `members` WHERE username='$username' and 
password='$password';"); 

if(mysql_num_rows($sql) != 0) { //success 

$_SESSION['logged-in'] = true; 

header('Location: signedin.php'); 

exit; 

} else { $error = "Invalid Username or Password"; } 

} else { $error = 'Username and Password not filled out';} 

} 


?> 

<html> 
<head> 
    <title>Sign In</title> 




</head> 
<body> 



<center><h1>Please sign in.</h1></center> 
<div id="pagewrapper"> <!-- Start pagewrapper div --> 


<div id="login_wrapper"> 
    <div id="login"> 

     <form action="<?php $PHP_SELF; ?>" method="post" > 

      <table> 

      <tr> 
      <td>Username:</td> 
      <td><input type="text" name="username" value="<?php echo "$username";?>" /><br /></td> 
      </tr> 

      <tr> 
      <td>Password:</td> 
      <td><input type="password" name="password" /><br /></td> 
      </tr> 
      </table> 
      <br> 
      <td> 
      <input name="submit" type="submit" value="Login" /> 
      </td> 
<?php 

echo "<br /><span style=\"color:red\">$error</span>"; 

?> 

     </form> 

    </div>  
</div> <!-- End login wrapper --> 


</div> <!-- End pagewrapper div --> 

</body> 
</html> 

signedin.php(頁面登錄後)

<?php 

require_once('include.php'); 


if (!isset($_SESSION['logged-in']) || $_SESSION['logged-in'] !== true) { 

header('Location: index.php'); 

exit; 

} 

$sql = mysql_query("SELECT * FROM `members` WHERE username='$username' and 
password='$password';"); 

?> 
<html> 
<head> 
    <title>Sign in</title> 

</head> 


<link rel="stylesheet" type="text/css" href="style.css"> 


<body> 

<body class="home"> 

    <div id="header"> 

     <div id="welcome"> 

     <p>Hi, <?php echo $_SESSION['usersignedin']; ?> ! <a href="logout.php">logout</a></p> 

     </div> 


     <div id="links"> 

<ul> 

</ul> 


     </div> 
</div> 

     <div id="content"> 
&nbsp; 


<div id= "stuff"> 


<h3 class="stuffheader">Header</h3> 

<p> Text </p> 



      </div> 




      <div id= "stuff"> 


<h3 class="stuffheader">Header</h3> 


      </div> 




</div> 




</body> 
</html> 

include.php(DB東西)

<?php 

session_start(); 

$host = "localhost"; 

$username = "root"; 

$password = "root"; 

$db = "intranet"; 


@mysql_connect($host,$username,$password) or die ("error"); 

@mysql_select_db($db) or die("error"); 


?> 
+0

考慮使用MVC框架 – dynamic 2013-04-10 00:54:07

+0

你在哪裏設置'$ _SESSION [ 'usersignedin'];'? – 2013-04-10 00:58:57

+0

正如@relentless所說,你永遠不會分配'$ _SESSION ['usersignedin']'用戶名的值。類似'$ _SESSION ['usersignedin'] = $ username;'。 – 2013-04-10 01:14:18

回答

1

翻遍代碼,它似乎並沒有真正設置$_SESSION['usersignedin'];(我不知道它是如何得到'用戶名'的值)。要設置它,你可以修改如下:

if(mysql_num_rows($sql) != 0) { //success 
    $_SESSION['logged-in'] = true; 
    header('Location: signedin.php'); 
    exit; 
} else { 
    $error = "Invalid Username or Password"; 
} 

要這樣:

if(mysql_num_rows($sql) != 0) { //success 
    $ui = mysql_fetch_object($sql); 
    $_SESSION['logged-in'] = true; 
    $_SESSION['usersignedin'] = $ui->username; 
    header('Location: signedin.php'); 
    exit; 
} else { 
    $error = "Invalid Username or Password"; 
} 
+0

謝謝你的幫助!完美的作品。我不確定爲什麼人們將此標記爲過於具體,並且不太可能幫助其他人。我在問如何回顯登錄的用戶名,用戶名。 – user1985278 2013-04-11 00:07:29