Probleme de transmission de variable

Eléphant du PHP | 101 Messages

24 nov. 2005, 22:04

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
Modifié en dernier par brani le 24 nov. 2005, 22:08, modifié 1 fois.

Mammouth du PHP | 1311 Messages

24 nov. 2005, 22:07

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(); 

Eléphant du PHP | 101 Messages

24 nov. 2005, 22:09

je vais tester

Eléphant du PHP | 101 Messages

24 nov. 2005, 22:11

Ca marche

vraiment merci je chercher depuis 2h l'érreur



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

Mammouth du PHP | 1311 Messages

24 nov. 2005, 22:15

alors un petit resolu

Eléphant du PHP | 101 Messages

24 nov. 2005, 22:18

ok

merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

24 nov. 2005, 22:31

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();
Modifié en dernier par Truc le 24 nov. 2005, 22:37, modifié 1 fois.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 1311 Messages

24 nov. 2005, 22:33

et tant que l'on y est tu peut rajouter a ta requete
limit 1

Eléphant du PHP | 101 Messages

25 nov. 2005, 03:26

excuse moi je nétait pas la


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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 nov. 2005, 03:30

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 101 Messages

25 nov. 2005, 15:41

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