2016-07-07 6 views
0

Ich habe eine PHP-Seite fbridge.php, die einen Sitzungswert setztSession Wertänderungen in PHP

<?php 
    $_SESSION['type']="EMP"; 

?> 
<script type="text/javascript"> 

    window.location="index.php"; 

    </script> 

Die Seite dann index.php umleitet, die den folgenden Code

<? 
    echo "1=".$_SESSION['type']; 
    session_start(); 
    if($_SESSION['sessions_id']!=session_id()) 
    { 
     header('Location: login.php'); 
    exit; 
    } 
    echo "2=".$_SESSION['type']; 
?> 

Das hat Problem ist 1 = ist immer leer und 2 = Immer einen Wert drucken, der nicht EMP ist.

Nicht sicher, was das Problem ist.

<?php 
     session_start(); 
     $_SESSION['type']="EMP"; 
     header("Location:index.php"); //This is better than javascript ? 
    ?> 

ZWEITE:

+0

ein Wert? was ist der Wert? –

+0

@FastSnail Wert = MNR, die in einer anderen Seite – user580950

+0

@ JoseManuelAbarcaRodríguez soll ich session_start aus index.php entfernen? – user580950

Antwort

2

Die session_start() sollte vor dem Zugriff auf oder Änderung Sitzungsvariablen

FIRST genannt werden

<? 
    session_start(); 
    echo "1=".$_SESSION['type']; 
    if($_SESSION['sessions_id']!=session_id()) 
    { 
     header('Location: login.php'); 
     die("Browser doesn't support redirect"): 
    } 
    echo "2=".$_SESSION['type']; 
?> 
+0

groß, session_start(); in fbridge.php gearbeitet :) – user580950

+0

Nun, das ist etwas, das Google weiß :) aber trotzdem gerne helfen :) –

1

Ja session_start() ist immer vor wie von Skript starten Sie greifen auf Sitzungen zu. Weil in HTTP-Anträgen Sitzungswerte innerhalb des Headers und nicht auf der Seite gesendet werden. session_start() teilt mit, dass auf die Sitzungsvariablen zugegriffen werden soll, da HTTP ein zustandsloses Protokoll ist.