我有一个PHP脚本。我的很多客户都在使用它。但是他们说很少,他们能够登录,但是当他们点击菜单中的任何链接时,它只会重定向到index.php
我已经检查了我的代码,菜单链接,文件夹...我甚至检查过用户浏览器设置,防病毒,防火墙......但没问题。
我不知道为什么会发生这种情况。这是我的会话文件,同时提交登录详细信息我包含此文件
admin_auth.php
pahole
login_submit.php
session_start();
if(isset($_SESSION['ADMIN']))
{
$_SESSION['name'] = $_SESSION['ADMIN'];
try {
$bdd = new PDO('mysql:host=localhost;dbname=nerp', 'root', '');
} catch(Exception $e) {
exit('Unable to connect to database.');
}
$m1 = "select * from users where username='".$_SESSION['ADMIN']."'";
$resultat = $bdd->query($m1) or die(print_r($bdd->errorInfo()));
//$m2 = mysql_query($m1) or die (mysql_error());
//$m3 = mysql_fetch_array($resultat);
$m3 = $resultat->fetch(PDO::FETCH_ASSOC);
$_SESSION['uid'] = $m3['id'];
$_SESSION['name'] = $m3['firstname'] ." ". $m3['lastname'];
$_SESSION['pos']= $m3['position'];
$_SESSION['department'] =$m3['department'];
$_SESSION['location'] =$m3['location'];
$_SESSION['password'] =$m3['password'];
$_SESSION['auth'] = md5( date('Ymd') . $_SESSION['password'] );
$_SESSION['email'] = $m3['email'];
}
else
if(!isset($_SESSION['ADMIN']) )
{
header("location:index.php");
}
这有什么问题吗? 。如果没有,为什么他们无法打开任何链接。
答案 0 :(得分:1)
根据您的代码以及您描述的少数用户的症状,看起来很少有用户禁止使用Cookie。因此,当禁止使用cookie的用户在进行身份验证后进行后续请求时,他们不会发送PHPSESSID cookie(此处您可以看到示例)
所以,代码中发生的情况是,服务器看到isset($ _ SESSION [' ADMIN'])不设置,并将它们放到你的底部代码,将它们发送回index.php。
您可以通过在浏览器中禁用Cookie来测试此问题。修复它的方法(除告诉用户启用cookie之外)是将某种ID附加到URL并在用户通过站点移动时维护ID。如果您设置:
,PHP可以为您执行此操作<?php
ini_set("session.use_cookies",1);
ini_set("session.use_only_cookies",0);
ini_set("session.use_trans_sid",1);
session_start();
?>
虽然我应该提到这适用于常规的html链接。它由PHP预处理器将其代码添加到您的链接。由于您提到了一个菜单,如果您的菜单链接是由javascript生成的,那么PHP预处理器不会知道将其代码添加到那里的链接。