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

    Guerra tra header e sessioni!

    Salve a tutti, sono qua per chiedere un aiuto su un problema in PHP! VVoVe:

    include("connection.inc");

    $dbname="utenti";

    mysql_select_db('utenti',$conn);

    $mylogin=$_POST['login'];
    $mypassword=$_POST['password'];


    $sql="SELECT * FROM registrati WHERE login='$mylogin' and password='$mypassword'";
    $result=mysql_query($sql);

    $count=mysql_num_rows($result);

    if($count==1) {
    // Register $myusername, $mypassword and redirect to file "login_success.php"
    session_register("myusername");
    session_register("mypassword");
    header("location:login_success.php");
    }
    else {
    echo "Attenzione username o password errati";
    }


    Questa è una parte del mio codice, è una pagina di login con controllo di username e password, utilizzando poi le sessioni. Da n form inserisco login e password che, confrontate con quelle nel database, portano a una pagina login_success.php se corrette, o richiede di nuovo l'inserimento se errate.
    L'errore che mi viene fuori è: Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\login.php:12) in c:\programmi\easyphp1-8\www\login.php on line 88 e dipende tutto dalla riga
    header("location:login_success.php"); ...sapete perchè o come posso fare per risolvere il problema? grazie!!

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    La funzione header non vuole nessun output prima della sua chiamata, dove per output intendo qualsiasi dato inviato al browser

    Nel tuo caso controlla il file login.php alla riga 12.
    think simple think ringo

  3. #3
    Originariamente inviato da marketto
    La funzione header non vuole nessun output prima della sua chiamata, dove per output intendo qualsiasi dato inviato al browser

    Nel tuo caso controlla il file login.php alla riga 12.
    alla linea 12 ho i tag <meta>....
    Ho visto che header non vuole output prima della chiamata ma se devo metterla a quel punto del file come posso fare?
    cmq invio tutto il file:

    <?
    session_start();
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" >
    <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <meta name="author" content="Riccardo Campopiano Simone Panizzi" />
    <meta name="keywords" content="parole chiave" />
    <link href="schermo.css" type="text/css" rel="stylesheet" media="screen" />

    <title>Parole in libert&agrave;</title>

    </head>

    <body>

    <div id="intestazione"> </div>

    <div id="menu">
    <ul class="indice">[*] home [*] invio opera [*] autore [*] genere [*] soggetto [*] eventi [/list]

    <div id="piede" style="position:relative">

    Effettua il login


    Registrati

    </div>

    </div>

    <div id="corpo">

    <?


    if (isset($_POST['submit'])) { }

    else {

    echo "<h3>Form di login</h3>";
    echo "<FORM name=formreg action=login.php method=post>";
    echo "

    <span>login
    ";
    echo "<input name=login size=30/></span></p>";
    echo "

    <span>Password
    ";
    echo "<input name=password type=password /></span></p>";
    echo "

    <span><input type=submit value=INVIA name=submit /></span></p>";
    echo "</FORM>";

    }






    include("connection.inc");

    $dbname="utenti";

    mysql_select_db('utenti',$conn);

    $mylogin=$_POST['login'];
    $mypassword=$_POST['password'];


    $sql="SELECT * FROM registrati WHERE login='$mylogin' and password='$mypassword'";
    $result=mysql_query($sql);

    $count=mysql_num_rows($result);

    if($count==1) {
    // Register $myusername, $mypassword and redirect to file "login_success.php"
    session_register("myusername");
    session_register("mypassword");
    header("location:login_success.php");
    exit();
    }
    else {
    echo "Attenzione username o password errati";
    }



    ?>


    </div>
    </body>
    </html>



  4. #4
    nessuno può aiutarmi?

  5. #5
    Io la vedo così:
    Codice PHP:
    <?
    session_start
    ();

    $ErrorMessage "";

    if (isset(
    $_POST['submit'])) { 
        include(
    "connection.inc");


        
    $dbname="utenti";

        
    mysql_select_db('utenti',$conn);

        
    $mylogin=$_POST['login'];
        
    $mypassword=$_POST['password'];


        
    $sql="SELECT * FROM registrati WHERE login='$mylogin' and password='$mypassword'";
        
    $result=mysql_query($sql);

        
    $count=mysql_num_rows($result);

        if(
    $count==1) {
        
    // Register $myusername, $mypassword and redirect to file "login_success.php"
            
    session_register("myusername");
            
    session_register("mypassword");
            
    header("location:login_success.php");
            exit();
        }
        else {
            
    $ErrorMessage =  "Attenzione username o password errati";
        }
    }

    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" >
    <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <meta name="author" content="Riccardo Campopiano Simone Panizzi" />
    <meta name="keywords" content="parole chiave" />
    <link href="schermo.css" type="text/css" rel="stylesheet" media="screen" />

    <title>Parole in libertà</title>

    </head>

    <body>

    <div id="intestazione"> </div>

    <div id="menu">
    <ul class="indice">[*] [url="index.php"] home [/url] [*] [url="invio.php"] invio opera [/url] [*] [url="autore.php"] autore [/url] [*] [url="genere.php"] genere [/url] [*] [url="soggetto.php"] soggetto [/url] [*] [url="eventi.php"] eventi [/url] [/list]

    <div id="piede" style="position:relative">

    [url="login.php"] Effettua il login [/url]


    [url="registrazione.php"] Registrati [/url]

    </div>

    </div>

    <div id="corpo">

    <?

    echo "<h3>Form di login</h3>";
    echo 
    "<FORM name=formreg action=login.php method=post>";
    echo 
    "

    <span>login
    "
    ;
    echo 
    "<input name=login size=30/></span></p>";
    echo 
    "

    <span>Password
    "
    ;
    echo 
    "<input name=password type=password /></span></p>";
    echo 
    "

    <span><input type=submit value=INVIA name=submit /></span></p>"
    ;
    echo 
    "</FORM>";

    echo 
    $ErrorMessage;
    ?>


    </div>
    </body>
    </html>
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Mentre stai rivedendo il codice, inizia ad utilizzare sintassi moderna (e corretta)

    session_register è morto e sepolto e non va riesumato: per registrare una variabile di sessione usa:

    codice:
    $_SESSION['var_name'] = var_value;
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Provato a mettere un ob_start(); all'inizio?

  8. #8
    WOW!
    Grazie a voi tutti e in particolare a homezappa e darkmavis, adesso il redirect sulla nuova pagina lo fa, con tanto di scritta "IL TUO LOGIN HA AVUTO SUCCESSO"!
    Il problema adesso è un altro: nella pagina login_sucess.php rimane un errore Notice: Undefined variable: mylogin in c:\programmi\easyphp1-8\www\login_success.php on line 3 e un errore Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\login_success.php:3) in c:\programmi\easyphp1-8\www\login_success.php on line 4...
    allego la pagina login_success.php -->

    <?
    session_start();
    if(!session_is_registered($mylogin)){
    header("location:login.php");
    }

    ob_start();
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" >
    <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <meta name="author" content="Riccardo Campopiano Simone Panizzi" />
    <meta name="keywords" content="parole chiave" />
    <meta name="description" content="descrizione del sito" />
    <meta name="robots" content="all" />
    <link href="schermo.css" type="text/css" rel="stylesheet" media="screen" />

    <title>Parole in libert&agrave;</title>

    </head>

    <body>

    <div id="intestazione"> </div>

    <div id="menu">
    <ul class="indice">[*] home [*] invio opera [*] autore [*] genere [*] soggetto [*] eventi [/list]

    <div id="piede" style="position:relative">

    Effettua il login


    Registrati

    </div>

    </div>

    <div id="corpo">



    IL TUO LOGIN HA AVUTO SUCCESSO!

    <FORM action=logout.php name=logout>


    <span><input type=submit value=LOGOUT name=submit /></span></p>
    </FORM>



    </div>
    </body>
    </html>


    cos'è che è sbagliato?
    cmq se ho ben capito dopo aver fatto login si dovrebbe aprire una sessione con il nome del login, giusto?

  9. #9
    ob_start(); mettilo subito dopo session_start();

  10. #10
    provato ma non mi si carica piu la pagina login_sucess.php se inserisco un login e una password corretti...

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