Différence entre POST et GET?

jay le lillois

Nouveau membre
Je voudrais que quelqu'un m'explique quelle est la différence entre $_POST[] et $_GET[]. Dans quel cas utilise-t-on l'un et l'autre? Et si je veux passer une variable par l'intermédiaire d'une url lequel des 2 dois-je utiliser?
Par exemple:
<?
$nom = "jean-mi";
print("<a href=\"suppression.php?nom=$nom\"> Cliquez </a>");
?>
Comment dois-je réutiliser la variable $nom dans mon script suppression.php ?
Merci à vous d'éclairer mes lumières...
:??:
 

gesualda

Nouveau membre
Bonjour Jay le lillois,

Lorsque tu ulise "$_POST" c'est comme par la poste c'est cacheté (enfin en principe) donc tu peux pas voir ce qu'il y a dedans, quand à "$_GET" c'est se rendre (enfin je crois).
Je pense que les habitués te donnerons plus de détail.

@bientot
 

Infinitif

Nouveau membre
Si tu veux récupéré une variable url, utilise $_GET qui est spécifiquement fait pour ça..
$_Post est plus utilisé pour renvoyé une variable dans un formulaire, même si dans certain cas, leur utilisation est semblable..
 

thrips

Expert
Si tu passe une variable dans l'URL comme ceci : suppression.php?nom=$nom Tu dois utiliser le tableau $_GET[] pour accéder aux variables passées dans l'URL. Dans ton cas ça va être $_GET["nom"] ou $_GET['nom'], je ne suis plus certain pour les apostrophes mais je crois que c'est les doubles qu'il faut utiliser.

Le tableau $_POST[] stoque les variables qui sont envoyées par les formulaires lorsque l'utilisateur clique sur le bouton qui soumet le formulaire. On l'utilise comme ceci : $_POST["nom_du_controle"]. Le controle peut être un champ, un bouton radio ou case à cocher, un bouton, etc.

Lorsque tu passe des valeurs dans l'URL, l'utilisateur de ton site peut voir les valeurs passer et modifier l'URL pour tester ses propres valeurs... C'est facile de faire planter un script qui prends des valeurs en GET et donc de hacker un site si on s'y prends avec des bonnes manières.

Lorsque les valeurs sont passées par un formulaire avec la méthode POST, elles sont cachées de l'utilisateur et elles sont peut-être "encapsulées et cryptées" mais je ne suis pas certain pour l'encapsulage et le cryptage. C'est plus sécuritaire mais encore là, un hacker peut facilement trouver des trous de sécurité même si les valeurs sont passées par la méthode POST.
 

jay le lillois

Nouveau membre
Je vous remercie pour vos réponses. Maintenant j'ai une nouvelle question : peut-on faire passer des variables d'un script à un autre sans les passer dans l'url? Si oui, comment fait-on?
 

KangOl

Grand Maître
les variables de sessions :)

note : on peut aussi passer les variable par GET par un formulaire !
 

thrips

Expert
Oui, les variables de session avec session_start(); puis ensuite utiliser le tableau $_SESSION[].
 

ruggero

Nouveau membre
Bonsoir à tous,

Je sais aussi qu'outre le fait que ce soit visible pour l'un et invisible pour l'autre, avec la méthode GET tu envoye 256 caractères tandis qu'avec POST tu peux balancer 2 mégas !!! Cela peut aider et ça fait une sacrée différence. C'est juste pour du son mais pour du texte y'a d'la place...

Cordialement, Ruggero
 

winzou

Nouveau membre
tu peux envoyer plus que 2Mo, suivant la config du serveur. Alors que dans l'url, c'est 256 point barre.
 

EchoCedric

Grand Maître
[citation=8972,0,5][nom]jay le lillois a écrit[/nom]Je vous remercie pour vos réponses. Maintenant j'ai une nouvelle question : peut-on faire passer des variables d'un script à un autre sans les passer dans l'url? Si oui, comment fait-on?[/citation]
Bah, il y a effectivement, les variables de sessions, mais plus simple encore, en $_POST.
Si tu as, par exemple, un formulaire avec certaines variables mais que tu te dis que la page de réception va manquer d'information, tu peux créer des données invisibles, du genre :
<input name="mavariable" type="hidden" value="5">

Comme ça, les données de mavariable, bien qu'invisible sur ta page web seront envoyés avec le reste de ton formulaire.

Attention, niveau sécurité, ce n'est pas super, mais pour des données peu sensible, c'est un moyen efficace et rapide.
 

KangOl

Grand Maître
autant utiliser les sessions alors :o

les variables hidden c'est si il y a un formulaire autour :o
 

EchoCedric

Grand Maître
Ouai enfin, faut avoir des sessions d'ouvertes, ce qui n'est quand même pas une obligation et si c'est juste pour récupérer 2 variables, c'est un peu lancé une machinerie énorme pour pas grand chose. Il ne sait pas le faire, les 2 méthodes sont valables, autant lui apprendre les 2 et il utilisera celle qui veut selon la situation. ;)
 

Dissatter

Nouveau membre
Au passage il existe $_REQUEST , qui incul _GEt , _POST et _COOKIES (par sur de la syntaxe pour cookies).
 

ChaTTon

Nouveau membre
Bon, j'arrive peut être un peu tard, mais voila :

La méthode GET :
Passe les valeurs de tes variable dans l'URL, limite de 256 caractères. Problème de scurité, car un utilisateur peut changer le contenu des variables, ainsi, si les vérifications derrières sont mauvaise, il peut bousiller le site.

La méthode POST : Effectivement, c'est caché à l'utilisateur, on également une limite plus grande. De plus, l'utilisateur ne peut avoir accès au contenu, ni en lecture, ni en écriture. Problème, celà nécessite un formulaire pour faire passer les valeurs ! Et non, comme certains le pense, il y a des fois ou l'on aimerait passer des variables, sans formulaires, éxemple : La navigation. Si vous promener votre page dans l'url ! Ben bonjour le foutoir !

Les variable de session (globales) : Elle regroupe tous les avantage d'un get (Pas besoin d'un formulaire), et celle d'un POST (Sécurité top).

Le principe est simple, au sommet de ta passe tu met session_start();

Celà te donne accès au tableau $_SESSION[];
Tu peut créer tes champs exemple : $_SESSION['page']='accueil';

et tu les récupère dant ta page avec : $variable=$_SESSION['page'];

Récupération des valeurs :
Methode GET : $variable = $_GET['nomvariable'];
methode POST : $variable = $_POST['nomvariable'];
sessions : $variable = $_SESSION['nomvariable'];

Je ne parle pas de $_REQUEST, car je pense que lorsque notre code est propre et clair, on à pas besoin de cette méthode, en plus, avec request, si je passe un paramètre en url, il va la lire. Donc pas top sécurisé.

J'espère avoir répondu à ta question, un conseil :
Préfère utiliser les 3 méthodes du premier coup ! Habitue toi à avoir plusieur méthodes.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 060
Membres
1 586 286
Dernier membre
petitangebleu1977
Partager cette page
Haut