Visualizzazione risultati 1 fino 11 di 11

Discussione: Non mi elimina l'account [PHP/MYSQL]

  1. #1
    Guest

    Predefinito Non mi elimina l'account [PHP/MYSQL]

    Salve a tutti! Praticamente, mi fa eliminare l'account solamente con l'username! Se nel SELECT dico che voglio selezionare anche la password, non lo fa. Come mai? Ecco il codice:

    Codice PHP:
    <?php

    if (!isset($_POST['submit'])){
    echo
    '<form method="post" action="#">
    <hr><font color="red" face="courier" size="5">Elimina account</font><hr>
    Nome utente:<br>
    <input type="text" name="username" placeholder=Username>
    <p>
    Password:<br>
    <input type="password" name="password" placeholder=Password>
    <p>
    <input type="submit" name="submit" value="Elimina account!">
    <form>'
    ;
    }else {


    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);
    $data = date("Y-m-d H:i:s");

    if(
    $username != $my_username){
    echo
    "<META HTTP-EQUIV='Refresh' CONTENT='0; url=account.php'>";
    } else {

    $sqlrecuperauser = "SELECT * FROM users WHERE (username = '$username' AND password = '$password')";
    $risultatouser = mysql_query($sqlrecuperauser);

    if(
    $risultatouser){

    $contauser = mysql_num_rows($risultatouser);

    if(
    $contauser == 1){

    $rows = mysql_fetch_array($risultatouser);

    $username = $rows['username'];
    $password = $rows['password'];

    mysql_query("DELETE FROM users WHERE username = '$my_username' AND password = '$password'");
    mysql_query("INSERT INTO utenti_eliminati (username,orario) VALUES ('$my_username','$data')");
    mysql_query("DELETE FROM utenti_online WHERE username = '$my_username'");
    mysql_query("DELETE FROM utenti_offline WHERE username = '$my_username'");
    mysql_query("DELETE FROM stato WHERE username = '$my_username'");
    mysql_query("DELETE FROM news WHERE username = '$my_username'");
    mysql_query("DELETE FROM notifiche WHERE username = '$my_username'");
    mysql_query("DELETE FROM richieste WHERE username = '$my_username'");
    mysql_query("DELETE FROM richieste WHERE amico = '$my_username'");
    mysql_query("DELETE FROM amici WHERE username = '$my_username'");
    mysql_query("DELETE FROM amici WHERE amico = '$my_username'");
    mysql_query("DELETE FROM seguire WHERE username = '$my_username'");
    mysql_query("DELETE FROM seguire WHERE segue = '$my_username'");
    unset(
    $_SESSION['username']);
    ?>
    <META HTTP-EQUIV='Refresh' CONTENT='0; url=index.php'>
    <?php

    } else {
    echo
    "<META HTTP-EQUIV='Refresh' CONTENT='0; url=account.php'>";
    }
    }
    }
    }
    ?>

  2. #2
    Guest

    Predefinito

    Ciao, se non ricordo male password è una parola chiave in SQL. Prova così: includi i nomi dei tuoi campi col carattere ` (su Ubuntu è Alt Gr + ' , se usi Windows dovrebbe essere Alt + 126 - dal tastierino numerico - mentre per altri sistemi operativi non so dirti).
    Codice PHP:
    mysql_query("DELETE FROM users WHERE `username` = '$my_username' AND `password` = '$password'");
    Così dovrebbe andare, io mi sono abituato ad usare questo carattere per i nomi dei campi e ho risolto molti problemi ;)

  3. #3
    Guest

    Predefinito

    Eh no, niente da fare! Ho provato a fare come hai detto tu:

    Codice PHP:
    mysql_query("DELETE FROM users WHERE `username` = '$my_username' AND `password` = '$password'");
    header('Location: index.php');
    Ma nulla da fare.

  4. #4
    Guest

    Predefinito

    Aspetta, mi sono accorto adesso che usavi password anche nella select, se provi a modificare anche quella?
    Codice PHP:
    $sqlrecuperauser = "SELECT * FROM `users` WHERE (`username` = '$username' AND `password` = '$password')";
    Poi, dopo che esegui la query prova a vedere cosa ti restituisce
    Codice PHP:
    print_r($risultatouser);

  5. #5
    Guest

    Predefinito

    Ancora nulla da fare :/ Ho provato cosi:

    Codice PHP:
    $sqlrecuperauser = "SELECT * FROM `users` WHERE (`username` = '$username' AND `password` = '$password')";
    $risultatouser = mysql_query($sqlrecuperauser);
    print_r($sqlrecuperauser);
    E non mi restituisce nulla! Poi, ho provato ad eseguire questa operazione su EasyPhp e lo stesso non mi stampa nulla!

  6. #6
    Guest

    Predefinito

    Aspetta, nel print_r devi usare la variabile $risultatouser.

    Comunque, nel database le password come le salvi? In chiaro o esegui un hash md5 o qualcosa di simile? Perché se prima di salvarle esegui un hash (cosa che di solito si fa), allora devi farlo anche su $password, prima di di eseguire il SELECT.

  7. #7
    Guest

    Predefinito

    Non mi stampa lo stesso nulla, gia provato :/
    Comuque, il campo password è un Varchar Non un md5

  8. #8
    Guest

    Predefinito

    No no md5 è un algoritmo che si usa per criptare una stringa, non è un tipo di campo di MySQL.

    Comunque, nel codice tu fai questo controllo:
    Codice PHP:
    if($username != $my_username)
    Dove è definita $my_username? Che valore assume?

  9. #9
    Guest

    Predefinito

    Non fare caso a quel campo. $my_username sarebbe l'username di chi logga sul mio social network cosi da poter chattare e avere un profilo personale. Vorrebbe dire che, mentre si è loggati con l'username Admin (ad esempio) però per eliminare il mio account inserisco l'username Manuel, l'account non verrà eliminato! Per farlo ho usato:

    Codice PHP:
    $my_id = ($_SESSION['username']);
    $my_username = ($_SESSION['username']);
    Comunque, invece di username e password, proverò con username e email. Grazie lo stesso :)

  10. #10
    Guest

    Predefinito

    Ti dico, il codice che hai scritto a me sembra filare tranquillo, anche perché comunque hai detto che quandi facevi il controllo usando solo il campo username funzionava tutto.

    L'unico mio dubbio era legato al fatto che magari in fase di registrazione tu facessi qualcosa tipo
    Codice PHP:
    mysql_query('
    INSERT INTO `users` (`username`, `password`, ...)
    VALUES (\''
    . $_POST['username'] . '\', \'' . md5($_POST['password']) . '\', ...)');
    e quindi nel select avresti dovuto fare:
    Codice PHP:
    $username = $_POST['username'];
    $password = md5($_POST['password']);

    // E poi esegui il select e il resto
    A quanto pare però non è questo il problema, mi dispiace di non essere stato d'aiuto. Ciao :)

  11. #11
    Guest

    Predefinito

    jubik posta il codice dove creai un account (aggiungendolo del database) e la struttura del database; perché per ora quello che hai postato sembra corretto.

    Ti consiglio comunque di usare mysqli https://www.google.it/search?q=mysql...hrome&ie=UTF-8

Regole di scrittura

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