Voo het testen van enkele instelling heb ik een script gemaakt dat een aantal globale variabelen in $_SESSION plaatst
if ( ! session_id() ) @ session_start();
//$datum = date("d-m-Y H:i");
$_SESSION = array("first_name"=>"John",
                "family_name"=>"Doe",
                "user_rank"=>"ADMIN",
                "user_logged" => TRUE,
                "language"=>substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2),
                "ip-adres"=>$_SERVER['REMOTE_ADDR'],
                "SESSIONID"=>session_id(),
                "client-UNIX" => $timenow,
                "time-zone" => $datum
                );

Om gebruikers van niet toegankelijke pagina's door te sturen plaats ik boven aan die pagina's deze code
  if(!(! isset($_SESSION["user_logged"]) && $_SESSION["user_logged"] == FALSE)) {
    header("Location: login.php");
    exit;
}
Echter wordt altijd door verwezen naar de login pagina.
Enig idee??
Ben van Velzen op 30/08/2017 20:16:57

Dit moet je ook gewoon met isset of array_key_exists controleren. in_array() kijkt naar de waarde, niet naar de key. Vul je ondertussen de variabele al op een correcte manier?
Op jouw advies aangepast naar:
    if (array_key_exists($_SESSION['language'], $_greetings)) {
        echo "this array contains ".$_SESSION['language']."<br />";
    } else {
        echo "this array NOT contains ".$_SESSION['language']."<br />";
             $_SESSION['language'] = 'en';
    }
dit werkt prima

Goede manier om de tweede vraag af te ketsen ;-)

Reageren