Forum Pplware

Versão Completa: php - processar_eliminar.php
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
1 - Tenho na minha base de dados mysql a tabela [utilizadores] com id_utilizador , nome_utilizador , etc ;

2 - Depois no ficheiro ver_utilizador.php tenho o seguinte (excluí aqui a ligação a base dados e mais algum código para não confundir a leitura...):

Código:
[font=Verdana, Arial, Helvetica, sans-serif]$ver ="SELECT * FROM utilizadores ORDER BY nome_utilizador ASC ";[/font]
[font=Verdana, Arial, Helvetica, sans-serif]$consulta= mysql_query($ver); [/font]
[font=Verdana, Arial, Helvetica, sans-serif][/font]
[font=Verdana, Arial, Helvetica, sans-serif]if($consulta !=0)[/font]
[font=Verdana, Arial, Helvetica, sans-serif][/font]
[font=Verdana, Arial, Helvetica, sans-serif]while($mostrar= mysql_fetch_array($consulta) )[/font]
[font=Verdana, Arial, Helvetica, sans-serif]{[/font]
[font=Verdana, Arial, Helvetica, sans-serif][/font]
[font=Verdana, Arial, Helvetica, sans-serif]$id = $mostrar['id_utilizador'];[/font]
[font=Verdana, Arial, Helvetica, sans-serif]$nome = $mostrar['nome_utilizador'];

echo'<table width="400px">
<tr>
    <td width="5">'.$id.'</td>
<td width="70">'.$nome.'</td>

<td><a onclick="return confirm( \'PRETENDE APAGAR ESTE REGISTO ?\') " href="processar_eliminar_utilizador.php?id_utilizador=$id"><img src="imagens/apagar.png"/></a></td> 
[/font]

Agora no ficheiro processar_eliminar_utilizador.php fiz o seguinte...:

$apagar = "DELETE FROM utilizadores WHERE id_utilizador = '".$_GET['$id']."'   ";
$resultado = mysql_query($apagar);



onde estou a errar para nao conseguir apagar o utilizador que corresponde ao id ????
Tens um $ a mais no indice do $_GET, devia ser $_GET['id']

Por outro lado, num projecto a sério nunca uses directamente os valores do $_GET ou do $_POST, ou ficas aberto a SQL injection. Por ex, se chamarem essa pagina tipo:

Código:
http://xpto.com/processar_eliminar_utilizador.php?id=%27%20OR%201%3D1%3B%20--

na realidade estás a passar ' OR 1=1; -- como id, o que te vai dar uma query assim:

Código:
DELETE FROM utilizadores WHERE id_utilizador = '' OR 1=1

com o resultado previsivel de te eliminar todos os utilizadores Tongue
A menos mete mysql_real_escape_string($_GET['id'])
URL's de Referência