output_buffering

dopo essere impazzito per ore a cercare di eliminare i messaggi:

"Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at..." inspiegabili, perch non avevo inviato nessun tipo di output al browser prima dei comandi session_start() o header() ho provato a impostare la variabile in oggetto nel file php.ini a "On" (di default a 0).

Questa modifica mi ha risolto i problemi ed ora posso lavorare tranquillamente con sessioni e cookie.

Ma ho dei dubbi:

- c' un peggioramento delle prestazioni?

- la modifica l'ho fatta sul mio php.ini in locale, ma in rete immagino(non ho ancora provato) sul webserver che ospita il mio sito questa variabile sar impostata a 0 e non sono riuscito a impostarla via codice con la

ini_set("output_buffering","On"),che viene ignorata. C' un altro modo per impostarla?

grazie

:bye:

inviato 10 anni fa
fla
fla
1
X 0 X

Usare il buffering dell'output non ha particolari controindicazioni, anzi pu migliorare le prestazioni. Se non puoi intervenire sul php.ini puoi usare le funzioni ob_start e ob_end_flush.

:bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

O0 grazie!

i metodi ob_start() e ob_end_flush() sono davvero molto potenti, permettono una maggiore flessibilit del codice, inoltre ob_get_contents() molto utile per il debug.

Ho notato per una cosa curiosa sul metodo ob_start(), l'ho messo in testa al codice, in questo modo :

<?
ob_start();
?>

ma in questo modo la pagina visualizzata dal browser mi mostrava del testo strano e indesiderato, qualcosa di questo tipo:

   

aggiungendo al fianco un'altra istruzione questo testo sparisce, cos ad esempio:

<?
ob_start();
include("file.php");
?>

un'ultima cosa: il messaggio di errore del primo post mi veniva in condizioni inspiegabili, ad esempio facendo un session_start() nella primissima riga, senza spazi. Ebbene testando carattere per carattere con la funzione ob_get_contents() ho scoperto un <br> iniziale invisibile dal mio editor (Dev-Php).

Allora ho rinominato il file, l'ho aperto con notepad ho copiato il contenuto in un'altro file sempre con notepad e l'ho salvato con il nome originale: il problema sparito!

Quindi chi incontrasse errori di quel tipo (e ho notato che capita spesso leggendo in giro sui post) provi a fare cos: incredibile ma vero!

:bye:

risposto 10 anni fa
fla
fla
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda