Visualizzazione risultati 1 fino 14 di 14

Discussione: Conferma password non funzionante

  1. #1
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Exclamation Conferma password non funzionante

    Ciao a tutti.
    Ho provato a creare un form di registrazione inserendo la conferma della password inserita, ma senza riuscirci.
    Ho due pagine: Registrazione.php e Dati_inseriti.php
    In registrazione.php ho un form che contiene le due passeord:
    Codice HTML:
    <div id="password" onmouseover="mostra(this.id)" onmouseout="nascondi(this.id)">
    <br />Password - <span class="author_createdate Stile6">max 20 caratteri</span>
    <br /><input name="pass" type="password" id="password" maxlength="20">
    </div>
    <div id="confermapassword" onmouseover="mostra(this.id)" onmouseout="nascondi(this.id)">
    <br />Conferma password
    <br /><input name="confpass" type="password" id="confpassword" maxlength="20">
    </div>
    seguito ovviamente dal bottone
    Codice HTML:
    <input name="Submit" type="submit" class="button" value="Registrati">
    Il problema è nel file Dati_inseriti:
    Codice PHP:
    <?php
    require('connessionedb.php');
    $user = mysql_real_escape_string($_POST['user']);
    $pass = mysql_real_escape_string(md5($_POST['pass']));
    $confpass = mysql_real_escape_string(md5($_POST['confpass']));
    //utente nel database
    $query = "SELECT * FROM user " .
    "WHERE user_username = '$user' " .
    "OR user_email = '$pass' ";
    $result = mysql_query($query) or die (mysql_error());
    if (
    $user == " ") {
    header("location:../../Registrazione.php");
    }
    else
    {
    if (
    mysql_num_rows($result) != 0)
    {
    while (
    $row = mysql_fetch_array($result))
    {
    //QUI È IL PROBLEMA ----------------------------------------------------------------
    //conferma password errata
    if ("$pass" != "$confpass")
    {
    echo
    "<p>";
    echo
    "&nbsp;Le due password non coincidono.";
    echo
    "</p>";
    }
    //username già presente nel db
    if ($row['user_username'] == $user)
    {
    echo
    "<p>";
    echo
    "&nbsp;L'username, <b>" . $row['user_username'] . "</b> è già in uso da un altro utente, scegliere uno diverso";
    echo
    "</p>";
    }
    //email già presente nel db
    if ($row['user_email'] == $_POST['email'])
    {
    echo
    "<p>";
    echo
    "&nbsp;La casella E-mail, <b>" . $row['user_email'] . "</b> è già presente nel Data Base, scegliere una diversa";
    echo
    "</p>";
    }
    }
    //rimandiamo l'utente alla pagina precedente
    echo "<p>";
    echo
    "<a href=\"../../Registrazione.php\">";
    echo
    "Clicca qui per tornare alla registrazione";
    echo
    "</a>";
    echo
    "</p>";
    }
    //Se invece username e email non sono presenti nel db procediamo con l'inserimanto
    else
    {
    /* inserisco dati nel database e le solite cose */
    }
    ?>
    Quindi ecco che succede:
    se l'E-Mail o l'username è già presente e le password non coincidono, vengono stampati tutti gli errori, compreso quello della password non coincidente.
    Se l'E-Mail che non coincide è l'unico errore, lo "lascia andare" e senza nemmeno stampare l'errore procede con l'inserimento dei dati nel database... perché?
    Grazie.

  2. #2
    Guest

    Predefinito

    Codice:
     "OR user_email = '$pass' ";
    Hai sbagliato la query

  3. #3
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie mille per la risposta, ma come lo devo modificare?
    Ho provato con "OR user_email = '$mail' "; dove $mail = $_POST['email'];
    ma c'è sempre lo stesso errore.
    Grazie.
    Ultima modifica di radiodelmomento : 27-05-2011 alle ore 21.25.26

  4. #4
    Guest

    Predefinito

    Io $mail però non la vedo valorizzata come la variabile per l'username e la password!


  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Codice:
     "OR user_email = '$pass' ";
    Hai sbagliato la query

    Anche alcune if..

    Codice PHP:
    if ($user == " ") {
    Hai lasciato uno spazio tra i due apici, quindi se l' username è vuoto lo accetta.

    Codice PHP:
    if ("$pass" != "$confpass")
    Alle variabili non si mettono gli apici o vengono prese come stringhe (o almeno credo) quindi saranno sempre diverse.

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Citazione Originalmente inviato da suppliers Visualizza messaggio
    Alle variabili non si mettono gli apici o vengono prese come stringhe (o almeno credo) quindi saranno sempre diverse.
    Teoricamente non si mettono, ma i doppi apici sostituiscono il valore della variabile nella stringa, quindi quello va bene...

    Ciao!

  7. #7
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Unhappy

    Grazie mille, avete detto tutti e tre una cosa diversa...
    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Io $mail però non la vedo valorizzata come la variabile per l'username e la password!
    Citazione Originalmente inviato da suppliers Visualizza messaggio
    Alle variabili non si mettono gli apici
    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    va bene
    Mitico!

    Citazione Originalmente inviato da suppliers Visualizza messaggio
    Hai lasciato uno spazio tra i due apici, quindi se l'username è vuoto lo accetta.
    Codice PHP:
    if ($user == " ") {
    header("location:../../Registrazione.php");
    }
    Se il campo user è vuoto (cosa impossibile perché un alert non lo fa continuare) riporta l'utente alla registrazione, dove inserirà di nuovo i suoi dati.
    Comunque l'ho modificato così:
    Codice PHP:
    if ($user == NULL) {
    header("location:../../Registrazione.php");
    }
    Alla fine comunque non ho capito cosa devo fare...

  8. #8
    Guest

    Predefinito

    Puoi postare il codice PHP che hai ora dopo queste nostre osservazioni?

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Allora:

    Ovviamente
    Codice:
    "OR user_email = '$pass' ";
    Non va bene, perché controlli l'email con la password.
    Quindi, dovresti fare una cosa come:
    Codice PHP:
    [...]
    $email = mysql_real_escape_string($_POST['email']);
    //utente nel database
    $query = "SELECT * FROM user " .
    "WHERE user_username = '$user' " .
    "OR user_email = '$email' ";
    [...]
    Però, nel <form> controlla che ci sia il campo email.

    ----

    Se il campo user è vuoto (cosa impossibile perché un alert non lo fa continuare)
    Se l'utente ha javascript disabilitato?


    Per l'if, la cosa migliore sarebbe usare la funzione empty() e isset() direttamente su $_POST['user'] prima della riga:
    Codice PHP:
    $user = mysql_real_escape_string($_POST['user']);
    in questo modo:
    Codice PHP:
    if((!isset($_POST['user'])) || empty($_POST['user']))
    header("location:../../Registrazione.php");
    Ciao!
    Ultima modifica di alemoppo : 28-05-2011 alle ore 14.44.14

  10. #10
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie ma mi da ancora lo stesso errore.
    Nel form di registrazione ci sono: username, password, conferma password, nome cognome ed E-Mail.
    Codice PHP:
    <?php
    require('connessionedb.php');
    $user = mysql_real_escape_string($_POST['user']);
    $user_mail = $_POST['user'];
    $pass = mysql_real_escape_string(md5($_POST['pass']));
    $pass_mail = $_POST['pass'];
    $confpass = mysql_real_escape_string(md5($_POST['confpass']));
    $firstname = mysql_real_escape_string($_POST['firstname']);
    $lastname = mysql_real_escape_string($_POST['lastname']);
    //Poi verifichiamo che l'username e l'email non siano gia presenti nel db
    $email = mysql_real_escape_string($_POST['email']);
    $query = "SELECT * FROM user " .
    "WHERE user_username = '$user' " .
    "OR user_email = '$email' ";
    $result = mysql_query($query) or die (mysql_error());
    if((!isset(
    $_POST['user'])) || empty($_POST['user'])){
    header("location:../../Registrazione.php");
    }
    else
    {
    if (
    mysql_num_rows($result) != 0)
    {
    while (
    $row = mysql_fetch_array($result))
    {
    //conferma password errata
    if ($pass != $confpass)
    {
    echo
    "<p>";
    echo
    "&nbsp;Le due password non coincidono.";
    echo
    "</p>";
    }
    //username già presente nel db
    if ($row['user_username'] == $user)
    {
    echo
    "<p>";
    echo
    "&nbsp;L'username, <b>" . $row['user_username'] . "</b> è già in uso da un altro utente, scegliere uno diverso";
    echo
    "</p>";
    }
    //email già presente nel db
    if ($row['user_email'] == $_POST['email'])
    {
    echo
    "<p>";
    echo
    "&nbsp;La casella E-mail, <b>" . $row['user_email'] . "</b> è già presente nel Data Base, scegliere una diversa";
    echo
    "</p>";
    }
    }
    //rimandiamo l'utente alla pagina precedente
    echo "<p>";
    echo
    "<a href=\"../../Registrazione.php\">";
    echo
    "Clicca qui per tornare alla registrazione";
    echo
    "</a>";
    echo
    "</p>";
    }
    else
    {
    //INSERIMENTO DATI NEL DATABASE
    }
    ?>
    Grazie ancora.

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Provalo così:

    Codice PHP:
    <?php
    require('connessionedb.php');

    if((!isset(
    $_POST['user'])) || empty($_POST['user'])) //dovresti far in questo modo anche con tutti gli altri parametri
    header("location:../../Registrazione.php");

    $user = mysql_real_escape_string($_POST['user']);
    $pass = mysql_real_escape_string(md5($_POST['pass']));
    $confpass = mysql_real_escape_string(md5($_POST['confpass']));
    $firstname = mysql_real_escape_string($_POST['firstname']);
    $lastname = mysql_real_escape_string($_POST['lastname']);
    $email = mysql_real_escape_string($_POST['email']);


    //verifichiamo che le password coincidano:
    //conferma password errata
    if ($pass != $confpass)
    {
    echo
    "<p>";
    echo
    "&nbsp;Le due password non coincidono.";
    echo
    "</p>";

    //rimandiamo l'utente alla pagina precedente
    echo "<p>";
    echo
    "<a href=\"../../Registrazione.php\">";
    echo
    "Clicca qui per tornare alla registrazione";
    echo
    "</a>";
    echo
    "</p>";
    die();
    }

    //Poi verifichiamo che l'username e l'email non siano gia presenti nel db
    $query = "SELECT * FROM user " .
    "WHERE user_username = '$user' " .
    "OR user_email = '$email' ";
    $result = mysql_query($query) or die (mysql_error());

    if (
    mysql_num_rows($result) != 0)
    {
    $row = mysql_fetch_array($result); //teoricamente non possono esserci più utenti registrati con quel nome, quindi il while() non è necessario

    //username già presente nel db
    if ($row['user_username'] == $user)
    {
    echo
    "<p>";
    echo
    "&nbsp;L'username, <b>" . $row['user_username'] . "</b> è già in uso da un altro utente, scegliere uno diverso";
    echo
    "</p>";
    }
    //email già presente nel db
    if ($row['user_email'] == $_POST['email'])
    {
    echo
    "<p>";
    echo
    "&nbsp;La casella E-mail, <b>" . $row['user_email'] . "</b> è già presente nel Data Base, scegliere una diversa";
    echo
    "</p>";
    }

    //rimandiamo l'utente alla pagina precedente
    echo "<p>";
    echo
    "<a href=\"../../Registrazione.php\">";
    echo
    "Clicca qui per tornare alla registrazione";
    echo
    "</a>";
    echo
    "</p>";
    }
    else
    {
    //INSERIMENTO DATI NEL DATABASE
    }
    ?>
    Ciao!

  12. #12
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Però utilizzando questo metodo se ad esempio un utente usa lo stesso nome spunta solo che le password non coincidono, invece nell'altro modo spuntavano TUTTI gli errori.
    Comunque nel tuo modo funziona :-)

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Ovviamente puoi modificare lo script!
    Se vuoi vedere tutti gli errori, ad esempio puoi fare:

    Codice PHP:
    <?php
    require('connessionedb.php');

    if((!isset(
    $_POST['user'])) || empty($_POST['user'])) //dovresti far in questo modo anche con tutti gli altri parametri
    header("location:../../Registrazione.php");

    $user = mysql_real_escape_string($_POST['user']);
    $pass = mysql_real_escape_string(md5($_POST['pass']));
    $confpass = mysql_real_escape_string(md5($_POST['confpass']));
    $firstname = mysql_real_escape_string($_POST['firstname']);
    $lastname = mysql_real_escape_string($_POST['lastname']);
    $email = mysql_real_escape_string($_POST['email']);

    $errore = 0;

    //verifichiamo che le password coincidano:
    //conferma password errata
    if ($pass != $confpass)
    {
    $errore = 1;
    echo
    "<p>";
    echo
    "&nbsp;Le due password non coincidono.";
    echo
    "</p>";
    }

    //Poi verifichiamo che l'username e l'email non siano gia presenti nel db
    $query = "SELECT * FROM user " .
    "WHERE user_username = '$user' " .
    "OR user_email = '$email' ";
    $result = mysql_query($query) or die (mysql_error());

    if (
    mysql_num_rows($result) != 0)
    {
    $errore = 1;
    $row = mysql_fetch_array($result); //teoricamente non possono esserci più utenti registrati con quel nome, quindi il while() non è necessario

    //username già presente nel db
    if ($row['user_username'] == $user)
    {
    echo
    "<p>";
    echo
    "&nbsp;L'username, <b>" . $row['user_username'] . "</b> è già in uso da un altro utente, scegliere uno diverso";
    echo
    "</p>";
    }
    //email già presente nel db
    if ($row['user_email'] == $_POST['email'])
    {
    echo
    "<p>";
    echo
    "&nbsp;La casella E-mail, <b>" . $row['user_email'] . "</b> è già presente nel Data Base, scegliere una diversa";
    echo
    "</p>";
    }
    }

    if(
    $errore)
    {
    //rimandiamo l'utente alla pagina precedente
    echo "<p>";
    echo
    "<a href=\"../../Registrazione.php\">";
    echo
    "Clicca qui per tornare alla registrazione";
    echo
    "</a>";
    echo
    "</p>";
    }
    else
    {
    //INSERIMENTO DATI NEL DATABASE
    }
    ?>
    ..Però quello che pensavo io è che, visto che utilizzi mysql e (credo) hai le query limitate, se le password non sono uguali (password e conferma_password), è inutle continuare utilizzando una query!... non credi?

    Ciao!
    Ultima modifica di alemoppo : 28-05-2011 alle ore 17.04.35

  14. #14
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Dai... non si può avere tutto nella vita: bisogna pur accontentarsi.
    Grazie per la vostra collaborazione, ho risolto l'errore principale e adesso posso continuare.
    Metterò solo quell'errore se i campi sono diversi.
    Se invece sono uguali procederò con un else con gli altri errori.
    Grazie ancora, problema risolto.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •