problema con codifica md5 o sha1

Ciao  ho questo piccolo problema ho creato due pagine una di inserimento utenti con password e l'altra classica di login,  la prima funziona senza nessun tipo di incoveniente mi inserisce tutti i dati nel database, il problema nasce se uso i metodi di encripting,  ovvero quando nella pagina di login tento di richiamare l'utente mi dice che ho non trova l'utente o la password è sbagliata o provato a fare un inserimento senza nessun tipo di encripting ed in questo modo l'utente viene riconosciuto senza nessun problema.

Questo è il codice della pagine di login :

if (!isset($_GET["menuid"]))

   {

      $IdMenu = "";

      $Nome_Menu = "HomePage";

      $PosMenu = 0;

   }

   else

   {

      $IdMenu = $_GET["menuid"];   

   }

   if (isset($_POST["submit"]))

   {

      $Usr = $_POST['Utente'];

      $Pwd =md5( $_POST['Password']);

      $query = "SELECT ID,Username FROM tblutenti ";

      $query .= "WHERE Username = '{$Usr}' ";

      $query .= "AND Password = '{$Pwd}'";

      $Risultato = mysql_query($query, $conn);

      if (!$Risultato)

        {

              die("La tabella selezionata non esiste " . mysql_error());

        }

      if (mysql_num_rows($Risultato) == 1)

      {

         //Ricerca utente andata a buon fine

         $messaggio = "Utente trovato login effettuato";

         $trovato   = mysql_fetch_array($Risultato);

      }

      else

      {

         //Ricerca non riuscita

         $messaggio = "Utente e/o password errati".mysql_error();

questo è il codie della pagina inserimento utente:

<?php

   if (!isset($_GET["menuid"]))

   {

      $IdMenu = "";

      $Nome_Menu = "HomePage";

      $PosMenu = 0;

   }

   else

   {

      $IdMenu = $_GET["menuid"];   

   }

   if (isset($_POST["submit"]))

   {

      $errori=array();

      if (!isset($_POST['Utente']) || empty($_POST['Utente']))

      {

         $errori[]='Utente';

      }

      if (!isset($_POST['Password']) || empty($_POST['Password']))

      {

         $errori[]='Password';

      }

      if (!empty($errori))

      {

         $messaggio = "Errore nella compilazione dei campi del form";

      }

      else

      {

         $Usr = $_POST['Utente'];

         $Pwd =md5($_POST['Password']);

         $query = "INSERT INTO tblutenti ";

         $query .= "(Username, Password) ";

         $query .= " values ('" . $Usr ."', '" . $Pwd . "')";

         $Risultato = mysql_query($query, $conn);

         if (mysql_affected_rows() == 1)

         {

            //Update andato a buon fine

            $messaggio = "Nuovo utente inserito";

         }

         else

         {

            //Update non riuscito

            $messaggio = "Inserimento non riuscito";

            $messaggio .= "<br/>" . mysql_error();

         }

      }            

   }   

?>

grazie a tutti

 :bye:

inviato 11 anni fa
scooby1574
X 0 X

Non hai utenti "doppioni" vero?

Quando inserisci il nome utente e la password per il login di quest'ultimo, nel database è criptata vero?

risposto 11 anni fa
Mario Santagiuliana
X 0 X

No nessun doppione e la password è criptata al livello di form ovvero appaino o gli asterischi o i pallini a seconda del browser che uso

 a livello di database  i dati inseriti compaiono cosi:

    ID    Username    Password

   Modifica    Elimina    1    Stefano    d012f68144ed0f121d3cc330a17eec ( questa fatta con enconding sha1)

   Modifica    Elimina    3    Francesco    6279886fde090b3038f267098bcca7(questa fatta con enconding sha1)

   Modifica    Elimina    4    roberto    pinco ( questa è la prova fatta senza nessun enconding ed è l'unica che viene riconosciuta dalla pagina login.php)

   Modifica    Elimina    5    Marco    f5888d0bb58d611107e11f7cbc41c9 (questa con md5)

tutte le altre

risposto 11 anni fa
scooby1574
X 0 X

Nello script di login metti un "echo" per stampare l'md5 della password inserita dall'utente. Potrebbe servire per capire dov'è il problema.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

ciao gianni devo scrivere echo md5; scusa ma nn ho capito

risposto 11 anni fa
scooby1574
X 0 X

Qui:

else

      {

         //Ricerca non riuscita

         $messaggio = "Utente e/o password errati".mysql_error();

Fai così temporaneamente:

else
      {
         //Ricerca non riuscita
         $messaggio = "Utente e/o password errati".mysql_error()." password_md5: ".$Pwd;

Se ti salta fuori l'errore dell'utente o password errati allora puoi confrontare la password criptata con quella presente nel database.

risposto 11 anni fa
Mario Santagiuliana
X 0 X

oppure appena dopo:

$Pwd =md5( $_POST['Password']);

puoi mettere un:

echo $Pwd;

Così saprai cosa stai cercando sul DB

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

ho fatto come dici tu ho messo la funzione echo per vedere cosa stampava:

 impostando come prova nome utente pippo  e password pippo

nel database migenere il seguenti valori :

ID    Username          Password 10    pippo                   d012f68144ed0f121d3cc330a17eec

mentre nalle pagina di login ho il seguente risultato:

 Username          Password  pippo                 d012f68144ed0f121d3cc330a17eec528c2e7d59

 per cui le due password non corrispondono

 :bye:

risposto 11 anni fa
scooby1574
X 0 X

Le password corrispondono ma nel database viene tagliata...

Che tipo di campo hai impostato nel database per la password?

Dovresti provare ad aumentare il numero di caratteri consentiti.

risposto 11 anni fa
Mario Santagiuliana
X 0 X

si ho visto sempre il solito problema sto seguendo quel cavolo di cd per imparare a fare i database ed i siti mi aveva fatto impostare una larghezza base di 30, quando aveva creato il database e quindi mi troncava il dato ora ho messo 60 è va tutto

grazie :bye:

risposto 11 anni fa
scooby1574
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda