Messaggio di errore causa session_start

  • Creatore Discussione Creatore Discussione nim
  • Data di inizio Data di inizio

nim

Utente Attivo
11 Ott 2011
96
0
0
salve a tutti ,
ho un problema anche questa volta però ora sono più preoccupato del solito!
Su altervista va tutto bene ma ora che su register ho comprato il dominio+spazio web , si è incasinato tutto (passatemi i termini)!
Funziona così: ad ogni pagina protetta c'è un rimando a una authentication.class.php che mi controlla se l'utente si è loggato oppure no;
su altervista funzionava tutto ma ora se non mi sono loggato non mi reindirizza alla pagina di login, bensì mi da questi due errori:
HTML:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /htdocs/public/www/seidentro.php:2) in /htdocs/public/www/authentication.class.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /htdocs/public/www/seidentro.php:2) in /htdocs/public/www/authentication.class.php on line 2
Che vuol dire?cioè perchè prima andava e ora no?
Confido nella solita disponibilità,
Grazie arrivederci



EDIT: aggiungo che anche se sono loggato e entro in una pag protetta vedo quest'errore:
HTML:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /htdocs/public/www/lavagna_index.php:2) in /htdocs/public/www/authentication.class3.php on line 3
 
Ultima modifica:
ciao
secondo me hai cambiato (forse senza accorgertene) qualcosina.
l'errore è dovuto al fatto che prima della chiamata di session_start() hai un uotput html (può essere anche un semplice spazio).
poi stai attento (anche se non sono esperto nell'uso delle classi), da quanto ho capito tu hai la sesseion_star() dentro la classe authentication.class.php, giustamente alla riga 2 subito dopo il tag php,
ma per usarla la devi includere nel file seidentro.php, quindi farai (credo) in seidentro qualcosa del genere
PHP:
<?php
require "authentication.class.php";//o include
//poi l'istanzierai ecc..
?>
da qualche parte (ahime la memoria fa acqua) ho letto che il require o l'include sono come uot html, da qui l'errore, se poi prima del require hai anche solo una riga vuota l'uot è quello di sicuro

p.s.
io forse sbaglio ma non uso mai session_star() o similari, che abbisognano di essere i primi, nei file da includere
 
ma e quindi come dovrei risolvere?
perchè ho tolto eventuali spazi ma nn cambia :(
vengone gli errori

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /htdocs/public/www/seidentro.php:2) in /htdocs/public/www/authentication.class.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /htdocs/public/www/seidentro.php:2) in /htdocs/public/www/authentication.class.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /htdocs/public/www/seidentro.php:2) in /htdocs/public/www/authentication.class.php on line 45


:(
 
ciao
se la session_start() è nel file della classe prova a toglierla (o commentarla, meglio) e mettile nel file che include

PHP:
<?php
session_start();
//....
require "authentication.class.php";//o include
//poi l'istanzierai ecc..
?>
 
grazie , ho risolto aprendo la sessione prima di richiamare la classe..
però non mi spiego una cosa; perchè su altervista andava bene?
 
Su Altervista va bene perché la sua configurazione di PHP non dovrebbe rendere visibili i Warning.
 
ciao

Su Altervista va bene perché la sua configurazione di PHP non dovrebbe rendere visibili i Warning.

non so se andava bene cioè lo script funziasse, secondo me non avrebbe dovuto funzionare.
es. se metto un silent su un include e non trova il file da includere non mostra l'errore, ma lo script dovrebbe piantarsi (o fa quello che vuole, ma non quello che vorresti)

p.s.
secondo me uno script attentamente debaggato non dovrebbe dare warning (siano questi attivi che disattivi)
 
certo però garantisco che funzionava tutto , mentre su register alcune volte si bloccavano i processi addirittura..
 
ciao
non conosco ne altervista ne register, quindi con precisione non ti so dire. ma mi sembra strano che altervista abbia un php personale che non dia errore.
una cosa che dimenticavo nei perimi post
quando parlo che anche uno spazio può dare errore non intendo uno spazio interno a php
es.
PHP:
<?php

//lo spazio sopra (e anche sotto) è ininfluente
session_start();

?>
ma quello che si possono trovare prima del tag <?php, es

PHP:
<!--qui sopra ho lo spazio che da errore -->
<?php
session_star();
//...
?>
 
ciao
non so se andava bene cioè lo script funziasse, secondo me non avrebbe dovuto funzionare.
es. se metto un silent su un include e non trova il file da includere non mostra l'errore, ma lo script dovrebbe piantarsi (o fa quello che vuole, ma non quello che vorresti)
p.s.
secondo me uno script attentamente debaggato non dovrebbe dare warning (siano questi attivi che disattivi)

Dipende da cosa c'è nell'include, è chiaro che se per esempio contiene dei parametri per la connessione ad un db è presumibile che l'applicazione non funzioni, ma ciò dipende dalla mancata inclusione. Tiene conto che essenzialmente un warning, a differenza di un fatal error, permette comunque l'esecuzione di uno script.
Prova per esempio a vedere cosa succede se sostituisci un include con un require.
 
ciao
si hai ragione, ma io intendevo
PHP:
@include "pinco.php";
se non trova pinco.php non ti visualizza il warning, ma l'errore c'è comunque
 
ciao
si hai ragione, ma io intendevo
PHP:
@include "pinco.php";
se non trova pinco.php non ti visualizza il warning, ma l'errore c'è comunque

La presenza o meno della notifica non influisce sull'esecuzione dello script; ripeto (noiooooso) prova a mettere un require "silenziato" su un inclusione non determinante per l'esecuzione, poi giudica tu se l'effetto è lo stesso dell'include.
 
ciao
La presenza o meno della notifica non influisce sull'esecuzione dello script; ripeto (noiooooso) prova a mettere un require "silenziato" su un inclusione non determinante per l'esecuzione, poi giudica tu se l'effetto è lo stesso dell'include.
ma è quello che sto dicendo cioè lo script o si pianta subito (caso require) o fa quello che vuole (caso include) e può piantarsi in seguito.
nel caso dell'include è evidente che dipende anche da cosa devo includere, se è una semplice visualizzazione al massimo non la vedo, se contiene invece la definizione di una funzione si pianta appena cerco di usarla.
come detto non conosco alter ne register però nel caso di altervista il fatto che non dia i warning non mi sembra una bella cosa (soprattutto in fase di debug)
per es.
<?php
echo "pinco"; //out html
session_start();
//altre ottomila righe di codice
echo "risultato=".$aa/$_SESSION['numero'];
//...
?>
se vedo il warnin capisco subito che l'errore è alla riga session_start, se non ho i warning lo sript si pianta quando cerco di fare la divisione
 
comunque alla fine lo script e tutto funzionavano quindi ho messo il silent e ho risolto...
anche se devo dire che mi secca pensare al fatto di avere errori (anche se invisibili) nelle mie pagine..
 

Discussioni simili