Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    session_start() nell'include

    salve a tutti. Sto facendo un area riservata e sto facendo il controllo della sessione attiva dopo il login in un file include. In questo file c'è il seguente codice:

    session_start();


    /* ### REINDIRIZZA ALLA PAGINA DI ERRORE SE LA SESSIONE NON E' VALIDA */
    if ( !isset($_SESSION["AdminName"]) ) {
    //header("Location : http://" . SERVER_NAME . "/admins-php/adm_no_login.php");
    exit;
    }else{

    $strAdminName=$_SESSION["AdminName"];
    $tstAdminLoginDate=$_SESSION["AdminDate"];
    $strAdminFlags=$_SESSION["AdminFlags"];

    }


    quando vado ad effettuare il controllo mi succedono due cose una volta una ed una volta l'altra senza dipendenza l'una dall'altra e senza costanza:

    1 vengo reindirizzato alla pagina adm_no_login.php senza che le sessioni vengano attivate
    2 vengo indirizzato alla pagina adm_no_login.php con le sessioni attivate.

    In entrambi i casi mi salta la pagina adm_menu.php nella quale c'è l'include e dove dovrebbe reindirizzare il file che gestisce la creazione delle sessioni.

    Le sessioni vengono create nel file che riceve i dati del form login (ho fatto la prova) ma poi non le trova nel file adm_menu.php come se mancasse un session_start()!!!
    Ma il session_start() è nell'include!!!! quindi c'è!
    Se infatti inserisco un altro session_start() nella pagine funziona tutto ovviamente dopo aver ricevuto l'errore che c'è già un session_start()!
    La cosa + assurda poi è che un sistema simile lo uso x un'altra area riservata e funziona alla perfezione mentre qui no!
    Dove sbaglio? Mi date una mano?
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  2. #2
    Il problema è + definito allora.
    Al momento del login crea una sessione col session_start().
    Al momento del controllo ne crea una seconda che essendo vuota restituisce falso al controllo.
    Perché mi crea la seconda sessione? E soprattutto perché funziona alla perfezione nell'altro script?

    è come se ad ogni session start crea una nuova sessione!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  3. #3
    Originariamente inviato da Nunkij
    Il problema è + definito allora.
    Al momento del login crea una sessione col session_start().
    Al momento del controllo ne crea una seconda che essendo vuota restituisce falso al controllo.
    Perché mi crea la seconda sessione? E soprattutto perché funziona alla perfezione nell'altro script?

    è come se ad ogni session start crea una nuova sessione!
    Potrebbero non essere abilitati i cookies nel browser.

    Il session_start lo metterei come prima istruzione nel file cosi' pure il controllo del SESSION. Se per qualunque ragione non facesse l'include lo script continuerebbe. Al limite userei REQUIRE in modo da bloccare lo script nel caso di fallimento dell'inserimento.


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

  4. #4
    Però con un altro script funziona. Quello che non capisco è che nel secondo session_start invece di andare a cercare la variabile di sessione nella sessione pochi istanti prima creata ne crei una nuova.


    che vuol dire questo "cosi' pure il controllo del SESSION" ?
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  5. #5
    Originariamente inviato da Nunkij
    che vuol dire questo "cosi' pure il controllo del SESSION" ?
    <?
    session_start();
    if (!isset($_SESSION["AdminName"]) AND $_SESSION['AdminName != "" )
    {
    Ok allora includi
    else
    niente da fare

    Il fatto di includere o meno deve essere sottoposto a condizione prima di ogni altra premessa.... Uno script con un INCLUDE che fallisce l'inclusione, continua lo stesso. Non e' corretto dal punto di vista della sicurezza includere un file che si incarica della sicurezza.... e che in mancanza dell'inclusione lo script continui lo stesso. Non so se mi spiego...


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

  6. #6
    Non e' corretto dal punto di vista della sicurezza includere un file che si incarica della sicurezza.... e che in mancanza dell'inclusione lo script continui lo stesso. Non so se mi spiego...
    perchè? Non sono molto pratico ancora come puoi vedere.

    comunque ho risolto. Tra i due script la differenza era un session_start() nella pagina del form login. Avendolo inserito funziona tutto alla perfezione!!!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  7. #7
    Originariamente inviato da Nunkij
    perchè? Non sono molto pratico ancora come puoi vedere.
    Per la ragione che ho detto gia'. Se l'include per qualsiasi ragione non dovesse avvenire lo script continuerebbe ed avresti errori oppure cose impreviste. Un bug potenziale.


    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.