[PHP] Check Sessioni con Array

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

[PHP] Check Sessioni con Array

Messaggio da treled »

Salve, ho un problema con l'array con le sessioni.
In poche parole ho questo array :

Codice: Seleziona tutto

<?php
$USERS = array(
    'user' => array(
        'treled' => array(
            'username' => 'treled',
            'password' => 'prova',
        ),
    )
);
?>
e il check per le aree riservate che poi e solo una pagina sola.. non riesco a capire perché non va.
il codice e cosi:

Codice: Seleziona tutto

<?php
function check_logged(){ 
     global $_SESSION, $USERS; 
     if (!array_key_exists($_SESSION["logged"],$USERS)) { 
          header("Location: login.php"); 
     }; 
}; 
?>
i login lo faccio cosi:

Codice: Seleziona tutto

	<?php 
if (isset($_POST['submit'])) 
{ 
 if(empty($_POST["username"]))
 {
  $message = "Non inserito utente";
 }elseif(empty($_POST["password"]))
 {
   $message= "Non inserito la password";
 }else
 {
   if(array_key_exists( $_POST['username'], $USERS['user']) && $_POST['username'] === $USERS['user'][$_POST['username']]['username'] &&$_POST['password'] === $USERS['user'][$_POST['username']]['password'] )
   {
		session_start();
        $_SESSION['username']=$_POST['username']; 
		$_SESSION['logged']=true; 
        header("location: prova.php");
  }
           else { $message= "Login errato";} 
   
  }
}    
?>
come mai?

avete idea perché non funziona a modo?

grazie e buona serata.
Avatar utente
vbextreme
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1214
Iscrizione: domenica 12 gennaio 2014, 14:06
Desktop: lxde
Distribuzione: xubuntu 14.10

Re: [PHP] Check Sessioni con Array

Messaggio da vbextreme »

ma la sessione va fatta partire subito all'inizio di ogni pagina php.
Quindi metti session_start() all'inizio di ogni pagina prima di fare qualsiasi altra cosa.
Penso che ti sia complicato troppo la vita con quell'array di array di array....

Codice: Seleziona tutto

<?php
    session_start();

    if ( isset($_POST['submit']) && isset($_POST['username']) && isset($_POST['password']) ) //se ho i parametri che servono
    {
         if (    isset($_SESSION[ $_POST['username'] ]) && $_SESSION[ $_POST['username'] ] == $_POST['password'] )
             $_SESSION['LOG'] = 1;
        else
            $_SESSION['LOG] = 0;
     }
    else
        $_SESSION['LOG'] = 0;
?>
quello potrebbe essere un classico esempio di pagina 'controllologin.php'
naturalmente prima dovrai richiamare una pagina che crei gli utenti tipo:

Codice: Seleziona tutto

<?php
    session_start();

    if ( !isset($_POST['LOG']) ) //questo parametro non sarà presente solo la prima volta
    {
         $_SESSION[ 'vbextreme' ] = 'miapassword';
    }
?>
ecco magari la pagina 'init.php'
Tutti i vari controlli su campi vuoti o quantaltro sarebbero meglio lasciarli fare al client.
Easy framework per il linguaggio C.
vbextreme hack your life
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP] Check Sessioni con Array

Messaggio da Zoff »

Aldilà di quello ci sono 2 problemi di fondo:
1) In $_SESSION['logged'] c'è un booleano, quindi non c'entra nulla con le chiavi in cui stai cercanco con array_key_exists
2) Le variabili globali sono da evitare come la peste ed indice di pessima programmazione. Anche i programmatori procedurali NON le usano o, se proprio devono, le riducono al minimo indispensabile.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Bing [Bot] e 2 ospiti