2015-06-06 82 views
0

我有一个PHP脚本。我的许多客户都在使用它。但很少有人说,他们可以登录,但当他们点击菜单中的任何链接时,它只是重定向到index.php所有的链接重定向到index.php

我检查了我的代码,菜单链接,文件夹...我甚至检查过用户浏览器设置,防病毒,防火墙......但没有问题。

我没有得到为什么它正在发生。这里是我的会议文件,同时提交登录细节包括我这个文件

admin_auth.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"); 
} 

login_submit.php

<?php 
ob_start(); 
error_reporting(0); 
session_start(); 

include("connect.php"); 

$user=$_POST['login_name']; 
$pass=$_POST['login_password']; 


$sql="SELECT * FROM users WHERE username='".$user."' AND password='".$pass."' "; 
$query=mysqli_query($con, $sql) or die(mysqli_error()); 
$row=mysqli_fetch_array($query); 
$username=$row['username']; 
$count=mysqli_num_rows($query); 
if($count==1) 

{ 

$_SESSION['ADMIN']=$row['username']; 

$_SESSION['name'] = $row['firstname']; 
header("location:dashboard.php?user=".$_SESSION['ADMIN'].""); 
} 
else 
{ 
header("location:index.php"); 
echo "could not connect"; 
} 
?> 

有什么问题吗? 。如果没有,为什么他们不能打开任何链接。

+0

没有看到防火墙或杀毒软件,只看到锚标记是如何构造的。 –

+0

@Sulthan Allaudeen,我没有得到。对不起 – user2178637

+0

究竟是什么“$ _SESSION ['name'] = $ _SESSION ['name'];”在做什么? – kojow7

回答

1

根据你的代码,你描述的那些少数用户的症状,它看起来像那几个用户已经不允许饼干。所以当一个不允许cookies的用户在验证后会发出后续请求时,他们不会发送PHPSESSID cookie(在这里你可以看到一个例子)PHPSESSID

所以,你的代码会发生什么,服务器会看到isset ($ _SESSION [“ADMIN”])是集,并会将其下降到你的代码,这将它们发送回index.php文件的底部。

您可以通过在浏览器中的cookies不允许测试这个。解决这个问题的一种方法(除了告诉你的用户启用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预处理器将不知道将它的代码添加到那里的链接。

+0

非常感谢你。它为我工作。我一直在试图解决这个问题,最近3天。万分感谢。 – user2178637

相关问题