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

    validazione username e password

    Salve,
    sto realizzando una semplice pagina con un controllo su username e password. La connessione a db sembra vada bene, il problema mi sembra essere la validazione: sia che scriva dati sbagliati sia che scriva quelli corretti si visualizza solo la pagina d'errore.
    Fornisco il codice:sapete aiutarmi?? Grazie mille. Emiliano

    <?php
    $server="localhost";
    $utente="emiliano";
    $password="emiliano";
    $database="videoteca";
    $tabella="utenti";

    $conn=mysql_connect($server,$utente,$password) or die ("impossibile connettersi a server");
    $db=mysql_select_db($database,$conn) or die ("impossibile connettersi a db");
    $sql="SELECT * FROM $tabella WHERE user='$username' AND pwd='$password'";
    $query=mysql_query($sql) or die ("impossibile recuperare dati dalla tabella");
    $numero=mysql_num_rows($query);

    if ($numero==1){
    echo "Area riservata: benvenuto
    ";
    echo "<a href=\"entra.html\"> torna all'inizio</a>";
    } else if ($numero ==0) {
    echo "dati non validi
    ";
    echo "<a href=\"home.php\">prova di nuovo</a>";
    }

    mysql_close ($conn);
    ?>

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Fai un echo di $sql e ti accorgerai del problema

    Altro consiglio: utilizza hash MD5 o simili e non salvare la password degli utenti in chiaro sul db. Cerca sul forum, se n'è parlato più volte.


    [.:: JaguarXF ::.]
    __________________

  3. #3
    Grazie...ma non riesco a seguirti: sono alle prime armi. Potresti essere un po' più esplicito? Mi puoi spiegare meglio il consiglio su hash MD5? Grazie ancora.

  4. #4
    Volevo precisare comunque che i dati iniziali sono quelli di connessione al server, mentre i dati username e password si riferiscono a due textbox di una prima pagina (home.php).
    Ho reso visibili i dati di connessione solo perchè quando utilizzo la sintassi:

    include(config.php);

    mi dà un errore che non riesco a capire. Eppure sto seguendo tutti i passi di un libretto per php e mysql...

  5. #5
    c'è qualcuno che mi può aiutare??

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    FORM LOGIN
    -------------------------
    Prepari un form di invio dati con username e password:

    codice:
    <form name="login" action="autentica.php" >
      username 
      <input type="text" name="username">
      
    
      
    
      password 
      <input type="text" name="pwd">
      
    
      
    
      <input type="submit" name="Submit" value="Invia">
    </form>

    PAGINA AUTENTICA.PHP
    -----------------------------------
    codice:
    <?php 
    session_start(); //..avviamo la sessione
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Login</title> 
    </head>
    <body leftmargin="0" topmargin="0">
    <?
    $db = mysql_connect("localhost", "tua_user", "tua_pass") or die ("Impossibile Connettersi: " . mysql_error()); 
    mysql_select_db("centerbase",$db);
    
    $username = $_POST ['username']; //Otteniamo l'username 
    $password = $_POST ['pwd']; //Otteniamo la password 
    
    $query = "SELECT * FROM utenti WHERE username = '$username'"; //Impostiamo la query... 
    $risultato = mysql_query($query); 
    $riga = mysql_fetch_array($risultato); 
    
    if(mysql_num_rows($risultato) == 0 || $riga['pwd'] != $password) //Se l'username o la password sono sbagliati 
    { 
    die("Username e/o password errati[/b]
    Torna indietro</div>"); //..mandiamo l'errore e terminiamo lo script 
    } 
    else //Altrimenti...
    { 
    
    $HTTP_SESSION_VARS['username'] = $username; //...e salviamo i dati in essa 
    $HTTP_SESSION_VARS['password'] = $password; 
    
    header("Location: riservata.php");
    
    }  
    mysql_close(); 
    
    ?>
    </body> 
    </html>

    PAGINA RISERVATA.PHP
    ------------------------------------
    codice:
    <?php 
    session_start(); //..avviamo la sessione
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Login</title> 
    </head>
    <body leftmargin="0" topmargin="0">
    Questa è la pagina riservata...
    </body> 
    </html>
    -------------------------------------

    Perlomeno è un inizio.. studiati le sessioni per fare il logout e poi pensa a come potrebbe essere la registarzione di nuovi utenti.
    Per il DB a parte id_utente autoincrement e Primary gli altri 2 campi sono username e pwd di 10 char.

    Spero di esserti stato utile.
    Ciaooo

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    Ti metto anche il DB

    codice:
     -- 
    -- Struttura della tabella `utenti`
    -- 
    
    CREATE TABLE `utenti` (
      `id_utente` int(11) NOT NULL auto_increment,
      `username` char(10) NOT NULL default '',
      `pwd` char(10) NOT NULL default '',
      PRIMARY KEY  (`id_utente`)
    );
    ciao

  8. #8
    Ciao "Ardand",
    l'esempio che mi hai fornito mi è chiaro eccetto che per alcuni punti. A parte le sessioni, che mi studierò per bene...riporto alcuni parti del codice che non ho capito. Grazie dell'aiuto.


    <?
    $db = mysql_connect("localhost", "tua_user", "tua_pass") or die ("Impossibile Connettersi: " . mysql_error());
    mysql_select_db("centerbase",$db);

    $username = $_POST ['username']; //Otteniamo l'username
    $password = $_POST ['pwd']; //Otteniamo la password
    La funzione post richiama il valore inserito nel campo del form?

    Mi puoi spiegare la logica id questo passaggio?
    if(mysql_num_rows($risultato) == 0 || $riga['pwd'] != $password)

    Non ho capito infine il seguente comando
    header("Location: riservata.php");

    Grazie ancora. Emiliano

  9. #9
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Scusa ardand, ma che pagina riservata è quella se non c'è nemmeno un controllo??

    [.:: JaguarXF ::.]
    __________________

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    Si, scusa...

    nella prima riga di ogni pagina protetta devi inserire:

    codice:
    <? 
    session_start(); 
    //se la variabile di sessione non e' settata faccio un redirect alla pagina di login 
    if (!$_SESSION[username]) header("Location: login.php"); 
    ?>
    Così facendo stai dicendo che se non è settato nella sessione lo username allora vai a fare il Login.

    PER IL RESTO:
    ------------------
    username = $_POST ['username']; //Otteniamo l'username
    $password = $_POST ['pwd']; //Otteniamo la password
    La funzione post richiama il valore inserito nel campo del form?
    --------------------
    Certo! Se il form di Login ha metodo post per richiamare i dati che provengono dal form stesso devi riportarli nella pagina ricevente con il POST.

    --------------------
    Mi puoi spiegare la logica id questo passaggio?
    if(mysql_num_rows($risultato) == 0 || $riga['pwd'] != $password)
    --------------------

    if(mysql_num_rows($risultato) == 0
    // Se il numero di valori corrispondenti allo username è == a zero
    // e se
    $riga['pwd'] != $password
    // la pwd corrispondente all'username indicato e cioè presente a DB
    // è diversa da quella impostata dall'utente dal form ($password)

    allora si scaturiscono le 2 situazioni di Login OK oppure ripeti Login. Studiati gli ARRAY per comprendere i valori $riga[''].

    ----------------------
    Non ho capito infine il seguente comando
    header("Location: riservata.php");
    ----------------------
    Semplicemente sto facendo un redirect alla pagina riservata.php se il Login è corretto. se scrivi appunto:
    header("Location: tua_pagina.php");
    allora l'utente verrà trasferito subito a quella pagina.

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.