无法从浏览器识别会话



My giris.php,称为ajax并获取网址:giris_script.php。如果用户名和密码正确,则启动会话。我的代码如下:

<?php 
require "config.php";
require "Cgiris.php";
require "security.php";

$username = security($_POST["username"]);
$password = security($_POST["password"]);
$password = md5($password);
$obj = new Giris;
$result = $obj->control($username, $password);
if($result){
    @session_start();
    $_SESSION["admin"]= $username;  
}
echo json_encode($result);
?>

其他页面控制会话,但找不到任何会话:

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
if(!isset($_SERVER['HTTP_REFERER'])) header("refresh:0;url=404.php");
require "config.php";
require "Cayarlar.php"; 
$obj = new Ayarlar;
$admin = $obj->getAllInfo();
$user = $admin["username"];
if(!isset($_SESSION['admin']) || $_SESSION['admin'] != $user) header("refresh:0;url=404.php");

我将 $_SESSION["admin"] 打印到屏幕上,但没有显示任何内容。

我该如何解决它?

 session_start();

在 PHP 代码的顶部。 不要把它放在条件语句中。 换句话说,始终在执行任何其他操作之前启动会话。 您可以将其从您的(例如)中删除

if($result){
    $_SESSION["admin"]= $username;
}

因为session_start()不是页面顶部。因此,它不设置会话

$obj = new Giris;
$result = $obj->control($username, $password);
if($result){
    @session_start();// This part must be top of the page !!!
    $_SESSION["admin"]= $username;  
}

session_start应位于页面顶部例如在您的索引中.php;

<?php 
session_start();
// and you can set your session if there was not any problem you will see your session
?>

最新更新