2013-04-10 160 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

相关问题