PHP - 使用会话调用存储在数据库中的信息

时间:2014-10-28 01:34:23

标签: php session

使用会话来调用存储在mySQL数据库中的数据时,我遇到了问题。这是我的代码:

登录页面很简单,输入您的用户名和密码类型(我知道密码仍然是纯文本,我打算稍后更改)。

<?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登录时从数据库中回忆一些东西?

我想在下一页显示“你好,名字”之类的内容。感谢帮助。

编辑:我根据反馈编辑了我的代码,它产生了空白;比如'你好',没有名字。

1 个答案:

答案 0 :(得分: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>