Visualizzazione risultati 1 fino 5 di 5

Discussione: Problema con query di eliminazione

  1. #1
    Guest

    Predefinito Problema con query di eliminazione

    ciao a tutti sono fermo gia da un pezzo perchè mi dà errore su questa query:

    Codice PHP:
    $sql = "DELETE FROM sez_users WHERE id = '$_GET['id']'";

    il codice della pagina che invia la query è questa:

    Codice PHP:
    <?php

    include("includes/config.inc.php");

    //Connessione al db mysql
    $db = mysql_connect($db_host, $db_user, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");
    else {
    print
    "";
    }
    //Selezione del database
    mysql_select_db($db_name, $db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $id = $_GET['id'];

    $cOption = $_GET['cosafaccio'];

    switch(
    $cOption) {
    case
    "elimino":
    //qui scrivi la query di eliminazione
    $sql = "DELETE FROM sez_users WHERE id = '$_GET['id']'";
    $elimina_ok = mysql_query($sql) or die(mysql_error());
    break;
    ?>
    il codice della pagina k invece manda l'id per l'eliminazione del record è questa:

    Codice PHP:
    <?php

    include("includes/config.inc.php");

    //Connessione al db mysql
    $db = mysql_connect($db_host, $db_user, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");
    else {
    print
    "";
    }
    //Selezione del database
    mysql_select_db($db_name, $db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    //Eseguo la query
    $query = "SELECT * FROM sez_users";
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);

    //Ciclo While per visualizzare tutti gli articoli
    while($row = mysql_fetch_array($result))
    {
    $id = $row['id'];
    $username = $row['username'];

    echo
    "Utente: $username <br /><a href=\"pagina.php?cosafaccio=elimino&id=".$id."\">cancella</a>";
    }
    ?>
    l'errore che dà sulla query di elminazione è:

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\wwwroot2\www\altro\pagina.php on line 23


    sapreste darmi una mano? grazie ciao a tutti!

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,230

    Predefinito

    Prova cosi:
    Codice PHP:
    //qui scrivi la query di eliminazione
    $id = $_GET['id'];
    $sql = "DELETE FROM sez_users WHERE id = '$id'";
    $elimina_ok = mysql_query($sql) or die(mysql_error());
    Ultima modifica di miki92 : 16-11-2008 alle ore 21.03.20
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    Guest

    Predefinito

    $sql = "DELETE FROM sez_users WHERE id = '$id'";

  4. #4
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da fasa Visualizza messaggio
    Codice PHP:
    $sql = "DELETE FROM sez_users WHERE id = '$_GET['id']'";
    A parte le soluzioni al problema di esecuzione date dagli altri, vorrei segnalare che l'approccio che stai usando è pericolosissimo dal punto di vista della sicurezza! Praticamente stai permettendo a chi naviga sul tuo sito di cancellarti almeno tutta quella tabella!

    In generale è sempre necessario controllare i dati che arrivano dall'esterno, perché non sempre arriva quello che ci aspettiamo. Per le query costruire in quel modo sarebbe necessario fare almeno questo:

    Codice PHP:
    $sql = "DELETE FROM sez_users WHERE id = '".addslashes($_GET['id'])."'";
    Così eviti attacchi di tipo SQL Ignition (e dormi tranquillo) perché impedisci l'aggiunta di codice alla tua query.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  5. #5
    Guest

    Predefinito

    Bhe apparte essere pericolossissimo per la SQL Injection ma francamente cancellare tramite parametri passati via GET mi sembra una follia. Se ho un po di tempo da perdere mi metto li, mi salvo il link della pagina cambio tutti gli id e ti ho bello che cancellata tutta la tabella. Comunque il problema è negli apici:

    Codice PHP:
    $sql="DELETE FROM sez_users WHERE id='$_GET['id']'";
    Non va bene perchè per l'interprete è come se dicessi cancella da sez_users dove l'id è $_GET[ in quanto poi chiude la virgoletta aperta precedentemente. Inoltre ti ritorna errore (o almeno dovrebbe) perchè c'è un id'] che non è alcun comando SQL.

Regole di scrittura

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