Visualizzazione dei risultati da 1 a 4 su 4

Discussione: dubbio sessioni php

  1. #1

    dubbio sessioni php

    Ho un dubbio sull'uso delle sessioni: guardiamolo nel dettaglio
    Codice PHP:

    //nel head
    if(!session_id())// se non è stata inizializzata la sessione
    {
      
    session_start(); //la faccio partire
      
    session_name("Anonymous");
      
    session_register("user");
      
    $_SESSION['user']="Anonymous";
    }
    //nella pagina login.php

    case "login":
         
    //da fare controllo se già loggato alla fine
         
    if(!isset($user))  // dichiarazione
            
    $user=$pass="";
         if(!isset(
    $_POST["do"]))
            
    $_POST["do"]=" ";
            
         if(
    $_POST["do"]=="inserisci"// ho i dati?
         
    {
            
    $user=$_POST["user"];
            
    $pass=$_POST["password"];
           
            
    $pass=md5($pass);
            
            
    $sql="SELECT `id` , `username`"
            
    ."FROM `utente`"
            
    ."WHERE username = '$user'"
            
    ."AND PASSWORD = '$pass'";
            
            
    $res=mysql_query($sql,$db); // ho ricercato
            
    $pass=""// elimino la pass per ragioni di sicurezza
            
    if(!$dato=mysql_fetch_array($res))
              echo(
    "non ti ho trovato");
            else
            {
              echo(
    "ti ho trovato");
              
    session_name($dato["username"]);
              echo(
    $dato["username"]);
              
    $_SESSION['user']=$dato["username"];
            }

         }
         
    /* i due form di inserimento
    */ 
    domanda: facendo delle stampe di prova il dato $_SESSION['user'] dopo il login è corretto.. però nel ricaricamento della pagina viene rifatta l'inizializzazione della sessione con anonymous... ma perchè?

  2. #2
    La funzione http://www.php.net/session_name deve essere chiamata prima di http://www.php.net/session_start
    Non utilizzare contemporaneamente http://www.php.net/session_register e $_SESSION. E' meglio se utilizzi solo $_SESSION.
    Non utilizzare http://www.php.net/register_globals

  3. #3
    è tutta colpa del primo if(!session_id())
    esiste una funzione che mi dica se la sessione in precedenza era già stata inizializzata? o mi devo basare su un arcano diverso magari non troppo bello ma efficace?

    edit2:
    Codice PHP:
    session_start();

    if(!isset(
    $_SESSION['user']))
       
    $_SESSION['user']="Anonymous";//la prima volta

    $nome=$_SESSION['user'];//per la stampa dopo 
    a rigor di logica SOLO se non è settata la variabile user dovrebbe impostarmi anonymous.
    in questo modo invece tutte le volte che faccio login correttamente o no mi setta sempre anonymous.
    Ho provato a rimuovere l'if incriminato.. e il salvataggio del nome avviene correttamente. suggerimenti?

  4. #4
    non si capisce piu' se parli del primo if del primo post oppure della if del secondo.....

    primo post:
    se cerchi il session_id prima di aprire la sessione la if trovera' sempre un false e quindi inizializza $_SESSION['user'] con 'anonymous' tutte le volte ....


    va bene invece la seconda if, anche se userei !empty invece di isset. Potrebbe essere settato ma vuoto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.