簡體   English   中英

PHP會話變量在頁面之間不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM