lundi 1 avril 2013

Récuperer les informations d'un formulaire en php

D'abord vous devez creer un formulaire, en voici un exemple:
formulaire.html
<html>
<body>
<form method="post" action="recup.php">
Nom : <input type="text" name="nom" size="20"><br>
Prénom : <input type="text" name="prenom" size="20">
<input type="submit" value="Enregistrer">
</form>
</body>
</html>

Ce qui affichera ceci :

Nom :
Prénom :



Ensuite, la page php qui va récupérer les infos que vous avez tapé dans le formulaire :
<?PHP
//On recupere les variables passer dans le tableau $_POST[] :
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];

//On fais un print des variables obtenues :
print "Bonjour $prenom $nom, comment ça va?";
?>


Ce qui affichera :
Bonjour Prénom, Nom , comment ça va ?


Ce qu'il faut retenir :
- Utiliser $_POST[prenom] pour récupérer la valeur des champs du formulaire. L'utilisation de la seule variable $prenom pose des problèmes de sécurités.

Ce code est très bien pour commencer, mais, si vous avez envie d'utiliser ceci sur votre site, il ne faut jamais faire confiance aux donnée fourni par un internaute ! jamais si vous voulez que votre site reste intact. 90% des piratages (à vue de nez) sont du à une mauvaise connaissances des langages de programmation.
Bon, très bien vous allez me dire, mais, je fais quoi alors ? La réponse est simple : il faut filtré les informations reçu, puis, on pourra les afficher sans crainte.

Pour être sur que je ne raconte pas des conneries, faire un essai avec ce texte (<b>Test</b>). Le afficher sera en gras, ce qui voudra dire que votre page php vient d'exécuter le code html passer par le formulaire.

Bref, comment on fais pour être sur ? Essayer ce code :
<?PHP
//On recupere les variables passer dans le tableau $_POST[] :
$prenom = htmlentities($_POST['prenom'], ENT_QUOTES);
$nom = htmlentities($_POST['nom'], ENT_QUOTES);

//On fais un print des variables obtenues :
print "Bonjour $prenom $nom, comment ça va?";
?>


htmlentities filtre tous caractèere spécial qui pourrai s'exécuter. Si on re essaye ce texte (<b>Test</b>), le résultat sera bien : <b>Test</b> et non Test .

ENT_QUOTES spécifie que les quotes (' et ") doivent aussi être encodé. ceci est une sécurité supplémentaire.

Bonne Continuation :)

Aucun commentaire:

Enregistrer un commentaire