Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    42

    problema sessioni - cookies

    Dunque ho una pagina nella quale effettuo un login tramite una password spedita via $_POST a questa pagina:

    Codice PHP:
    <?php
     session_start
    ();
    $_SESSION['autorizzato'] = FALSE;

    if(
    login($_POST['password']))
    {
        
    $_SESSION['autorizzato'] = TRUE;
        
    redirect('edit.php',3);
    }
    else
        
    redirect('login.php',3);
    ?>
    premetto che login() è una mia funzione che controlla la password inserita in un database e restituisce TRUE o FALSE a seconda se la pass è sbagliata oppure no.
    invece redirect() come si può immaginare fa un redirect

    nel caso in cui la password sia corretta verrò indirizzato nella pagina edit.php dove c'è questo codice:
    Codice PHP:
    <?php
        session_start
    ();
        if(!
    $_SESSION['autorizzato'])
        {
            
    redirect('login.php',3);
            exit();
        }
    ?>
    <html ......
    In poche parole dovrebbe ricontrollare tra le variabili di sessione, se l'utente è autorizzato o meno ad accedere alla pagina.

    E qui viene il dramma, inizialmente stavo testando il sito con Chrome e andava tutto alla perfezione, poi provo con Firefox e Explorer e ho notato che da questi browser la pagina edit.php mi rifiutava rispedendomi su login.php
    Analizzando i dati sul server ftp ho notato che c'erano tanti file di sessione pendenti nella cartella phptemp.
    Da questo ho capito che ogni volta che eseguo un session_start() i cookies non vengono utilizzati e di conseguenza viene aperta una nuova sessione al posto di ripristinare quella già aperta nella pagina precedente.
    Controllo i cookies dei vari browser e per prova ho cancellato i cookies che avevo su chrome.
    Ora non mi funziona nemmeno da chrome
    Non riesco a capire il motivo, i cookies li ho attivi in tutti i browser e lo script funzionava fino a qualche ora fa.

    Inoltre ho visto che passandomi la session_id via $_GET e dichiarando l'ID di sessione ogni volta che uso session_start(), il tutto funziona egregiamente.
    Ma so che è altamente sconsigliato usare questo modo e inoltre mi creerebbe altri problemi che non vi sto a dire....

    Per piacere aiutatemi, grazie ciao!

  2. #2
    Con quale web server stai lavorando?

    Posta il codice della funzione redirect.

    Leggi anche questo articolo:

    Effettuare un redirect con header location e propagare le sessioni

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    42
    Il mio webserver è misterdomain.eu
    La funzione redirect è questa
    Codice PHP:
    function redirect($url,$tempo FALSE )
    {
        if(!
    headers_sent() && $tempo == FALSE )
        {
            
    header('Location:' $url);
        }
        elseif(!
    headers_sent() && $tempo != FALSE )
        {
            
    header('Refresh:' $tempo ';' $url);
        }
        else
        {
            if(
    $tempo == FALSE )
                
    $tempo 0;
            echo 
    "<meta http-equiv=\"refresh\" content=\"" $tempo ";url=" $url "\">";
        }

    Ringrazio per il link... anche se sinceramente non ci ho capito un fico secco

  4. #4
    Originariamente inviato da enollen
    Il mio webserver è #######
    Quello è un dominio/provider, ma quale web server utilizzi (Apache, IIS, etc.)?

    Originariamente inviato da enollen
    Ringrazio per il link... anche se sinceramente non ci ho capito un fico secco
    Allora forse è meglio se lo rileggi con calma, perchè è probabile che descriva la soluzione al tuo problema.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    42
    credo che sia apache,
    comunque ho riletto con calma la funzione...
    ma in poche parole va a stampare il session_name e il session_id nella url... passandole come variabili $_GET . Una cosa del genere come ho detto sopra l'ho provata e funziona, ma comunque non vengono utilizzati i cookies... quindi non risolve il mio problema

    abbi pazienza, ce la sto mettendo tutta

  6. #6
    Il tuo problema è la mancanza di propagazione delle sessioni causata dall'header location.

    Il codice indicato risolve il problema ed assicura inoltre che eventuali modifiche alla sessione vengano effettivamente salvate prima di eseguire il redirect.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    42
    Certo che lo risolve! Ma ripeto che stampa in bella vista il nome e l'id della sessione in bella vista nell'url!

  8. #8
    Originariamente inviato da enollen
    Certo che lo risolve!
    Mi sembrava avessi scritto non risolve il mio problema ...

    Originariamente inviato da enollen
    Ma ripeto che stampa in bella vista il nome e l'id della sessione in bella vista nell'url!
    Certo che lo fa, visto che è l'unico modo per garantire la propagazione del SID in tutte le configurazioni e nel caso in cui avvenga un header location.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    42
    capisco, mi sembra strano allora che inizialmente mi funzionava..... senza passare alcunché via url

    Inoltre guardando sul web molti non menzionano neanche questo tipo di problema....
    per esempio io ho seguito una piccolissima guida scritta in questa pagina:
    http://www.baglieri.it/index.php?mod...age&PAGE_id=46

    dove usa 2 semplicissimi script:
    session.php
    Codice PHP:
    <?
    session_start
    ();
    $_SESSION['username']= "Davide";
    $_SESSION['autorizzato'] = 1;

    $anni "26";
    echo 
    "<a href=\"session1.php?anni=$anni\">Clicca Qui!</a>";
    ?>

    session1.php
    Codice PHP:
    <?
    session_start
    ();

    if (
    $_SESSION['autorizzato'] != 1){
    echo 
    "Non sei autorizzato a visualizzare la pagina";
    exit();
    }

    echo 
    "Ciao " $_SESSION['username'] . "!!!
    "
    ;
    echo 
    "Dovresti avere la bellezza di " $_REQUEST['anni'] . "!!!";
    ?>
    Da questo esempio si vede che lui recupera la sessione precedente senza dover passare alcun tipo di ID o nome della sessione.

  10. #10
    Originariamente inviato da enollen
    Da questo esempio si vede che lui recupera la sessione precedente senza dover passare alcun tipo di ID o nome della sessione.
    Certo ... è ovvio ... ora indicami in quell'esempio dove viene usato l'header location ...

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.