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...
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.
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..
------------------------------Il y a deux sortes d'avocat, celui qui connait bien la loi, et celui qui connait bien le juge. (Coluche)
Répondre à Infinitif
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.
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?
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...
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?
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.
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.
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 allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.