使用会话来调用存储在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登录时从数据库中回忆一些东西?
我想在下一页显示“你好,名字”之类的内容。感谢帮助。
编辑:我根据反馈编辑了我的代码,它产生了空白;比如'你好',没有名字。
答案 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>