Page 1 sur 1

Probleme de transmission de variable

Posté : 24 nov. 2005, 22:04
par brani
bonjour voila j'ai un probleme pour supprimer une entrés dans mysql

voici le code
<?
$id = $row['id']; 
echo "<SPAN id='supprimier'><a href='affichage_page/effacer_article.php?id=$id'>sup</a></SPAN>";
?>


j'ai l'érreur suivante :
Notice: Undefined variable: id in c:\program files\easyphp1-7\www\site\_admin_\affichage_page\effacer_article.php on line 9
Erreur : Erreur de syntaxe près de '' à la ligne 1

Le code de la page effacer_article.php
<?

$serveur="localhost";
$user="root";
$passwd="";
$bdd="contenu";
mysql_connect("$serveur", "$user", "$passwd");
mysql_select_db("$bdd");
mysql_query ("DELETE FROM contenu_page WHERE id=".$id) or die ("Erreur : ".mysql_error());
mysql_close();
?>



j'ai fait des test pour trouver l'érreur et apparament l'id n'est pas transmis
a la page effacer_article

donc je pense que le probleme vien de ce code

<?
$id = $row['id']; echo "<SPAN id='supprimier'><a href='affichage_page/effacer_article.php?id=$id'>sup</a></SPAN>";
?>

enfin je suis coinsser car pour moi ya pas dérreur

l'adresse du navigateur quand je clic sur supprimer est la suivante

http://www.domaine.com/site/_admin_/aff ... .php?id=44

donc la je voi que la variable id vaut 44 donc ca doit marcher

je vais pété un plomb

Posté : 24 nov. 2005, 22:07
par jeff
salut
tu transmat ta variable par get tu doit donc la recuperer avec Get
$serveur="localhost";
$user="root";
$passwd="";
$bdd="contenu";
mysql_connect("$serveur", "$user", "$passwd");
mysql_select_db("$bdd");
mysql_query ("DELETE FROM contenu_page WHERE id=".$_GET['id']) or die ("Erreur : ".mysql_error());
mysql_close(); 

Posté : 24 nov. 2005, 22:09
par brani
je vais tester

Posté : 24 nov. 2005, 22:11
par brani
Ca marche

vraiment merci je chercher depuis 2h l'érreur



merci ouf ca me soulage je suis reconsilier avec php :D

Posté : 24 nov. 2005, 22:15
par jeff
alors un petit resolu

Posté : 24 nov. 2005, 22:18
par brani
ok

merci

Posté : 24 nov. 2005, 22:31
par Truc
C'est résolu mais pas tres sécurisé vaut mieux pas que je tombe sur cette page :twisted:
avec l'injection sql il y a moyen d'effacer toute la table !!!

si dans la barre d'adresse je met "id=1 OR 1=1" ... pouf plus rien :afraid:
puisque c'est un id on peut tester avec is_numeric()

et au passage ne jamais mettre les variables entre guillemets ça ne sert strictement a rien !!
mysql_connect($serveur, $user, $passwd);
mysql_select_db($bdd);

$id=$_GET['id'];
if(is_numeric($id))
   mysql_query ("DELETE FROM contenu_page WHERE id=".$id) or die ("Erreur : ".mysql_error());
mysql_close();

Posté : 24 nov. 2005, 22:33
par jeff
et tant que l'on y est tu peut rajouter a ta requete
limit 1

Posté : 25 nov. 2005, 03:26
par brani
excuse moi je nétait pas la


Pourquoi limit 1 ? ca veut dire quoi ? une a la fois ?

Posté : 25 nov. 2005, 03:30
par Truc
une a la fois ?
tout a fait :wink:
ca donne donc
mysql_query ("DELETE FROM contenu_page WHERE id=".$id." LIMIT 1)
une sécurité de plus, au cas où :wink:

Posté : 25 nov. 2005, 15:41
par brani
Salut truc


merci pour tes bon conseil

tu ne risque pas de tomber sur cette page méme si je te donne l'adresse

elle n'est accessible que par moi il faut s'authentifier avan

donc si tu tombe sur la page tu sera rediriger directement a l'accueil

ce que je vouler dire c'est que je suis conscient de cette faille


mais bon vaut mieu sécurisé tout ca a bloc.


merci encore