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

    Sistema di login che genera errore

    Ciao ragazzi...
    Ho un problema che vorrei sottoporre alla vostra attenzione...
    Per permettere delle registrazioni nel mio sito, sto cercando di costruire un piccolo e semplice sistema di login. Il codice è diviso in 3 file (per intanto...). Ve li mostro:

    codice:
    $host="localhost"; 
    $username="simone"; 
    $password="simone"; 
    $db_name="gameszone_db1"; 
    $tbl_name="membri"; 
    
    @mysql_connect("$host", "$username", "$password")or die("cannot connect");
    
    @mysql_select_db("$db_name")or die("cannot select DB");
    
    $myusername=$_POST['myusername'];
    $mypassword=$_POST['mypassword'];
    
     $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
    
    $result = mysql_query($sql);
    
    $count = mysql_num_rows($result);
    
    if($count==1){
    
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $mypassword;
    
    header('location: login_success.php', true);
    } else {
    echo "Attenzione username o password errati"; }
    Questo è il filec checklogin.php, che riceve i dati del login dal file main_login.html (che non vi mostrerò perchè inutile nella risoluzione del problema... :master: penso).
    Come vedete, quando le varibili di sessione vengono registrate, lancio un header che chiede il collegamento a login_success.php. Ecco qui

    codice:
    <?php
    // Controlla se la sessione è stata registrata, altrimenti rimanda alla pagina di login
    session_start();
    if(!session_is_registered(myusername)){
    header("location:main_login.html");
    
    }
    
    ?>
    Ora...mi piacerebbe sapere perchè, quando i dati del login sono esatti, il browser mi lancia questo errore:

    codice:
    Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\checklogin.php:15) in c:\programmi\easyphp1-8\www\checklogin.php on line 62
    Per favore, sapreste dirmi dov'è l'errore? Grazie mille...
    un salutone
    {}\"$y|\/|0"/{}

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    intanto se vuoi far iniziare la sessione devi mettere session_start() in checklogin.php

    Codice PHP:
    $host="localhost"
    $username="simone"
    $password="simone"
    $db_name="gameszone_db1"
    $tbl_name="membri"

    @
    mysql_connect("$host""$username""$password")or die("cannot connect");

    @
    mysql_select_db("$db_name")or die("cannot select DB");

    $myusername=$_POST['myusername'];
    $mypassword=$_POST['mypassword'];

     
    $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";

    $result mysql_query($sql);

    $count mysql_num_rows($result);

    if(
    $count==1){
    session_start();
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $mypassword;

    header('location: login_success.php'true);
    } else {
    echo 
    "Attenzione username o password errati"; } 
    e l'errore che ti da dipende da questo che session_start() deve sempre essere all'inozio di ogni file se prima di session_start lasci spazi o scrivi dell'html il php si incavola e ti da l'errore che mi hai mostrato

    login_success.php

    <?php
    session_start();// Controlla se la sessione è stata registrata, altrimenti rimanda alla pagina di login
    if(!session_is_registered(myusername)){
    header("location:main_login.html");

  3. #3
    Grazie mille dell'aiuto!!!
    Ciao, alla prossima...
    {}\"$y|\/|0"/{}

  4. #4
    Ho inserito il codice che mi hai dato...e adesso gli errori che il browser mi indica sono addirittura 3!!!!

    codice:
    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\programmi\easyphp1-8\www\checklogin.php:15) in c:\programmi\easyphp1-8\www\checklogin.php on line 37
    
    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\checklogin.php:15) in c:\programmi\easyphp1-8\www\checklogin.php on line 37
    
    Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\checklogin.php:15) in c:\programmi\easyphp1-8\www\checklogin.php on line 41
    Il codice, è quello che hai postato tu...
    Proprio non so come agire....
    MI dice che l'header è già stato inviato dallo stesso file...cioè???
    {}\"$y|\/|0"/{}

  5. #5
    il perche' gia' lo hanno detto. Invii qualcosa al browser "prima" di session_start()

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Ehm...ok
    Sistemati i primi due errori...
    {}\"$y|\/|0"/{}

  7. #7
    Ecco...permane il III errore....
    codice:
    Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\checklogin.php:17) in c:\programmi\easyphp1-8\www\checklogin.php on line 44
    Che fare?
    {}\"$y|\/|0"/{}

  8. #8
    Originariamente inviato da $imone

    Che fare?
    e' sempre lo stesso problema... invii un output al browser. Controlla bene il codice html prodotto prima dell'header

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Allora, tagliamo la testa al toro...posto tutto il codice della pagina...
    ecco qui

    codice:
    <?php session_start(); ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    
    <head>
    
    <title>
    Titolo
    </title>
    
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    	
    </head>
    
    <body>
    <?php
    
    
    $host="localhost";
    $username="user";
    $password="password";
    $db_name="db";
    $tbl_name="membri";
    
    @mysql_connect("$host", "$username", "$password")or die("cannot connect");
    
    @mysql_select_db("$db_name")or die("cannot select DB");
    
    $myusername=$_POST['myusername'];
    $mypassword=$_POST['mypassword'];
    
    $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
    
    $result = mysql_query($sql);
    
    $count = mysql_num_rows($result);
    
    if($count==1){
    
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $mypassword;
    
    header('location: login_success.php', true);
    } else {
    echo "Attenzione username o password errati"; }
    ?>
    
    </body>
    </html>
    Io non vedo errori (sarà che non sono molto esperto nell'uso delle sessioni), spero possiate aiutarmi...
    {}\"$y|\/|0"/{}

  10. #10
    bello e che tagliato...

    il doctype e tutto l'html va messo a seguire header location... e che serve ad un tubazzo se fai il redirect.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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