-1

$_SESSION['admin']=1在登录表单验证后设置。
之后页面被重定向并检查$_SESSION['admin']值和加载内容。
它在当地工作得很好。但它不能在在线linux服务器上。任何帮助..?

管理员.php

<?php
   session_start();
   $admin = 0;
   if(isset($_SESSION['admin'])){
      $admin = $_SESSION['admin'];
   }
   if($admin == 0){
?>
<form action="" class="login">
     <label>User Name :</label>
     <input type="text" class="uname"/>
     <label>Password :</label>
     <input type="password" class="pwd"/>
     <input type="submit" class="lSubmit" value="SUBMIT"/>
     <p class="alert lAlert">test alert</p>
</form>
<?php }elseif($admin == 1){ ?>
     <h1>Welcome Site Admin..!!</h1>
<?php } ?>

jQuery

$('.lSubmit').click(function(){
    var name = $('.uname').val();
    var pwd = $('.pwd').val();
    $.post("validation/login.php",{name:name,pwd:pwd}).success(function(data){
        var obj = jQuery.parseJSON(data);
        if(obj.success == 1){
            $('.alert').css('color','#067800');
            window.location = "/admin.php";
        }else{
            $('.alert').css('color','#CC0000');
        }
        $('.lAlert').text(obj.msg);
        $('.lAlert').fadeIn('slow');
    });
    return false;
});

验证/login.php

<?php
 session_start();
 $name = $_POST['name'];
 $pwd = $_POST['pwd'];
 $err['success'] = 0;
 $err['msg'] = '';
 if($name == ''){
  $err['msg'] = 'Name required';
 }else if($pwd == ''){
  $err['msg'] = 'Password required';
 }else if($name != 'admin'){
  $err['msg'] = 'Wrong username';
 }else if($pwd != 'admin'){
      $err['msg'] = 'Wrong password';
 }else{
  $err['msg'] = 'Success';
  $err['success'] = 1;
  $_SESSION['admin'] = 1;
 }
 echo json_encode($err);
?>

当我运行它时,它已成功验证,如果用户名和密码是管理员,那么它会在警报中显示成功。但是在它被重定向并再次将表单加载到在线服务器中之后。但是在本地加载了欢迎文本。但在在线的其他页面中,会话工作正常。有谁能够帮我?

4

2 回答 2

0

添加

error_reporting(E_ALL);
ini_set('display_errors', 1);

在脚本开始时检查任何错误并回发。我的猜测是您在服务器上有一些权限问题。

于 2012-07-28T07:24:37.523 回答
0

我唯一的猜测是会话通常会使用大多数开发工具包(如 xampp)自动启动

在真实服务器上,大多数时候您必须使用 session_start() 手动启动它

于 2012-07-28T06:29:57.713 回答