我正在尝试创建管理员登录页面。 LOGIN PAGE
登录后一切正常。但是当我尝试进入另一个页面或刷新当前登录页面时,会话将自行重置。
以下是您自己测试的用户:
用户名 - >测试
密码 - >测试
EDIT !!! { 会话在core.inc.php} !!!
中启动以下是我的core.inc.php
代码:
session_start;
function admin() {
if ( isset($_SESSION['id']) && !empty($_SESSION['id']) ){
return true;
}
}
这是admin.php
:(注意:admin.php包含core.inc.php)
if (isset($_POST["username"]) && isset ($_POST["password"]))
{
$username = $_POST["username"];
$password = $_POST["password"];
$query = "SELECT `id` FROM `admins` WHERE `username`='".mysql_real_escape_string($username)."' AND `password`='".mysql_real_escape_string($password)."'";
if ($query_run = mysql_query($query))
{
$query_num_rows = mysql_num_rows($query_run);
if ($query_num_rows == 0)
{
echo "<br><div style=\"background-color:lightyellow;text-align:center;border-color:darkblue;font-style:italic;width:80%;border-style:dotted;\">Incorrect username or password.</div>";
}
else if ($query_num_rows == 1)
{
$user_id = mysql_result($query_run, 0, 'id');
$_SESSION['id'] = $user_id;
}
}
}
if ( admin() == true ) {
?>
<center><a href="logout.php"><input type="button" value="Log Out!" ></a></center>
<?
}
else {
?>
<form action="" method="post">
<center>
<table style="width:300px;text-align:center;line-height:30px;">
<th>LOG IN!</th>
<tr>
<td> <input type="text" name="username" placeholder="Username:" required=""> </td>
</tr>
<tr>
<td> <input type="password" name="password" placeholder="Password:" required=""> </td>
</tr>
<tr>
<td> <input type="submit" value="Login!"> </td>
</tr>
</table>
</center>
</form>
<?
}
?>
答案 0 :(得分:2)
你错过了session_start()
。 必须位于使用会话的任何页面的顶部。它也必须在任何输出之前。
<?php
session_start()
if (isset($_POST["username"]) && isset ($_POST["password"]))
{
$username = $_POST["username"];
$password = $_POST["password"];
答案 1 :(得分:1)
你的session_start
不应该是session_start()
吗?
session_start();
function admin() {
if ( isset($_SESSION['id']) && !empty($_SESSION['id']) ){
return true;
}
}
您应该enable error reporting在开发环境中进行调试,以查看详细的错误跟踪