eliminare record da db attraverso link

asevenx

Utente Attivo
7 Nov 2009
312
0
16
salve, vorrei permettere l'eliminazione dal mio guestbook di determinati record tramite un apposito link (ovvero accanto al messaggio vorrei inserire un bottone per eliminare il messaggio). So che per fare questo devo usare una quary con DELATE ma non so come impostarla, qualcuno può aiutarmi?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
l'eliminazione di un record è semplice
PHP:
<?php
//....
$rq=mysql_query("DELETE FROM tabella WHERE id='$id_da_eliminare'");
//...
?>
però trattandosi di eliminazione devi fare vari controlli anche per vedere su l'utente è autorizzato
poi se passi il valore da un link è ancora più pericoloso in quanto usi il GET che è visibile
quindi stai attento a quello che fai
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
ti ringrazio per la risposta, mi sono letto un po di cose su internet sul metodo get, ma non capisco una cosa.
Allora ho inserito la mia img con il seguente codice
HTML:
<a href='img/elimina?id=$id.php'>
dopo di che ho creato un file elimina.php che dovrebbe riportare la variabile GET così $id_elimina = $_GET['id'];

ma quando vado a cliccare mi dice che il file (es: elimina?id=318.php). Che devo fare?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
secondo me hai invertito php (non avevo visto alex mi ha preceduto)

PHP:
<a href='img/elimina.php?id=$id'>
due cose
1. ho visto che l'ai racchiuso tra i tag html, guarda che quel link deve essere in una pag. php
2. ti ribadisco stai attento perche passando sul link si vede (es.)
cosa succede se mi faccio un piccolo script che cicla un numero e richiama la tua pagina?
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
cosa succede se mi faccio un piccolo script che cicla un numero e richiama la tua pagina?

E come dovrebbe fare? E' quello il modo, a parte che dovresti inserire dei controlli sulla variabile di sessione per vedere se quel determinato utente ha i diritti di eliminare quel messaggio.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
oltre alla verifica dei permessi, si può verificare la pag di provenienza dove è posto il link (mettiamo che si chiami lincaggi.php)

PHP:
$proviene=basename($_SERVER['HTTP_REFERER']);
if($proviene=="lincaggi.php"){
	//fai tutto quello che devi fare
}else{
	
	header("location:pagina_che_vuoi.php");
}
questo evita che uno possa accedere con l'url che ho detto prima
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
@alex
sistema sicuro al 100x100 non esiste, lo so (guarda che colossi riescono a akerare), ma tutto quello che può servire non fa mai male.
se uno stupidotto (che non conosce i sistemi sofisticati o meno) scrive sul bw l'url con un id cancella il record, valutando la provenienza qualcosa si evita.

p.s.
se qualcuno akera il mio sito so a chi rivolgermi :mavieni:
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
secondo voi può bastare un sistema di riconoscimento tramite password (magari inserita in un db) per rendere sicura l'eliminazione?

PS: cmq il link funziona, quindi l'errore era proprio quello, ma l'eliminazione non funziona, date un occhiata

PHP:
<form name='pass' method='post' action='#'>
	<table cellspacing='0' cellpadding='0'>
		<tr>
			<td class='box1'>Password: </td>										
			<td class='box' colspan="2"><input name='pass' type="password"></textarea></td>
		</tr>                       
		<tr>									
			<td colspan = "3" class='bottoni'>
				<input type='submit' name='invia' value='Conferma'>
				<input type='reset' name='annulla' value='Cancella'>
			</td>
		</tr>
	</table>	
</form>
<?php

$pass = $_POST['pass'];		
$id_elimina = $_GET['id'];

if ($pass == '') {
	echo "Per cancellare il seguente messaggio devi inserire la password di versifica";

	} else {
		if ($pass == 'password') {

//dati database
$host = "...";
$username = "...";
$password = "";
$database = "...";
$tabella = "forum";

//connessione e invio al DB
$connessione = mysql_connect($host, $username, $password) or die("Connessione DB fallita");
mysql_select_db($database, $connessione) or die("Selezione DB fallita");

//visualizza tutti i record nel DB
$elimina = mysql_query("DELETE FROM tabella WHERE id='$id_elimina' LIMIT 1");
		echo "Messaggio cancellato correttamente!";	
		
		} else {
		
		echo "Password errata!";	
		}
	}
?>
 
Ultima modifica:

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Io ti consiglierei di sostituire questa riga:
PHP:
$elimina = mysql_query("DELETE FROM tabella WHERE id='$id_elimina' LIMIT 1");
con questa:
PHP:
$elimina = mysql_query("DELETE FROM tabella WHERE id=".$id_elimina." LIMIT 1");
E, come dice Borgo, potresti togliere anche il LIMIT visto che l'ID deve essere chiava primaria quindi univoca nella tabella.

