Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    Errore sessione [Captcha]

    Salve a tutti!
    Stavo inserendo Captcha in un form e mi dà un errore strano...
    Ecco il segnale di errore:

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/dmbandi/public_html/petition.php:215) in /home/dmbandi/public_html/petition.php on line 230

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/dmbandi/public_html/petition.php:215) in /home/dmbandi/public_html/petition.php on line 230

    Warning: imagecreatefromjpeg(captcha.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/dmbandi/public_html/petition.php on line 233

    Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /home/dmbandi/public_html/petition.php on line 234

    Warning: imagestring(): supplied argument is not a valid Image resource in /home/dmbandi/public_html/petition.php on line 235

    Warning: Cannot modify header information - headers already sent by (output started at /home/dmbandi/public_html/petition.php:215) in /home/dmbandi/public_html/petition.php on line 237

    Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/dmbandi/public_html/petition.php on line 238


    Ed ecco lo script dalla riga 230:
    Codice PHP:
     session_start();
        
    $stringa md5(microtime());
        
    $risultato substr($stringa05);
        
    $immagine imagecreatefromjpeg("captcha.jpg");
        
    $testo imagecolorallocate($immagine255255255);
        
    imagestring($immagine32010$risultato$testo);
        
    $_SESSION['CONTROLLO'] = $risultato;
        
    header("Content-type: image/jpeg");
        
    imagejpeg($immagine); 

  2. #2
    Tu hai già inviato l'header con session_start quindi non puoi impostare dopo l'header.
    Una soluzione sarebbere quella di eseguire il buffering dell'output

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    il punto è, più semplicemente, che non puoi stampare nulla (echo e compagnia bella) prima di aver avviato le sessioni e/o inviato cookie.


    SI
    Codice PHP:
    session_start();
    echo 
    "Ciao mondo"
    NO
    Codice PHP:
    echo "Ciao mondo";
    session_start(); 
    tu hai avviato la sessione a riga 230, ovviamente prima avrai stampato qualcosina...session start, quando serve, va il 99% delle volte in testa allo script o prima di una istruzione che potrebbe stampare qualcosa

  4. #4
    Originariamente inviato da loHacker
    Tu hai già inviato l'header con session_start quindi non puoi impostare dopo l'header.
    Una soluzione sarebbere quella di eseguire il buffering dell'output
    Quello che scrivi mi è un po' arabo... Se intendi dire che avevo già una sessione precedentemente aperta, la risposta è che ho controllato e non mi pare, no.

    Piuttosto, il codice l'ho copiato, e questo dell'header per stampare l'immagine del codice Captcha non vorrei fosse un mandare il browser su un altra pagina di visualizzazione, perchè io in realtà vorrei che l'immagine Captcha fosse visualizzata sotto il form, nella stessa pagina del form!

  5. #5
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Potresti risolvere includendo il codice per il captcha in un file a parte, captcha.php ad esmepio. Quando devi richiamare l'immagine dinamica usi il tag <img> per richiamare il file precedente:
    [img]captcha.php[/img]

  6. #6
    Il buffering dell'output consiste nel memorizzare tutti gli output inviati all'utente come echo , setcookie ecc. e inviarli tutti assieme.
    nella prima riga scrivi ob_start() e in fondo ob_end_flush() per inviare tutto l'output assieme

  7. #7
    Ma allora è vero che quell'header manderebbe l'immagine in un'altra pagina?? Grazie a chi mi ha spiegato che devo mettere la sessione ad inizio script (giusto?)

  8. #8
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Originariamente inviato da tommyacoustic19
    Ma allora è vero che quell'header manderebbe l'immagine in un'altra pagina?? Grazie a chi mi ha spiegato che devo mettere la sessione ad inizio script (giusto?)
    non esattamente. l'header a cui ti riferisci invia in output l'immagine nel punto esatto in cui viene eseguito il codice (header). Il problema però nasce dal fatto che non puoi avere nessun tipo di output, caratteri o semplici spazi vuoti, prima della chiamata header. Richiamando il codice da un file a parte questo problema non si verifica.

  9. #9
    Richiamando il codice da un file a parte questo problema non si verifica.
    Io credo invece che anche il problema si verifica comunque in quanto l'output viene inviato comunque prima dell'header. Con il buffering puoi risolvere questi problemi e inserire funzioni di output dove ti pare.

  10. #10
    Ho messo la sessione all'inizio, lasciando nel form solo
    Codice PHP:
    header("Content-type: image/jpeg"); 
        
    imagejpeg($immagine); 
    Ora gli errori sono questi:
    Warning: imagecreatefromjpeg(captcha.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/dmbandi/public_html/petition.php on line 7

    Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /home/dmbandi/public_html/petition.php on line 8

    Warning: imagestring(): supplied argument is not a valid Image resource in /home/dmbandi/public_html/petition.php on line 9


    Mentre nel punto in cui devo stampare l'immagine: Warning: Cannot modify header information - headers already sent by (output started at /home/dmbandi/public_html/petition.php:7) in /home/dmbandi/public_html/petition.php on line 239

    Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/dmbandi/public_html/petition.php on line 240


    In effetti, considerato che il comando "include" semplicemente inserisce codice nel punto, credo che se inserisco il codice direttamente o con l'include, avrà sempre qualcosa di stampato precentemente... Sempre che sia questo il problema dell'header... O no?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.