注销问题(PHP)
我不是PHP方面的专家,我所知道的一切都来自TUT。无论如何,我试着自己尽我所能,但现在我有一个问题,找不到是什么导致了这个问题 我用电脑做了一个博客。本教程很棒,很容易理解,但唯一的问题是他们没有解释如何制作控制面板/管理系统。所以,我自己做了一个!我用图标创建了一个简单的php/html5文件,用于博客中的功能:“添加新博客条目”、“编辑现有博客条目”、“添加/管理类别”和“注销”。对于我使用的登录机制。除了一件事外,一切正常: 登录控制面板并按下其中一个功能(比如“添加新博客条目”),然后按下“返回控制面板”按钮后,系统将自动注销并强制您再次登录 有人能解释为什么吗?下面是我的控制面板和控制面板上包含的check.php的代码(我为其他功能(如幻灯片放映、css表单和其他功能)删除了不必要的代码): 控制面板:注销问题(PHP),php,login,blogs,Php,Login,Blogs,我不是PHP方面的专家,我所知道的一切都来自TUT。无论如何,我试着自己尽我所能,但现在我有一个问题,找不到是什么导致了这个问题 我用电脑做了一个博客。本教程很棒,很容易理解,但唯一的问题是他们没有解释如何制作控制面板/管理系统。所以,我自己做了一个!我用图标创建了一个简单的php/html5文件,用于博客中的功能:“添加新博客条目”、“编辑现有博客条目”、“添加/管理类别”和“注销”。对于我使用的登录机制。除了一件事外,一切正常: 登录控制面板并按下其中一个功能(比如“添加新博客条目”),然后
<?php require('autent/check.php'); ?>
<p style="background:#48c248; line-height:30px; vertical-align:middle; color:#fff; font-weight:bold;">If you can see this, you're logged in</p>
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title></title>
<!-- Rich text editor -->
<script src="ckeditor/ckeditor.js"></script>
</head>
<body>
<div class="row">
<div class="twelve columns">
<h4>Useful links</h4>
<h5>Archive</h5>
<p>
<?php
mysql_connect ('localhost', 'dbuser', 'dbpass') ;
mysql_select_db ('tablename');
$result = mysql_query("SELECT FROM_UNIXTIME(timestamp, '%Y') AS get_year, COUNT(*) AS entries FROM php_blog GROUP BY get_year");
while ($row = mysql_fetch_array($result)) {
$get_year = $row['get_year'];
$entries = $row['entries'];
echo "<a href=\"archive.php?year=" . $get_year . "\">Entries from " . $get_year . "</a> (" . $entries . ")<br />";
}
?>
</p>
<h5>Category Archive</h5>
<p>
<?php
mysql_connect ('localhost', 'dbuser', 'dbpass') ;
mysql_select_db ('tablename');
$result1 = mysql_query("SELECT * FROM php_blog_categories ORDER BY category_name ASC");
while($row = mysql_fetch_array($result1)) {
$result2 = mysql_query("SELECT COUNT(`id`) AS entries FROM php_blog WHERE category = $row[category_id]");
$num_entries = mysql_fetch_array($result2);
echo '<a href="kat_arkiv.php?category=' . $row['category_id'] . '">' . $row['category_name'] . '</a> (' . $num_entries['entries'] . ')<br />';
}
?>
</p>
</div>
<h4>Control panel - Manage your blog</h4>
<a href="skapa.php"><img src="../images/new_blog.png" title="Add a new blog entry" alt="Add a new blog entry"/></a><br>
<p><a href="skapa.php" title="Add a new blog entry">Add a new blog entry</a></p>
</div>
<div class="four columns">
<a href="update_list.php"><img src="../images/edit_blog.png" title="Edit a blog entry" alt="Edit a blog entry"/></a><br>
<p><a href="update_list.php" title="Edit a blog entry">Edit an existing blog entry</a></p>
</div>
<div class="four columns">
<a href="kategorier.php"><img src="../images/cat_blog.png" title="Add/manage categories" alt="Add/manage categories"/></a><br>
<p><a href="kategorier.php" title="Add/manage categories">Add/manage categories</a></p>
</div>
<div class="four columns">
<p> </p>
</div>
</div>
<div class="four columns">
<a href="logout.php"><img src="../images/logout.png" title="End your session" alt="End your session"/></a><br>
<p><a href="logout.php" title="End your session">End your session</a></p>
</div>
<!-- other html and footer follows -->
</body>
</html>
如果您可以看到此信息,则您已登录
有用的链接
档案文件
分类汇整
控制面板-管理您的博客
check.php
<?php
session_start();
if (!isset($_SESSION['loggedin'])) {
header("Location: login.php");
exit;
} else {
// the session variable exists, let's check it's valid:
require('autent/config.php');
$userexists = false;
foreach($users as $username => $password) {
if (md5($username.$password.$salt) == $_SESSION['loggedin'])
$userexists = true;
}
if ($userexists !== true) {
exit('<p style="background:#fd0000; line-height:30px; vertical-align:middle; color:#fff; font-weight:bold;">Invalid session: please <a href="login.php">login</a>.</p>');
}
}
?>
可能是由于会话超时问题。请尝试通过引用以下url来增加会话时间
会话变量存储在服务器上,而不是像cookie一样存储在用户计算机上。因此,用户永远无法修改$\u会话变量。在会话中创建一个布尔变量非常有用,该变量可用作快速标志,告诉您用户是否仍在登录
为用户创建会话时,可以创建如下会话变量:
$_SESSION['valid'] = TRUE;
从现在开始,您只需检查会话是否仍设置为true:
session_start();
if (!$_SESSION['valid']) {
header("Location: login.php");
exit;
}
该代码检查会话是否为非真,如果不是,则将其发送到login.php
当您注销它们时,您可以取消设置会话变量或将其设置为false。您可以添加autent/config.php
文件吗?我可以添加C.Malet,但该文件只是与数据库的连接文件……创建和销毁会话的部分可能很有趣。我没有看到任何,所以我猜它是在config.php中完成的,当你说它注销用户时,它是将你发送到login.php,还是它给出了消息“无效会话…”好问题!它将我发送到login.php,没有“Invalid session”消息,或者其他任何消息……不要这样认为,因为如果我只按浏览器上的后退键,即使刷新页面,我也不会注销。这意味着我的会议不是这里的问题,而是其他的问题。。。不过还是要谢谢你!