2014-10-28 45 views
0

我在使用会话调用存储在mySQL数据库中的数据时遇到了问题。这是我的代码:PHP - 回顾使用会话存储在数据库中的信息

登录页面很简单,输入你的用户名和密码种类(我知道密码仍然是明文,我打算稍后改变它)。

<?php 
$host="localhost"; 
$user="root"; 
$pass=""; 
$db_name="proyek"; 
$tbl_name="murid"; 
mysql_connect("$host", "$user", "$pass")or die("Cannot connect to SQL."); 
mysql_select_db('$db_name'); 
?> 

<!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></title> 
    </head> 

    <body> 
     <div id="header"> 
      LOGO 
      <h1 align="center">TITLE</h1> 
     </div> 
     <br/> 
     <div id="login"> 
      <form id="loginform" name="loginform" method="post" action="checklogin.php"> 
       <table border="0" align="center"> 
        <tr> 
         <td>NIS</td> 
         <td></td> 
         <td><input type="text" name="nislogin" id="nislogin"/></td> 
        </tr> 
        <tr> 
         <td>Password</td> 
         <td></td> 
         <td><input type="password" name="pwdlogin" id="pwdlogin"/></td> 
        </tr> 
        <tr> 
         <td colspan="3" align="center"><input type="submit" name="loginbutton" id="loginbutton" value="Login"/></td> 
        </tr> 
       </table> 
      </form> 
     </div> 
    </body> 
</html> 

,这是为登录确认页的代码:我已经进入数据库,用于测试目的的一些虚拟数据

<?php 
session_start(); 
$host="localhost"; 
$user="root"; 
$pass=""; 
$db_name="proyek"; 
$tbl_name="murid"; 
mysql_connect("$host", "$user", "$pass")or die("Cannot connect to SQL."); 
mysql_select_db('$db_name'); 

$nis=($_POST['nislogin']); 
$pwd=($_POST['pwdlogin']); 
$sql="SELECT * FROM murid WHERE nis='$nis' and password='$pwd'"; 
$result=mysql_query($sql); 
$count=mysql_num_rows($result); 
if($count==1) 
{ 
    $_SESSION['nislogin']=$nis; 
    $nama=$result['nama']; 
    $_SESSION['nama']=$nama; 
    header("location:index.php"); 
    return true; 
    exit; 
} 
else 
{ 
    echo("Wrong NIS or password."); 
    return false; 
} 
?> 

; ID,密码,名称。我怎样才能从数据库中回忆一些东西,而用户只能使用用户名/ ID登录?

我想在下一页显示'hello,name'之类的内容。帮助表示赞赏。

编辑:我编辑了基于反馈的代码,它产生空白;像'你好',没有名字。

+0

如果你想显示的名称,你最好把它添加到会话,以及这样就可以不必在未来再次查询数据库访问页。 – jeroen 2014-10-28 01:41:23

+0

like $ _SESSION ['name'] = $ result ['name']?往上看。 – 2014-10-28 01:43:30

+0

是的,如果'name'当然是你的表中的一列。 – jeroen 2014-10-28 01:44:00

回答

0

首先,由于您在登录检查页面上运行查询,因此将该值用于会话而不是发布数据。另外,无论何时重定向,都要退出脚本。

编辑:

既然你是在开发阶段,你需要显示一个错误,如果您的查询失败,所以你知道为什么。我也意识到你需要返回一个关联数组来访问该行。尝试这个。

$sql="SELECT * FROM murid WHERE nis='$nis' and password='$pwd'"; 
$result=mysql_query($sql); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
$count=mysql_num_rows($result); 
if($count==1) 
{ 
    $data=mysql_fetch_assoc($result); // since you are only accessing one row, 
    // otherwise you would put this in a loop to build your array. 

    session_start(); 
    $_SESSION['nislogin']=$data['nis']; 
    header("location:index.php"); 
    return true; 
    exit; 
} 

我也看到你的登录页面上本次会议,但我没有看到你曾经创造了它,我看不到的目的。

if(isset($_SESSION['nama'])) 
{ 
unset($_SESSION['nama']); 
} 

基本上所有你需要从这里开始的会话index.php并输出它。

的index.php

session_start(); 
if(isset($_SESSION['nislogin'])) 
{ 
$name = $_SESSION['nislogin']; 
} else { 
$name = "stranger"; 
} 

<body> 
Welcome, <?=$name?> 
</body> 
+0

感谢您的回答,我是否需要将session_start()直接放在index.php或检查登录名的页面上?因为在那个页面会话是第一次创建的。我有一个名称列的表,我需要调用,而不是将名称变量分配给一个字符串。 – 2014-10-28 01:54:44

+0

在需要使用会话的任何地方需要'session_start()'。所以首先在它创建的页面上,然后在你需要使用它的任何页面上(index.php)。 – EternalHour 2014-10-28 01:56:43