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 7 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 7 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 7 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 7 anni fa
Gianni Tomasicchio
X 0 X

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

risposto 7 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 7 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 7 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 7 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 7 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 7 anni fa
scooby1574
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda