bonjour: je voudrais éviter de voir des choses compliquées derriére mes adresses de mon site web,
pourtant les liens ne peuvent faire que des get ?
faut'il que je fasses toujours des saisies type form ?
merci a vous
bonjour: je voudrais éviter de voir des choses compliquées derriére mes adresses de mon site web,
pourtant les liens ne peuvent faire que des get ?
faut'il que je fasses toujours des saisies type form ?
merci a vous
bijour,
En réalité, ce qu'on passe en $_GET est souvent peu dramatique et contrôlé (c'est d'ailleurs souvent pour ça qu'on transmet des ID, afin de vérifier tres facilement)
Si ce sont des variables qui restent tout le temps sur le site, peut-être faudrait-il regarder à utiliser les $_SESSION![]()
Oui mais je n'aimes pas ce que font les get
Et les sessions ce n'est pas possible a mon avis, car je parles de liens ou autre form donc une valeur inconnue ?
hmmm les liens de son site perso, on les connait d'une façon ou d'une autre...
pour les formulaires, on utilise en général la méthode $_POST et non $_GET :<?php echo $_SERVER['PHP_SELF']; ?> : renvoie vers la page courante
Code : Sélectionner tout - Visualiser dans une fenêtre à part <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
method="post" envoie les données en $_POST et non en $_GET
Dans tous les cas, avec tout lien tu passes par GET.
Si tu fais du PHP et que tu dois passer des paramètres par un lien, tu peux pas y échapper.
Si tu veux te prendre le chou pour rendre tes urls plus esthétiques, tu peux te renseigner sur l'url rewriting.
Non il n'y a pas que l' esthétiques, mais d'aprés ce que je lis surtout c'est moins fort en sécuritée.
ça rejoint ce que j'ai dit.... c'est à toi de faire attention à ce que tu écris...
De toute facon, à l'heure actuelle, même les $_POST ne sont pas en sécurité si le code est mal pensé
En général, on essaye de toujours travailler avec un ID qui est souvent la PRIMARY KEY de la table... voici un exemple de code et des liens qu'on pourrait avoir
Code LE CODE PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <?php // CODE CORRECT (un parmis d'autres) $id_news = (int) $_GET['id']; if ($id_news > 0) { // si $_GET['id'] n'était pas un nombre, $id_news vaudrait 0 $sql = "SELECT * FROM news WHERE id_news = '".$id_news."'"; echo "Requete : ".$sql; // j'execute ma requete mysql_query() par exemple } else { header("Location: ".$defaultPage); // sinon je retourne à la page par défaut (index.php surement ^^) } // CODE PAS CORRECT if (isset($_GET['id']) && !empty($_GET['id'])) { // test insuffisant, voir plus bas $sql = "SELECT * FROM news WHERE id_news = '".$id_news."'"; echo "Requete : ".$sql; // j'execute ma requete mysql_query() par exemple } ?>
Liens envoyes :
?page=news&id=4
Ex1 => REQUETE : SELECT * FROM news WHERE id_news = '4'
Ex2 => REQUETE : SELECT * FROM news WHERE id_news = '4'
// Quand on transmet quelque chose de correct, on a bien le même résultat, les 2 codes fonctionnent
?page=news&id='AND1'
Ex1 => n'affiche rien, retoure à la page par défaut
Ex2 => Requete : SELECT * FROM news WHERE id_news = '' AND 1 ''
Cette dernière requete sélectionne toute la base de données et la seule façon de l'éviter est de bien coder![]()
C'est vrai et faux à la fois.
Il faut partir du principe qu'il ne faut jamais faire "confiance" à une donnée passée en GET (mais on pourrait en dire autant d'une donnée passée en POST)
Il faut toujours vérifier que ce qu'on reçoit ressemble à ce qu'on attend et qu'il risque toujours d'y avoir une erreur. Dans tous les cas (POST ou GET) on ne prend jamais une donnée transmise par l'utilisateur à la légère. Mais c'est pas non plus la peine de raccrocher les gants non plus. Les précautions à prendre sont généralement assez simples à mettre en oeuvre
EDIT : Téléscopage avec Darkstar... On dit à peu près la même chose sauf que j'ai la flemme de taper du code![]()
Partager