Visualizzazione risultati 1 fino 10 di 10

Discussione: problema di sinstassi in script per cancellazione utenti

  1. #1
    Guest

    Predefinito problema di sinstassi in script per cancellazione utenti

    salve a tutti...recentemente ho scritto uno script per la cancellazione degl utenti dal database ed è questo:
    Codice PHP:
    <?php
    session_start
    ();

    $host="localhost"; // Hostname
    $username="argentinitaly"; // Mysql username
    $password=""; // Mysql password
    $db_name="my_argentinitaly"; //Nome del Database
    $tbl_name="members"; // Nome della Tabella
    // Procedimento per connettersi al Database
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");
    // Nome utente e password inviate attraverso il form
    $myusername=$_POST['myusername'];
    $mypassword=$_POST['mypassword'];
    $sql="DELETE * FROM $tbl_name WHERE username='$myusername' AND password=MD5('$mypassword')";
    $result=mysql_query($sql);
    if (!
    $result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }
    $_SESSION['user'] = ""; //nel caso fosse loggato al momento della cancellazione
    mysql_close();
    header("location:index.php");
    ?>
    mi mi da il seguente errore di sintassi:
    Errore nella query : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM members WHERE username='username' AND password=MD5('password')' at line 1
    premetto che i form di registrazione e login chiedono solo uno username e password solamente....quindi nel database c'è la tabella "members" con solo username e password....qualkuno sa aiutarmi?
    Ultima modifica di andreafallico : 10-04-2010 alle ore 14.48.57

  2. #2
    Guest

    Predefinito

    Ciao, il problema sta nel codice SQL della tua query di cancellazione, da correggere in:
    Codice:
    $sql="DELETE FROM $tbl_name WHERE username='$myusername' AND password='" . MD5($mypassword) . "';";
    Ecco il riferimento al comando DELETE: MySQL :: DELETE

    Inoltre, ti ho modificato anche la parte che si occupa di criptare la password, in quanto le funzioni PHP non possono essere richiamate direttamente all'interno di una stringa. Poi perdonami se esiste la funzione md5() anche per SQL, ma che io sappia no .
    Ultima modifica di RigheDiCodice : 10-04-2010 alle ore 00.21.24

  3. #3
    Guest

    Predefinito

    ti ringrazio!
    cmq per quel ke riguarda la cancellazione avevo già tolto l'asterisco e funziona....il record viene cancellato ma viene lasciato "indirizzato" diciamo nel database (ed è per questo ke avevo inserito l'asterisco in quanto credevo ke cosi facendo venisse proprio cancellato tutto il regord gualito gualito)....adesso senza asterisco, quando si va ad aggiungere un nuovo utente questo viene aggiunto nel posto dove prima cera il record cancellato.
    mi spiego:
    se io gli utenti iscritti in sequenza: a,b,c,d,e,f e poi l'utente "d" si cancella dal database, il prossimo utente "g" ke si registrerà andrà a posizionarsi al posto di "d" formando la lista: a,b,c,g,e,f questo è normale?
    per quel ke riguarda MD5 cosi come avevo scritto io funziona alla perfezione....le password vengono criptate....cosa cambia se scrivo come dici te??
    Ultima modifica di trbbl : 10-04-2010 alle ore 03.43.18

  4. #4
    Guest

    Predefinito

    Allora per quanto riguarda la questione di MD5(), la differenza sta semplicemente nel fatto che come l'hai scritta tu vai a richiamare la funzione MD5() di SQL, mentre come la ho scritta io va a richiamare la funzione MD5() di PHP. Comunque non c'è nessuna differenza, era solo che io non sapevo che esistesse MD5() anche per SQL .

    Per quanto riguarda l'effetto della cancellazione dei dati nel database, ti dirò che è la prima volta che ci faccio caso . Comunque immagino sia una cosa strettamente legata al funzionamento di MySQL, e del modo in cui lui gestisce i file dei database e delle tabelle che salva.

  5. #5
    Guest

    Predefinito

    in conclusione tu dici sia normale??il fatto è ke è brutto vedere nel mio sito, nella lista degli scritti, degli spazzi vuoi in mezzo ai nomi....

  6. #6
    Guest

    Predefinito

    Penso proprio di sì. Ho fatto un test prima di risponderti, e anche a me - in locale - ha dato lo stesso risultato. Solo che non riesco a capire il fatto degli spazi vuoti: cioè, se nel record che hai appena cancellato non ci hai riscritto sopra niente, allora questo non verrà restituito nel momento in cui vai ad effettuare una query di tipo SELECT. Quindi non dovresti avere spazi vuoti...

  7. #7
    Guest

    Predefinito

    vabbene me lo tengo cosi...un'altra domanda: ho appena notato facendo una prova che quando un utente si cancella viene lasciato loggato cmq, cioè la sessione non viene chiusa anche se lo script di cancellazione viene eseguito correttamente...come posso fare in modo che al momento della cancellazione venga fatto anche il logout?io avevo messo questa istruzione: $_SESSION['user'] = ""; dopo l'istruzione di cancellazione ma a quanto pare non funziona...
    Ultima modifica di trbbl : 10-04-2010 alle ore 16.20.05

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

  9. #9
    Guest

    Predefinito

    da mettere al posto di $_SESSION['user'] = ""; ??

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

    Predefinito

    Certo!.. leggi la documentazione e, soprattutto, gli esempi...

    Ciao!

Regole di scrittura

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