• User Attivo

    errore sessione

    Ciao a tutti, finalmente ho acquistato il dominio e ho caricato tutto sul server.
    Però mi da quest'errore quando apro una qualsiasi pagina:

    [PHP]Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/u14d2c2z/domains/tapsosnuoto.it/public_html/admin/head.inc.php:21) in /home/u14d2c2z/domains/tapsosnuoto.it/public_html/admin/config.php on line 2
    [/PHP]

    e la linea 2 di config.php è questa:
    [PHP]
    session_start();
    [/PHP]

    ke faccio?
    Ciau


  • User Attivo

    Non ci deve essere nessun output prima di session_start()
    Controlla che prima dell'apertura del php (<?php) non ci siano righe, anche vuote.


  • User Attivo

    non ce ne sono...questo contiene quella pagina:

    [PHP]
    <?php
    session_start();
    $connection = mysql_connect( 'host', 'nome_utente', 'password') or die('Could not connect to server.' );
    mysql_select_db('nome_database', $connection) or die('Could not select database.');
    ?>
    [/PHP]


  • Consiglio Direttivo

    ma a che ti serve il session_start(); nel config.php??


  • User Attivo

    dove dovrei metterlo?


  • Consiglio Direttivo

    se il tuo config.php è proprio quello di sopra la sessione in quella pagina non ti serve proprio....almeno mi pare.....non ne vedo l'utilità 😉


  • User Attivo

    siccome viene richiamato anche da una pagina ke fa il login....
    che mi consigli?
    lo metto nella pagina del login?


  • Consiglio Direttivo

    @talkoman said:

    siccome viene richiamato anche da una pagina ke fa il login....
    che mi consigli?
    lo metto nella pagina del login?
    ovvio che si XD

    ma oltre al session_start, nella pagina di login devi definire anche cosa dovrà portarsi appresso la sessione, ovvero rob del tipo:

    [php]
    //** tiri fuori i dati dal Db che ti includi in un array e quindi fai partire la sessione. Consigliabile unsettarla e distruggerla, per poi riaprirla */
    session_start();
    session_unset();
    session_destroy();
    session_start();
    $_SESSION["id_user"]=$array["id_user"];
    $_SESSION["nick"]=$array["nick"];
    $_SESSION["email"]=$array["email"];
    .......
    ......
    ....
    [/php]
    da quì in poi ti potrai richiamare i dati di sessione mettendo ad inizio pagina, immediatamente dopo il <? (e prima NON deve esserci nulla):
    [php]session_start();
    $nick=$_SESSION['nick'];
    ....
    ..
    ..[/php]

    😉


  • User Attivo

    io ce l'ho così:
    [PHP]
    //Eseguo una query nella tabella utenti verificando se esiste l'username con quella password
    $query = mysql_query("SELECT user_username FROM admin_users WHERE user_username = '".$_POST['usrname']."' AND user_passwd = '".md5($_POST['password'])."'");
    $var=mysql_num_rows($query);
    //se esiste l'account registra la sessione
    if($var==1)
    {
    //metto l'username nella variabile di sessione "username"
    $_SESSION['username'] = $_POST['usrname'];
    //Faccio il redirect nella pagine enter.php
    echo "<script>
    window.location = "index.php"
    </script>";
    }
    [/PHP]


  • Consiglio Direttivo

    [php]
    //Eseguo una query nella tabella utenti verificando se esiste l'username con quella password
    $query = mysql_query("SELECT user_username FROM admin_users WHERE user_username = '".$_POST['usrname']."' AND user_passwd = '".md5($_POST['password'])."'");
    $var=mysql_num_rows($query);
    //se esiste l'account registra la sessione
    if($var==1)
    {
    session_start();
    session_unset();
    session_destroy();
    session_start();
    //metto l'username nella variabile di sessione "username"
    $_SESSION['username'] = $_POST['usrname'];
    //Faccio il redirect nella pagine enter.php
    echo "<script>
    window.location = "index.php"
    </script>";
    }
    [/php]

    devi aprire la sessione prima di assegnare il valore 😉


  • User Attivo

    [PHP]<?php
    //includo il file di Configurazione con session_start()) dentro
    include ("config.php");
    //Eseguo una query nella tabella utenti verificando se esiste l'username con quella password
    $query = mysql_query("SELECT user_username FROM admin_users WHERE user_username = '".$_POST['usrname']."' AND user_passwd = '".md5($_POST['password'])."'");
    $var=mysql_num_rows($query);
    //se esiste l'account registra la sessione
    if($var==1){
    session_start();
    session_unset();
    session_destroy();
    session_start();
    //metto l'username nella variabile di sessione "username"
    $_SESSION['username'] = $_POST['usrname'];
    //Faccio il redirect nella pagine enter.php
    echo "<script>
    window.location = "index.php"
    </script>";
    }
    else
    {
    //Faccio il redirect nella pagine enter.php
    echo "<script>
    window.location = "login.php"
    </script>";
    }
    ?>[/PHP]

    non mi effettua il login...mi torna sulla pagina login.php


  • Consiglio Direttivo

    @talkoman said:

    non mi effettua il login...mi torna sulla pagina login.php

    per come è il codice significa che if($var==1)restituisce FALSE.....


  • User Attivo

    allora è strutturato così
    pagina: login.php

    [PHP]<form action="verifica.php" method="post" enctype="application/x-www-form-urlencoded" name="login">
    <br/>
    <table border="0">
    <tr>
    <td><div align="right">UserName</div></td>
    <td><input type="text" name="usrname"></td>
    </tr>
    <tr>
    <td><div align="right">Password</div></td>
    <td><input type="password" name="password"></td>
    </tr>
    </table>
    <input type="submit" value="Entra!" name="post"></form>[/PHP]

    verifica ke è quella di sopra....


  • Consiglio Direttivo

    [PHP]include ("config.php");

    $username=$_POST['usrname'];
    $psw=$_POST['password'];
    $pswmd5=md5($psw);
    $sql= "SELECT user_username FROM admin_users WHERE user_username='".$username."' AND user_passwd='".$pswmd5."'";

    $query = mysql_query($sql) or die (mysql_error());
    $var=mysql_num_rows($query);
    .....
    [/PHP]

    prova così, eventualmente fatti un echo di $var per vedere che tira fuori 😉


  • User Attivo

    allora ho fatto delle prove ho fatto così la pag verifica.php:
    [PHP]if($var==1){
    session_start();
    session_unset();
    session_destroy();
    session_start();
    //metto l'username nella variabile di sessione "username"
    $_SESSION['username'] = $_POST['usrname'];
    //Faccio il redirect nella pagine enter.php
    echo "SI";
    /echo "<script>
    window.location = "index.php"
    </script>";
    /
    }
    else
    {
    //Faccio il redirect nella pagine enter.php
    echo "NO";
    /echo "<script>
    window.location = "login.php"
    </script>";
    /
    }[/PHP]
    e mi stampa si, quindi si redirecta su index.php
    ma index.php è così:
    [PHP]<?php
    include ("head.inc.php");
    include ("foot.inc.php");
    //includo il file di Configurazione con session_start()) dentro
    include ("config.php");
    //se esiste la variabile $_SESSION['username'] è loggato
    if(!isset($_SESSION['username'])){
    echo "<script>
    window.location = "login.php"
    </script>";
    }
    ?>[/PHP]
    quindi può essere ke non si prende il session e ritorna su login....
    come faccio??


  • Consiglio Direttivo

    [php]
    if(!isset($_SESSION['username'])){
    echo "<script>
    window.location = "login.php"
    </script>";
    }
    [/php]

    normale che non ti funge XD
    prima di richiamare una variabile di sessione devi aprire la sessione XD

    [php]session_start();
    if(!isset($_SESSION['username'])){
    echo "<script>
    window.location = "login.php"
    </script>";
    }
    [/php]


  • User Attivo

    per questo era nel config.php....


  • User Attivo

    comunque mi da lo stesso problema originario:

    [PHP]Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/u14d2c2z/domains/tapsosnuoto.it/public_html/admin/head.inc.php:21) in /home/u14d2c2z/domains/tapsosnuoto.it/public_html/admin/index.php on line 7[/PHP]


  • Consiglio Direttivo

    session_start() va messo subito dopo <?, e prima che esca il session_start() del config.php hai già l'header ed il footer, ovvero, la stringa di prima la devi mettere prima dell'header e del footer.....mi pare che era già scritto...o sbaglio?


  • User Attivo

    grazie funziona!!....devo semplicemente sistemarlo in tutte le pagine:D