【发布时间】:2015-09-16 08:18:19
【问题描述】:
我在使用 https 协议登录网站管理时遇到问题。如果我登录,它会写我的错误消息“你不被允许。返回登录页面”。应该是哪里出了问题?它在 http 协议上运行良好 :-( 感谢您的帮助!
带有登录名的index.php
<?php
include_once "../inc/connection.php";
if(isset($_POST['go'])){
$usr = mysqli_real_escape_string($conn, htmlentities($_POST['u_name']));
$psw = SHA1($_POST['u_pass']) ; //using SHA1() to encrypt passwords
$q = "SELECT * FROM users WHERE username='$usr' AND password='$psw'";
$res = mysqli_query($conn, $q);
if(mysqli_num_rows($res) == 1){
session_start();
$_SESSION['log'] = 'in';
header('location:photos.php');
} else {
$error = 'Wrong details. Please try again';
}
}
?>
和photos.php
<?php
session_start();
if( !isset($_SESSION['log']) || ($_SESSION['log'] != 'in') ){
echo "You are not allowed. <a href='index.php'>back to login page</a>";
exit();
}
if(isset($_GET['log']) && ($_GET['log']=='out')){
session_destroy();
header('location:index.php');
}
?>
【问题讨论】:
-
会话总是从文件顶部开始。在文件的第一行写 session_start()
-
你的意思是在 index.php 中?
-
是的。你应该在索引文件的顶部写 session_start() 。永远记得从顶部开始
-
@urfusion 在哪里找到
session_start()方法并不重要。您应该考虑的唯一一件事是在调用该方法之前没有任何输出。 -
@user3216673 您的登录系统不安全!您应该始终检查登录用户是否是数据库中的有效用户。您必须在会话中保留用户名和加密密码。