[英]Php session variables not working from page to page
我試圖將某些值保存到$ _SESSION ['']特性中,但是當我嘗試在另一個頁面中訪問它們時,這些值不會被打印。
我也嘗試將相同的值保存在$ GLOBALS數組中,但得到的結果相同。
這是我獲取值並嘗試登錄的代碼
<?php
session_start();
include '../php/func.php';
?>
<!DOCTYPE html>
<html>
<head>
<title>Inicio de sesión</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../css/styles.css">
</head>
<body>
<div class="todo">
<div class="image">
<img class="img" src="../images/logo.png" title="Equipos" alt="Equipos">
</div>
<div class="wrapper">
<div class="container form-style-6">
<article>
<center>
<div class="col-lg-12">
<h2 id="h2h">Iniciar Sesión</h2>
<form action="../php/func.php" method="POST">
<p class="campos1">Matricula:</p> <input type="text" id="tfCorreo1 " value="" name = "userName"></br>
<p class="campos1">Contraseña:</p> <input type="password" id=" tfPassword1" value="" name = "userPass"><br></br>
<input type="Submit" name="bLogin" value="Iniciar Sesion" "><br></br>
<input type="button" name="bCrear" value="Crear Cuenta" ;">
</form>
<div id="result2"></div>
</div>
</center>
</article>
</div>
</div>
</div>
</body>
</html>
這是我進行數據庫連接並嘗試使用上面發送的值登錄的后端部分,我還添加了一些功能來檢查存儲在全局變量和會話中的值
<?php
$enlace;
$SessionUser;
$SessionName;
$SessionAdmin;
if($_REQUEST['bLogin']){
$Username = $_REQUEST['userName'];
$Password = $_REQUEST['userPass'];
login($Username, $Password);
}
function SetGlobals($IdUser, $UserName, $AdminStatus){
$GLOBALS['SessionUser'] = $IdUser;
$GLOBALS['SessionName'] = $UserName;
$GLOBALS['SessionAdmin'] = "1";
}
function CheckSessionValues(){
echo "<br> Session Values:";
echo "<br> Session User: ". $_SESSION["SessionUser"];
echo "<br> Session Name: ". $_SESSION['SessionName'];
echo "<br> Session Admin: ". $_SESSION['SessionAdmin'];
}
function CheckGlobals(){
echo "<br> Globals Values: ";
echo "<br> Session User: ". $GLOBALS['SessionUser'];
echo "<br> Session Name". $GLOBALS['SessionName'] ;
echo "<br> SessionAdmin ". $GLOBALS['SessionAdmin'];
}
function IniciarConexion(){
$GLOBALS['enlace'] = mysqli_connect('localhost' , 'root', 'mysql');
mysqli_set_charset($GLOBALS['enlace'],'utf8');
if(!$GLOBALS['enlace']){
die('No se pudo conectar a la db' . mysql_error());
}
if (!mysqli_select_db($GLOBALS['enlace'],'novus')) {
die('No se pudo seleccionar la base de datos: ' . mysql_error());
}
}
function CerrarConexion(){
mysqli_close($GLOBALS['enlace']);
}
function login($loginUser, $loginPass){
if((strcmp($loginUser,'') == 0) || (strcmp($loginPass,'') == 0)){
$response = False;
}else{
IniciarConexion();
$QuerySQL = "SELECT * FROM user WHERE user_id = '$loginUser';";
//echo "$QuerySQL";
$transaccionSQL = mysqli_query($GLOBALS['enlace'], $QuerySQL);
if(!$transaccionSQL){
die("Hubo un problema al iniciar sesion, Intente mas tarde");
$response = False;
}else{
//echo sha1($loginPass);
$row = mysqli_fetch_object($transaccionSQL);
//$response = "$row->user_id $row->password $row->activo";
$Pass = $row->password;
//echo "Response: $response";
$Activo = $row->activo;
$Admin = $row->admin;
$User = $row->user_id;
$UserName = $row->user_name;
echo "$Pass <br>".sha1($loginPass,False);
$response = False;
if($Activo == 1){
//if($Pass == sha1($loginPass)){
if(strcmp($Pass, sha1($loginPass)) == 0){
$response = True;
//session_start();
SetGlobals($User, $UserName,$Admin);
$_SESSION["SessionUser"] = $User;
$_SESSION['SessionName'] = $UserName;
$_SESSION['SessionAdmin'] = $Admin;
}
}
}
if($response){
echo "El inicio de sesión sera: exitoso";
header("location: home.php");
}else{
$message = "Usuario o contraseña incorrecta, favor de intentar nuevamente";
echo "<script type='text/javascript'>alert('$message');</script>";
header("location: login.php");
}
CerrarConexion();
}
return $response;
}
function logout(){
session_destroy();
}
?>
最后是我要獲取數據以使用它的頁面,我使用了兩種方法來打印值以防萬一它們可以工作
<?php
session_start();
include '../php/func.php';
?>
<!DOCTYPE html>
<html>
<head>
<title>Inicio</title>
<?php
CheckGlobals();
CheckSessionValues();
?>
</head>
<body>
<h1> Recursos Educativos </h1>
</body>
</html>
所以id想知道我在做什么,我是否應該讓session_start()調用其他地方還是我通過使用location方法更改頁面來丟失某些東西,但是在打印值時我只是空白
您必須使用session_start(); 在所有頁面中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.