Visualizzazione risultati 1 fino 6 di 6

Discussione: [php/MySql] Problema session_start() ?!?

  1. #1
    Guest

    Predefinito [php/MySql] Problema session_start() ?!?

    Ecco il mio codice:
    Codice PHP:
    if(isset($_POST['txtUser']) && isset($_POST['pwdPass']))
    {
    $txtUser=$_POST['txtUser'];
    $pwdPass=$_POST['pwdPass'];
    include(
    'includes/mysql/dbconnect.php');
    $sql='SELECT * FROM users WHERE userName="'.$txtUser.'"';
    $query=mysql_query($sql,$dbconnect)
    or die(
    '<script>history.go(-1)</script>');
    while(
    $dati=mysql_fetch_array($query))
    {
    if(
    $pwdPass==$dati['userPass'])
    {
    session_start();
    $_SESSION['userName']=$dati['userName'];
    $_SESSION['userNome']=$dati['userNome'];
    $_SESSION['userCognome']=$dati['userCognome'];
    $_SESSION['userAdmin']=$dati['userAdmin'];
    }
    }
    mysql_close($dbconnect);
    }
    La pagina mi da questo errore:
    Codice:
    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\programmi\easyphp1-8\www\gruppo giovani\includes\header.php:3) in c:\programmi\easyphp1-8\www\gruppo giovani\includes\login.php on line 20
    
    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\gruppo giovani\includes\header.php:3) in c:\programmi\easyphp1-8\www\gruppo giovani\includes\login.php on line 20
    Nella riga 20 si trova la funzione session_start().

    Secondo voi qual'è il problema? o_o

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Qualcosa fra la riga 1 e la riga 19 produce dell'output, e session_start() fallisce. Un po' come header() o setcookie(), deve essere eseguita prima di qualsiasi output.

    Mettere session_start() dentro un ciclo while non ha molto senso però...
    Ultima modifica di dreadnaut : 08-04-2009 alle ore 01.07.28

  3. #3
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Sono dei warning, ma non dovrebbero mandare bloccare il programma.
    Il problema è che session_start andrebbe eseguito una sola volta, come detto sopra prova a toglierlo dal ciclo e etterlo in testa
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,806

    Predefinito

    Ciao.

    {spero nella clemenza dei mod }
    io session_start la so usare bene

    Ma:

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Un po' come header() o setcookie(), deve essere eseguita prima di qualsiasi output.
    Io i cookie li setto con JS e quindi non mi tocca ;-)

    Ma header, io lo so usare soltanto per far cambiare pagina
    Codice PHP:
    header("location: pag.php");
    Ma non si può usare dopo aver prodotto output HTML
    Il php stesso, di REGOLA non dovrebbe essere usato dopo codice html, ma alcuni utenti lo usano (anche io ) e almeno su AV funziona.

    Il fatto dell'header() è una cosa non in regola che però funziona (come php) oppure è vietato?

    Grazie,

    Ciao!

    Per i MOD: se ritenete che il messaggio non sia in regola, eliminatelo!

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    @alemoppo: non si capisce assolutamente nulla di quello che hai scritto

    Quindi rispiego: non ci sono cose vietate, ci sono cose che funzionano e cose che non funzionano.

    Le funzioni header(), setcookie() e session_start() vanno eseguite prima di aver fatto qualsiasi output, sia esso html o altro. Questo perché vanno tutte e tre a modificare l'intestazione della pagina, che viene generata e spedita prima del contenuto della pagina stessa. Se tu hai già inviato del contenuto, l'intestazione è già partita e non puoi più modificarla. (*)

    header(), che va ad aggiungere righe direttamente all'intestazione, può essere eseguita più volte, per aggiungere diverse righe, così come setcookie() può creare più di un cookie, ma session_start() crea un session id, un cookie per tenerlo ed inizializza la sessione, e dovrebbe essere richiamata una sola volta. Altrimenti si riceve un errore del tipo "Session already initialized".

    Per quanto riguarda il "non eseguire php dopo l'html", palle. Mai letto che sia vietato, se la parola "vietato" può avere senso in questo contesto.

    @ibnarysun: non credo però che dia il warning riportato nel primo messaggio, perché session_start() non chiude l'intestazione - secondo me c'è dell'output da un'altra parte.

    [*] ci sono modi per bufferizzare l'output ed inviarlo in un blocco solo alla fine, e questo permette di produrre output, metterlo nel buffer, e nel frattempo modificare anche più volte l'intestazione della pagina.
    Ultima modifica di dreadnaut : 08-04-2009 alle ore 11.51.10

  6. #6
    Guest

    Predefinito

    ok capito tutto! =)
    ho risolto, grazie mille! ;)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •