Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Errore con le sessioni

  1. #1

    Errore con le sessioni

    Salve a tutti, sono nuovo di php e sto cercando di imparare un pò di basi tramite prove.

    Ho un problema, ho creato uno script per il login, prelevo e confronto i dati inseriti in un form e poi se il login è corretto apro una sessione che poi vorrei utilizzare nelle pagine seguenti.

    il codice check login è:

    codice:
    $sql="SELECT * FROM $tbl_name WHERE nome='$myusername' and pswd='$mypassword'";
    $result=mysql_query($sql);
    
    $count=mysql_num_rows($result);
    
    if($count==1){
    // metto in sessione $myusername, $mypassword e faccio il redirect al file "login_success.php"
    
    session_start(); 
    //stampo il valore associato alla sessione passowrd
    echo $_SESSION['mypassword']=$mypassword; 
    ?>
    <?
    //stampo il valore associato alla sessione username
    echo $_SESSION['myusername']=$myusername; 
    ?>
    <?
    
    header("location: http://www.miosito.eu/login/login_success.php");
    
    }
    else {
    echo "errato login";
    // rimando alla pagina di login
    header("Location: http://www.miosito.eu/login/login.php");
    }
    a questo punto funziona tutto ma mi escono dei warning che sono

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/miosito/public_html/login/checklogin.php:8) in /home/miosito/public_html/login/checklogin.php on line 40

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/miosito/public_html/login/checklogin.php:8) in /home/miosito/public_html/login/checklogin.php on line 40



    //**************questi sono i dati stampati dalla sessione*******************//
    user
    password
    //**************questi sono i dati stampati dalla sessione*******************//



    Inoltre con questo altro warning mi dice che non posso modificare header quindi non mi reindirizza alla pagina di login effettuato con successo

    Warning: Cannot modify header information - headers already sent by (output started at /home/miosito/public_html/login/checklogin.php:8) in /home/miosito/public_html/login/checklogin.php on line 50


    Ho letto che si dovrebbe modificare il php ini
    session.bug_compat_42 = 1
    session.bug_compat_warn = 1

    i valori li ho settati a 0 ma non va in locale.
    Inoltre essendo su hosting non ho la possibilità di apportare modifiche.

    Come posso risolvere??

    Grazie a tutti

  2. #2
    L'errore significa che è stato stampato un qualunque output html prima della chiamata a session_start()
    =======================
    http://www.abidibo.net

  3. #3
    scusa l'ignoranza ma non ho capito!

    cosa vuol dire "che è stato stampato un qualunque output html prima della chiamata a session_start()"??

    Grazie

  4. #4
    vuol dire che c'è stato un echo di un qualunque carattere, o semplicemente anche solo uno spazio prima di <?php.
    Le funzioni tipo session_start() o header() devono essere chiamate prima della comparsa di un qualunque carattere in output.
    =======================
    http://www.abidibo.net

  5. #5
    Grazie, adesso funziona. C'è un motivo perchè non debbano essere inseriti caratteri html prima?

    Scusa se ti chiedo ma in giro non ho trovato la soluzione al mio problema quindi...

    Ciaoo e grazie ancora

  6. #6
    Il motivo proprio raccontato alla buona è questo:
    Un pacchetto html si compione di intestazione e corpo che vanno inviate in questo ordine. Il corpo comprende in pratica l'output html che viene poi presentato nella pagina, i dati inviati come request... L'intestazione contiene informazioni varie. le funzioni come header() e session_start() agiscono sull'intestazione del pacchetto. ma se tu hai avuto un output html prima, il pacchetto è già stato inviato poichè è stato inviato il corpo, quindio anche le intestazioni sono state inviate e quindi non è piu' possibile modificarle.
    Questo proprio a grandi linee, ad esempio qui trovi informazioni piu' precise:
    http://kb.creativepark.it/kb/entry/4/
    http://www.sanlab.it/post/2008/01/14...ollo-HTTP.aspx
    =======================
    http://www.abidibo.net

  7. #7
    Grazie per la dritta!!!

    Con calma leggerò gli articoli per approfondire.

    Ciao ciao

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.