Visualizzazione risultati 1 fino 7 di 7

Discussione: Problema con un form

  1. #1
    Guest

    Predefinito Problema con un form

    salve a tutti,nel sito ke sto creando ho messo un login e anche il form per farsi mandare un'email in caso di smarrimento della password,quello ke volevo fare adesso era un form per cambiare la password
    L'ho creato in modo ke per cambiare password bisogna postare la vecchia password,se questa corrisponde a quella vecchia salvata nel db e se quella nuova corrisponde(la faccio scrivere due volte per essere certi ke sia giusta) allora aggiorno la vecchia password con quella nuova
    Fin qui niente di strano,il problema arriva quando uso il form:in pratica mi dice ke le modifiche sono state effettuate ma poi quando vado a fare il login mi dice ke la password è sbagliata,scrivendo quella vecchia invece mi fa entrare
    Vi posto il codice così ke possiate capire meglio:

    Codice PHP:
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <div align=center><table border="0">
    <tr><td>Vecchia password:</td><td>
    <input type="password" name="password" maxlength="60">
    </td></tr>
    <tr><td>Password:</td><td>
    <input type="password" name="newpass" maxlength="10">
    </td></tr>
    <tr><td>Ripeti Password:</td><td>
    <input type="password" name="newpass2" maxlength="10">
    </td></tr>
    <tr><th colspan=2><input type="submit" name="submit" value="Iscriviti"></th></tr></table>
    </form></div>
    <?
    $username
    = "gbtchiaravalle";
    $password = "mypassword";
    $host = "localhost";
    $database = "my_gbtchiaravalle";

    $db=mysql_connect($host, $username, $password) or die("Errore durante la connessione al database");
    mysql_select_db($database, $db) or die("Errore durante la selezione del database");
    if (isset(
    $_POST['submit'])) {

    //Mi assicuro che tutti i campi vengano riempiti
    if (!$_POST['password'] | !$_POST['newpass'] | !$_POST['newpass2']) {
    die(
    '<div align=center><font color=red>Non hai completato tutti i campi richiesti!</font></div>');
    }
    $password = $_POST['password'];
    $newpass = $_POST['newpass'];
    $newpass2 = $_POST['newpass2'];
    $passcheck = $_POST['password'];

    //cerco la vecchia password nel database
    $check= mysql_query ("SELECT password FROM users WHERE password = '$passcheck'") or die(mysql_error());
    //se la vecchia password corrisponde a quella postata e
    //verifico che le 2 nuove password da cambiare siano uguali
    if ($check == $_POST['password']) {
    die(
    'La password non corrisponde alla vecchia password');
    if (
    $_POST['newpass'] != $_POST['newpass2']) {
    die(
    '<div align=center><font color=red>La password non corrisponde!.</font></div>');
    }
    }
    //se sono uguali modifico la vecchia password con quella nuova
    $sql = "UPDATE users SET
    newpass ='
    $newpass' WHERE username='$password'";
    if (
    mysql_query($sql)) {
    die(
    '<div align=center><font color=red>Errore nel modificare la password</font></div>');
    }
    ?>
    Modifiche effettuate!
    <?php
    }
    ?>
    Questo ill codice vedete un pò dove sia l'errore ke io nn riesco proprio a vederlo!
    grazie per l'aiuto!
    Ultima modifica di gbtchiaravalle : 25-01-2008 alle ore 16.42.35

  2. #2
    Guest

    Predefinito

    Codice PHP:
    $check= mysql_query ("SELECT password FROM users WHERE password = '$passcheck'") or die(mysql_error());
    if (
    $check != $_POST['password']) {
    $check non contiene 'la password', ma tutte le righe estratte dalla tua query (che probabilmente dovrebbe essere una, m'immagino). Devi usare mysql_fetch_assoc() per prendere la prima riga estratta, prima di poter usare i valori:

    Codice PHP:
    $check= mysql_query ("SELECT password FROM users WHERE password = '$passcheck'") or die(mysql_error());
    $riga = mysql_fetch_assoc($check);
    if (
    $riga['password'] != $_POST['password']) {
    Comunque, sei sicuro che nella tabella 'users' la username è uguale alla password?
    Codice PHP:
    $sql = "UPDATE users SET
    newpass ='
    $newpass' WHERE username='$password'";

  3. #3
    Guest

    Predefinito

    su username è stata una dimenticanza dovevo correggere e scrivere password
    cmq ho corretto il codice come hai detto tu ma ho sempre lo stesso problema!
    ecco il nuovo codice:
    Codice PHP:
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <div align=center><table border="0">
    <tr><td>Vecchia password:</td><td>
    <input type="password" name="password" maxlength="60">
    </td></tr>
    <tr><td>Password:</td><td>
    <input type="password" name="newpass" maxlength="10">
    </td></tr>
    <tr><td>Ripeti Password:</td><td>
    <input type="password" name="newpass2" maxlength="10">
    </td></tr>
    <tr><th colspan=2><input type="submit" name="submit" value="Iscriviti"></th></tr></table>
    </form></div>
    <?
    $username
    = "gbtchiaravalle";
    $password = "mypassword";
    $host = "localhost";
    $database = "my_gbtchiaravalle";

    $db=mysql_connect($host, $username, $password) or die("Errore durante la connessione al database");
    mysql_select_db($database, $db) or die("Errore durante la selezione del database");
    if (isset(
    $_POST['submit'])) {

    //Mi assicuro che tutti i campi vengano riempiti
    if (!$_POST['password'] | !$_POST['newpass'] | !$_POST['newpass2']) {
    die(
    '<div align=center><font color=red>Non hai completato tutti i campi richiesti!</font></div>');
    }
    $password = $_POST['password'];
    $newpass = $_POST['newpass'];
    $newpass2 = $_POST['newpass2'];
    $passcheck = $_POST['password'];

    //cerco la vecchia password nel database
    $check= mysql_query ("SELECT password FROM users WHERE password = '$passcheck'") or die(mysql_error());
    $riga = mysql_fetch_assoc($check);
    //se la vecchia password corrisponde a quella postata e
    //verifico che le 2 nuove password da cambiare siano uguali
    if ($riga['password'] != $_POST['password']) {
    die(
    'La password non corrisponde alla vecchia password');
    if (
    $_POST['newpass'] != $_POST['newpass2']) {
    die(
    '<div align=center><font color=red>La password non corrisponde!.</font></div>');
    }
    }
    //se sono uguali modifico la vecchia password con quella nuova
    $sql = "UPDATE users SET
    newpass ='
    $newpass' WHERE password='$password'";
    if (
    mysql_query($sql)) {
    die(
    '<div align=center><font color=red>Errore nel modificare la password</font></div>');
    }
    ?>
    Modifiche effettuate!
    <?php
    }
    ?>

  4. #4
    Guest

    Predefinito

    Codice PHP:
    if ($riga['password'] != $_POST['password']) {
    die(
    'La password non corrisponde alla vecchia password');
    }
    if (
    $_POST['newpass'] != $_POST['newpass2']) {
    die(
    '<div align=center><font color=red>La password non corrisponde!.</font></div>');
    }
    Ho modificato un piccolo errore di logica nelle righe qua sopra. Ma non ha niente a che fare con il tuo problema.

    C'è qualcosa che non mi quadra. Tu salvi la nuova password nel campo newpass e non nel campo password. Ma quando fai il login, quale campo usi per fare il controllo? newpass o password?

  5. #5
    Guest

    Predefinito

    è sorto un'altro piccolo problema con un altro script:questo script permette la cancellazione dell'account sempre mettendo la vecchia password,se la password corrisponde viene cancellato tutto quello ke riguarda quell'utente e si effettua il logout solo ke questo volta mi da errore(sempre quello impostato da me) e nn cancella l'user
    ecco il codice:
    Codice PHP:
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <div align=center><table border="0">
    <tr><td>Password:</td><td>
    <input type="password" name="password" maxlength="60">
    </td></tr>
    </td></tr>
    <tr><th colspan=2><input type="submit" name="submit" value="Modifica"></th></tr></table>
    </form></div>
    <?
    $username
    = "gbtchiaravalle";
    $password = "mypassword";
    $host = "localhost";
    $database = "my_gbtchiaravalle";

    $db=mysql_connect($host, $username, $password) or die("Errore durante la connessione al database");
    mysql_select_db($database, $db) or die("Errore durante la selezione del database");
    if (isset(
    $_POST['submit'])) {
    if (!
    $_POST['password']) {
    die(
    '<div align=center><font color=red>Non hai completato tutti i campi richiesti!</font></div>');
    }
    $password = $_POST['password'];
    $passcheck = $_POST['password'];
    $check= mysql_query ("SELECT password FROM users WHERE password = '$passcheck'") or die(mysql_error());
    $riga = mysql_fetch_assoc($check);
    if (
    $riga['password'] != $_POST['password']) {
    die(
    '<div align=center><font color=red>La password non corrisponde alla vecchia password!</font></div>');
    }
    $sql = "DELETE FROM username,email,password WHERE password='$password'";
    if (!
    mysql_query($sql)) {
    die(
    '<div align=center><font color=red>Errore nel cancellare l\'utente</font></div>');
    }
    ?>
    //Effettuo il logout
    <?php
    $past
    = time() - 100;
    setcookie(ID_my_site, gone, $past);
    setcookie(Key_my_site, gone, $past);
    header("Location: login.php");
    ?>
    <?php
    }
    ?>
    </div>

  6. #6
    Guest

    Predefinito

    Per sapere perché la query ti dà un'errore, ti conviene visualizzare, oltre al messaggio tuo, anche il numero e messaggio d'errore di MySQL

    Codice PHP:
    if (!mysql_query($sql)) {
    die(
    '<div align=center><font color=red>Errore nel cancellare l\'utente : '.mysql_errno()." - ".mysql_error().'</font></div>');
    }

  7. #7
    Guest

    Predefinito

    ho risolto tutto,a scopo informativo l'errore era qui
    Codice PHP:
    $sql = "DELETE FROM username,email,password WHERE password='$password'";
    if (!
    mysql_query($sql)) {
    die(
    '<div align=center><font color=red>Errore nel cancellare l\'utente</font></div>');
    avevo sostituito con questo:
    Codice PHP:
    $sql = "DELETE * FROM WHERE password='$password'";
    if (!
    mysql_query($sql)) {
    die(
    '<div align=center><font color=red>Errore nel cancellare l\'utente</font></div>');
    ma nn so xkè nn gli andava a genio l'asterisco così l'ho tolto e adesso funziona tutto!

Regole di scrittura

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