Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [PHP + MySql] Login

  1. #1

    [PHP + MySql] Login

    Salve ragazzi stavo costruendo un sito,ma mi son bloccato in alcuni punti.
    Registrando un nuovo utente al sito non ci sono problemi,visto che i dati inseriti nei form, vengono correttamente inviati al DB.

    Il problema è il Login dell'utente,non riesco a gestire il login tramite sessioni.
    Mi potete gentilmente dare una mano??

    Ecco il codice per il login:
    codice:
    <HTML>
    <HEAD>
    <TITLE>Login</TITLE>
    </HEAD>
    <BODY>
    <center>
    
       
              
        <td>[img]../img/home.png[/img]</td>
        <td>[img]../img/registrati.png[/img]</td>
        <td>[img]../img/login.png[/img]</td>
        <td>[img]../img/modwii.png[/img]</td>
        <td>[img]../img/router.png[/img]</td>
        <td>[img]../img/shop.png[/img]</td>
    
    <hr>
    
    
    <table border="0" cellspacing="1" cellpadding="0" width="300" align="center" bgcolor="#cccccc"><tbody>
    <tr><form action="checklogin.php" method="post"> <input name="phpMyAdmin" type="hidden" value="V0N0db6Fl62QWr6eBkly75xAGn3" /><td>
    <table border="0" cellspacing="1" cellpadding="3" width="100%" bgcolor="#ffffff"><tbody>
    <tr>
    <td colspan="3">Login</td>
    </tr>
    <tr>
    <td width="78">Username</td>
    <td width="6">:</td>
    <td width="294"><input id="myusername" name="myusername" type="text" /></td>
    </tr>
    <tr>
    <td>Password</td>
    <td>:</td>
    <td><input id="mypassword" name="mypassword" type="password" /></td>
    </tr>
    <tr>
    <td></td>
    <td></td>
    <td><input name="Submit" type="submit" value="Login" /></td>
    </tr>
    </tbody></table>
    </td>
    </form></tr>
    </tbody></table> 
    </center>
    </BODY>
    </HTML>
    Questo è il controllo per il login:
    codice:
    <?php
    session_start();
    $_SESSION['myusername']=$_POST['myusername'];
    $_SESSION['mypassword']=$_POST['mypassword'];
    
    $host="localhost"; // Hostname
    $username="root"; // Mysql username
    $password=""; // Mysql password
    $tbl_name="utenti"; // Nome della Tabella
    $db_name="login"; //Nome del Database
    // Procedimento per connettersi al Database
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");
    // Nome utente e password inviate attraverso il form
    $myusername=$_POST['myusername'];
    $mypassword=$_POST['mypassword'];
    $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
    $result=mysql_query($sql);
    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count==1){
    header("location:..//cod/login_success.php");
    }
    else {
    echo "Attenzione username o password errati";
    }
    ?>
    Mentre questo è lo script che dovrei mettere per far in modo che la pagina venga visualizzata solamente dall'utente che ha eseguito l'accesso:
    codice:
    <HTML>
    <HEAD>
    <TITLE>Login</TITLE>
    </HEAD>
    <BODY>
    <center>
    
       
              
        <td>[img]../img/home.png[/img]</td>
        <td>[img]../img/registrati.png[/img]</td>
        <td>[img]../img/login.png[/img]</td>
        <td>[img]../img/modwii.png[/img]</td>
        <td>[img]../img/router.png[/img]</td>
        <td>[img]../img/shop.png[/img]</td>
    <hr>
    
    
    
    <?
    session_start();
    if($_SESSION['myusername'] = 'myusername'){
    echo('Login successful');
    }
    ?>
    
    </center>
    </BODY>
    </HTML>
    Grazie Mille Marco

  2. #2
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Ciao. Ho notato subito un errore di sintassi in questo codice:
    Codice PHP:
    <HTML>
    <HEAD>
    <TITLE>Login</TITLE>
    </HEAD>
    <BODY>
    <center>

       
              
        <td>[url="../index.php"][img]../img/home.png[/img][/url]</td>
        <td>[url="../cod/reg.php"][img]../img/registrati.png[/img][/url]</td>
        <td>[url="../cod/main_login.php"][img]../img/login.png[/img][/url]</td>
        <td>[url="../cod/modwii.php"][img]../img/modwii.png[/img][/url]</td>
        <td>[url="../cod/router.php"][img]../img/router.png[/img][/url]</td>
        <td>[url="../cod/shop.php"][img]../img/shop.png[/img][/url]</td>
    <hr>



    <?
    session_start
    ();
    if(
    $_SESSION['myusername'] = 'myusername'){
    echo(
    'Login successful');
    }
    ?>

    </center>
    </BODY>
    </HTML>
    Hai scritto: if($_SESSION['myusername'] = 'myusername'){
    Invece di: if($_SESSION['myusername'] == 'myusername'){

    Poi comunque è poco sicura la tua gestione del login. Le sessioni ti conviene memorizzarle dopo che hai verificato la correttezza dei dati con: if($count==1){
    Inoltre la password ti conviene criptarla con md5() e memorizzarla, sia nel database sia nelle sessioni, già criptata.


  3. #3
    Costi ma la sessione la devo inserire prima dell'HTML? Oppure và bene lì??

  4. #4
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Allora, quando controlli se l'utente è loggato fai così:
    Codice PHP:
    <?
    session_start
    ();
    if (isset(
    $_SESSION['myusername']) && isset($_SESSION['mypassword'])) {
    echo 
    'Login successful';
    }
    ?>
    Mentre quando invece l'utente effettua il login e devi memorizzare le sessioni usa questo codice modificato:
    Codice PHP:
    <?php
    $host 
    "localhost"// Hostname
    $username "root"// Mysql username
    $password ""// Mysql password
    $tbl_name "utenti"// Nome della Tabella
    $db_name "login"//Nome del Database

    // Procedimento per connettersi al Database
    mysql_connect("$host""$username""$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");

    // Nome utente e password inviate attraverso il form
    $myusername = (isset($_POST['myusername'])) ? $_POST['myusername'] : '';
    $mypassword = (isset($_POST['mypassword'])) ? $_POST['mypassword'] : '';
    // aggiungo eventuali slash se non sono presenti in modo da evitare le sql injection
    $myusername = (!get_magic_quotes_gpc()) ? addslashes($myusername) : $myusername;
    $mypassword = (!get_magic_quotes_gpc()) ? addslashes($mypassword) : $mypassword;
    // cripto la password con md5()
    $mypassword md5($mypassword);

    // controllo se l'utente con tale username e password esiste.
    // Attenzione: la password salvata nel database dev'essere anch'essa stata criptata in precedenza con md5 al momento della registrazione dell'utente.
    $sql "SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
    $result mysql_query($sql);
    // Mysql_num_row is counting table row
    $count mysql_num_rows($result);

    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count == 1){
        
    // L'utente con quell'username e quella password esiste allora salvo la sessione
        
    session_start();
        
    $_SESSION = array();
        
    session_regenerate_id();
        
    $_SESSION['myusername'] = $myusername;
        
    $_SESSION['mypassword'] = $mypassword;

        
    header("location:..//cod/login_success.php");
        exit;
    }
    else {
        echo 
    "Attenzione username o password errati";
    }
    ?>

  5. #5
    Costi grazie mille per il supporto, ma dopo aver sostituito il codice,appena faccio il login mi viene restituito sempre: "Attenzione username o password errati"

    Molto strano visto che il codice mi sembrava tutto ok...

  6. #6
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    La password memorizzata nel database è criptata con md5? Se non lo è, apri php my admin, seleziona il database "login" ed esegui la query:
    UPDATE utenti SET password=MD5(password)

    Poi anche nella pagina di registrazione di un utente (se ne hai creata una) prima di inserire il nuovo utente devi criptare la sua password con md5 e salvarla criptata.

  7. #7
    Inserita la query su PhpMyAdmin,Password criptata anche alla registrazione.
    Adesso una pagina riservata solamente agli utente registrati e poi loggati dovrebbe essere così:

    Codice PHP:
    <? session_start(); if (isset($_SESSION['myusername']) && isset($_SESSION['mypassword'])) { echo 'Login successful'; } ?>   <html>     <head>             <title>Config Router</title>     </head> <body> <center> 
                      <td>[url="../index.php"][img]../img/home.png[/img][/url]</td>     <td>[url="../cod/reg.php"][img]../img/registrati.png[/img][/url]</td>     <td>[url="../cod/main_login.php"][img]../img/login.png[/img][/url]</td>     <td>[url="../cod/modwii.php"][img]../img/modwii.png[/img][/url]</td>     <td>[url="../cod/router.php"][img]../img/router.png[/img][/url]</td>     <td>[url="../cod/shop.php"][img]../img/shop.png[/img][/url]</td>     <td>[url="../cod/logout.php"][img]../img/logout.png[/img][/url]</td> <hr> 
      <h1>Il mio nome è marco!</h1>   </center> </body> </html>
    Ma la pagina viene visualizzata anche se l'utente non è loggato...Perchè??Dove sbaglio??
    Grazie Mille

  8. #8
    UP

  9. #9
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Originariamente inviato da elricmarci
    Inserita la query su PhpMyAdmin,Password criptata anche alla registrazione.
    Adesso una pagina riservata solamente agli utente registrati e poi loggati dovrebbe essere così:

    Codice PHP:
    <? session_start(); if (isset($_SESSION['myusername']) && isset($_SESSION['mypassword'])) { echo 'Login successful'; } ?>   <html>     <head>             <title>Config Router</title>     </head> <body> <center> 
                      <td>[url="../index.php"][img]../img/home.png[/img][/url]</td>     <td>[url="../cod/reg.php"][img]../img/registrati.png[/img][/url]</td>     <td>[url="../cod/main_login.php"][img]../img/login.png[/img][/url]</td>     <td>[url="../cod/modwii.php"][img]../img/modwii.png[/img][/url]</td>     <td>[url="../cod/router.php"][img]../img/router.png[/img][/url]</td>     <td>[url="../cod/shop.php"][img]../img/shop.png[/img][/url]</td>     <td>[url="../cod/logout.php"][img]../img/logout.png[/img][/url]</td> <hr> 
      <h1>Il mio nome è marco!</h1>   </center> </body> </html>
    Ma la pagina viene visualizzata anche se l'utente non è loggato...Perchè??Dove sbaglio??
    Grazie Mille
    Tu non hai fatto in modo che se l'utente non è loggato la pagina non venga visualizzata. Tu hai fatto solo che se l'utente ha effettuato il login compare il messaggio "Login successful".

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.