Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Eliminazione record

  1. #1

    Eliminazione record

    ho aggiunto il link per la cancellazione dei record:
    Codice PHP:
    ......
    echo 
    '[url="elimina.php?id=' $riga[0] . '"]Elimina[/url]'
    la pagina elimina l'ho fatta così:
    Codice PHP:
    <?php

    include_once 'config.php';
    $id $_GET[$riga[0]];
    $link mysql_connect($host$user$password) or die("Non è possibile connettersi al server
    "
    );
    $conn mysql_select_db($db$link) or die("Non è possibile connettersi al db
    "
    );
    $query "delete from articoli2 where id='" $id "'";
    mysql_query($query$link) or die(mysql_error($link));
    //echo '<script language="javascript">document.location.href="index.php"</script>';
    ?>
    nn da nessun errore ma nn funziona.
    mi sono letto varie guide ma nn sono riuscito a farne funzionare neanche una.
    ottengo sempre lo stesso risultato

  2. #2
    Codice PHP:
    $id $_GET['id']; 
    .... 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    non so da dove arrivi precisamente l'id del record che vuoi eliminare, ma occhio perchè così facendo stai iniettando all'interno della query un valore che non stai controllando.....non è molto buono per la sicurezza!

  4. #4
    Originariamente inviato da maje
    non so da dove arrivi precisamente l'id del record che vuoi eliminare, ma occhio perchè così facendo stai iniettando all'interno della query un valore che non stai controllando.....non è molto buono per la sicurezza!
    Presumo che sia fatto a puro scopo didattico. Sarebbe folle una cosa del genere in produzione.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5

  6. #6
    ipotizzando verosibilmente che l'id in questione è un campo auto increment non è sufficiente fare così?

    Codice PHP:
    <?php
    $id 
    intval($_GET['id']); 
    ?>

  7. #7
    leggi qui, ci sono tutta una serie di accorgimenti che devi usare per rendere sicuro il tuo codice!

  8. #8
    Originariamente inviato da oly1982
    ipotizzando verosibilmente che l'id in questione è un campo auto increment non è sufficiente fare così?

    Codice PHP:
    <?php
    $id 
    intval($_GET['id']); 
    ?>
    beh! ad essere buoni ed innocenti.... immagina il tipo che rimanda sempre lo stesso link cambiando solo nell'URL l'id da cancellare.....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    aaaaah... si si... ma questo riguarda non tanto le variabili get che contengono id ma piuttosto riguarda i permessi concessi all'utente

    Tipico caso, ad esempio, uno script per selezionare gli articoli da un database in base all'id che riceve via get. In quel caso io l'unico controllo che faccio sull'id è intval(). Tipo:
    Codice PHP:
    <?php
    /*includiamo il file di connessione*/

    include("connessione.php");

    /*recuperiamo la variabile get id*/

    $id intval($_GET['id']);

    /*formuliamo la query*/
    /*la clausola WHERE 
    sarà identificativa della news desiderata*/

    $query "SELECT * FROM news WHERE id='".$id."' LIMIT 1";

    /*rivolgiamo la query*/

    $result mysql_query($query) or die (mysql_error());

    /*verifichiamo se c'è la news
    andando a contare 
    se abbiamo estratto il record*/

    $numero mysql_num_rows($result);

    /*se non abbiamo selezionato 
    nessuna news stampiamo un messaggio*/

    if($numero==0)
        {
        echo 
    "<h1>Nessuna news selezionata</h1>";
        }

    /*altrimenti estraiamo i risultati della query*/
    /*non serve il while perchè è un unico record*/
    else
        {
        
    $riga=mysql_fetch_array($result);

        
    /*rimuoviamo gli slash*/

        
    $titolo stripslashes($riga['title']);
        
    $articolo stripslashes($riga['articolo']);

        
    /*la funzione nl2br sostituisce 
        i ritorni a capo con i 
    */

        
    $articolo nl2br($articolo);
        
        echo 
    "<h1>".$titolo."</h1>";
        echo 
    "

    "
    .$articolo."</p>";
        }
    ?>

    Nel caso l'id debba essere coinvolto in query di update e delete opero diversamente.
    Ad esempio poniamo che un utente registrato dopo il login voglia gestire i suoi dati, ovvero il suo profilo io l'id dei record su cui può operare lo metto in una variabile di sessione (che valorizzo dopo il login).
    Codice PHP:
    // check_login è una mia funzione che utilizzo per fare il login
    // che restituisce FALSE in caso di login fallito
    // altrimenti restituisce l'id dell'utente
    $result_login check_login($_POST['user'], $_POST['pass']);
    if(
    $result_login !== FALSE)
       {
       
    $_SESSION['id_user'] = check_login($_POST['user'], $_POST['pass']);
       }
    else
       {
       echo 
    'login fallito';
       } 
    Poi le query le faccio in base all'id in sessione...
    Codice PHP:
    // edit_profile è una funzione per modificare il profilo
    edit_profile($_SESSION['id_user'], $_POST['email'], $_POST['website'], $_POST['firma'], $_POST['nome'], $_POST['cognome'], $_POST['telefono'], $_POST['indirizzo']); 
    Infine se le operazioni di update e/o delete riguardano un pannello di amministrazione (quindi io, o poche altre persone) in tal caso i controlli sull'id lo faccio semplicemente con intval() dato che non mi farei del male da solo

  10. #10
    è fatto a scopo didattico.
    infatti nn c'è neanche il classico check dell'utente: tutti hanno tutti i permessi per intenderci.
    alla sicurezza penserò una volta ho imparato bene le basi!!

    cmq come mi è stato postato all'inizio funziona.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.