2017-12-27 7 views
0

私はいくつかの値を$ _SESSION ['']特性に保存しようとしていますが、別のページでそれらにアクセスしようとすると値は表示されません。PHPセッション変数がページ間で動作しない

同じ値を$ GLOBALS配列に保存しようとしましたが、同じ結果が得られました。

は、ここで私は値をとるコードだし、ここで私は、DB接続を行うバックエンド部分がありますログイン

<?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(); 
} 

?> 

をチェックして、最終的にここに私は、データがそれを使用するために取得したいページがあります、私はケース内の値を印刷するには、両方の方法を使用しました10

<?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の値を印刷する際に位置特定方法が、イムだけの空白を取得してページを変更することで何かが欠けてどこかに電話またはIM)私は(にsession_startをすべきかのかどうか、イムはworngやって何を知りたいの

+0

セッションデバッグのエコーは、セミコロンではなく中間のドットであるべきですか? – Ctznkane525

+1

私はジョンが何を話しているのか見ています。彼らは終わりの代わりに連結されることを意図しているように見えます。関数CheckSessionValues。 –

+1

パスワードハッシュに 'sha1'を使うのはお勧めできません。 PHPの['password_hash()'](http://php.net/manual/en/function.password-hash.php)と['password_verify()'](http://php.net/manual/en /function.password-verify.php)。 5.5よりも低いバージョンのPHPを実行している場合は、[password_compat library](https://github.com/ircmaxell/password_compat)を使用して同じ機能を使用できます。 –

答えて

0

session_start()を使用する必要があります。すべてのページで

関連する問題