P.S.
Se ancora non funge prova ad inserire il codice SQL in una variabile e, invece di eseguirla, prova a stamparla e il risultato mettilo direttamente nel database che segnala più chiaramente gli errori nel caso in cui ce ne fossero ancora.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
come ha detto giustamente longo, verifica separando la query
PHP:
<?php
//.....
$qstringa="DELETE FROM tabella WHERE id='$id_elimina'";
var_dump($qstringa);
$elimina = mysql_query($qstringa);
var_dump($elimina);
//......
?>
il primo var_dump (ipotesi hai cliccato sul link con id == 2, se è tutto giusto ti riporta
string (32) "DELETE FROM tabella WHERE id='2'"
se invece
string (31) "DELETE FROM tabella WHERE id=''"
con molta probabilità non trasmetti/ricevi il $_GET
se tutto giusto, ma il secondo var_dump ti restituisce
bool (FALSE)
verifica i dati di connessione e la corrispondenza del nome della tabella
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Secondo me il problema potrebbe essere nel nome della tabella

PHP:
$elimina = mysql_query("DELETE FROM tabella WHERE id='$id_elimina' LIMIT 1");


visto che dichiari una variabile $tabella = 'forum'

dovrai metter FROM $tabella o a limite FROM forum
 

metalgemini

Utente Attivo
14 Apr 2004
745
0
0
Prova con l'asterisco:
PHP:
$elimina = mysql_query("DELETE * FROM tabella WHERE id='$id_elimina' LIMIT 1");
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
la sintassi del delete è
Codice:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM nome_tabella
[WHERE condizioni]
[ORDER BY ...]
[LIMIT numero_righe]
l'asterisco non c'entra.
se non elimina c'è un errore o nel nome della tabella o nel where, il limit, credo in questo caso, non serve in quanto l'id dovrebbe essere univoco
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Mi trovo nell'impossibilità di eliminare un record nella tabella Database 1
asevenx [PHP] Eliminare record automaticamente dopo una certa data PHP 12
F eliminare un record grazie a PHP PHP 11
N eliminare file e record db PHP 4
P Eliminare record selezionati con checkbox PHP 1
X eliminare un record XML con ASP Classic ASP 1
S eliminare record database Javascript 3
S [VB 17]: Eliminare doppioni in listbox Visual Basic 1
spider81man Eliminare primo ed ultimo carattere di una colonna MySQL 0
G Eliminare l'effetto refresh di una pagina internet PHP 8
M eliminare padding logo sito HTML e CSS 2
A eliminare caratteri speciali mettendo uno spazio PHP 0
A eliminare caratteri diacritici con codice ascii PHP 4
MarcoGrazia Eliminare in automatico i caratteri spuri all'inizio e alla fine di una stringa Snippet PHP 0
L Eliminare estensione .html HTML e CSS 9
L [RISOLTO] Eliminare una discussione creata PHP 3
S Eliminare spazio iniziale PHP 2
S [PHP] Eliminare doppioni array e rinumerare le posizioni PHP 2
maxnegri Eliminare url index.php con variabili e reindirizzare alla home del sito PHP 7
D [ASP] Eliminare gli zeri che nn servono Classic ASP 1
K Come eliminare attributi regex per validazione con javascript Javascript 0
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
P [HTML] Eliminare doppio menu in wordpress WordPress 2
P [WordPress] Eliminare scritta Categories da post WordPress 4
C [PHP] eliminare elemento da un array multidimensionale PHP 9
A [WordPress] Eliminare riga codice HTML WordPress 6
loois come eliminare una discussione fata in questo forum ? Discussioni Varie 1
trattorino [PHP] Eliminare piu frasi PHP 1
C [PHP] RISOLTO - Eliminare elementi duplicati da array multidimensionale PHP 1
L [HTML] versione mobile eliminare stile menu da nav HTML e CSS 0
T Come eliminare canonical url da blogger SEO e Posizionamento 0
dany81 [Photoshop] Eliminare più sfondo possibile... Photoshop 3
Monital [PHP] Eliminare la Barra di caricamento file alla fine dell'esecuzione PHP 11
L Eliminare suono da iframe HTML e CSS 3
G Eliminare scrollbar laterale di visuallightbox jQuery 0
H Eliminare div creato da javascript Javascript 1
9 eliminare righe di una tabella con form html PHP 6
M Eliminare un cookie PHP 1
elpirata Eliminare dati selezionati da una form di select PHP 6
Marco_88 Eliminare una colonna da una LEFT JOIN MySQL 4
A come eliminare i suggerimenti della barra degli indirizzi su google chrome? Windows e Software 3
M Eliminare immagini da directory / *dal database fatto! PHP 2
K eliminare il carriage return Javascript 4
S Problema nell'eliminare un'immagine PHP 2
felino Eliminare stringa compresa tra due tags PHP 4
Creatt Eliminare macchine in centos Linux e Software 2
filippino Eliminare lo sfondo di una foto Photoshop 1
D [VB.NET] Eliminare Cartella e sottocartelle TRAMITE FTP .NET Framework 1
D Eliminare voce da campo db Classic ASP 5
filippino Eliminare le barre scorrimento HTML e CSS 1

Discussioni simili