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
?>