Exemple 4-2-2 «Input d'une zone de texte» - Script PHPInitiation à la programmation avec le langage PHP, §4 Formulaire HTML
|
Input L'entrée des données se fait généralement par un formulaire HTML. Il faut créer deux fichiers:
1. Le formulaire HTMLPour accéder à l'exemple de formulaire, cliquer sur le lien donné ci-dessous. C'est dans le formulaire que se trouve le bouton d'envoi qui lance l'exécution du script PHP. Lorsque le formulaire est affiché dans votre navigateur, pour voir son code HTML, appelez "Afficher le code source de la page" dans votre navigateur, ce qui, selon l'environnement, peut s'obtenir avec le menu contextuel (bouton droit de la souris). Dans le code HTML, remarquer que <form method="POST" action="xxx.php"> contient le nom xxx du fichier PHP chargé du dépouillement. 2. Le traitement PHPLe code PHP est donné ci-dessous. <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="robots" content="NoIndex,NoFollow"> <title>Traitement de l'exemple 4-2-2</title> </head> <body> <h1>Traitement de l'exemple 4-2-2</h1> <h2>Input d'une zone de texte</h2> <h3>Code secret de César</h3> <?php /* Paramètre */ $decal = 3; /* Acquisition des données */ $clair = filter_input(INPUT_POST, 'clair'); /* Validation des données et traitement des erreurs d'input. */ if (strlen($clair)==0){ echo "<h2>Erreur d'input</h2>" ."<p><b>Message à coder</b>:" ."<i>un texte non vide est attendu.</i></p>" .'</body></html>'; exit; } $illeg = 0; for ($i=0; $i<strlen($clair); $i++){ $rang = ord($clair[$i]); if ($rang < ord('A') or $rang > ord('Z')){ $illeg++; } } if ($illeg>0){ echo "<h2>Erreur d'input</h2>" ."<p><b>Le message à coder contient " .$illeg ." caractères hors de l'intervalle A..Z</b></p>" .'</body></html>'; exit; } /* Affichage des données */ echo "<p>Message en clair</p><p><i>" .$clair ."</i></p>"; /* Le code secret de César consiste à décaler les lettres de 3 rangs dans l'alphabet. Déclaration des sous-programmes */ function codechaine($s){ function codecar($c){ global $decal; $codascii = ord($c) + $decal; if ($codascii > ord('Z')) { $codascii = $codascii - 26; // 26 = longueur de l'alphabet } return chr($codascii); } $r = ''; for ($i=0; $i < strlen($s); $i++) { $r = $r.codecar($s[$i]); } return $r; } function decodechaine($s){ function decodecar($c){ global $decal; $codascii = ord($c) - $decal; if ($codascii < ord('A')) { $codascii = $codascii + 26; // 26 = longueur de l'alphabet } return chr($codascii); } $r = ''; for ($i=0; $i < strlen($s); $i++) { $r = $r.decodecar($s[$i]); } return $r; } /* Programme principal */ $chiffre = codechaine($clair); echo '<p>Message chiffré</p><b>' .$chiffre .'</b></p>'; echo '<p>Message déchiffré</p>' .decodechaine($chiffre) .'</p>'; ?> </body> </html> ExplicationsVers 50 avant J. C., César codait les messages qu'il envoyait à Cicéron de la manière suivante: les espaces entre les mots et les signes de ponctuation étaient supprimés; chaque lettre du texte était remplacée par une autre au moyen de la table suivante (rotation de 3 à droite opérant sur les 26 lettres de l'alphabet): ABCDEFGHIJKLMNOPQRSTUVWXYZ DEFGHIJKLMNOPQRSTUVWXYZABC c'est-à-dire la lettre A est remplacée par la lettre D, la lettre B par E, ..., la lettre Z par C. Remarquer que les fonctions sont imbriquées: codecar est un sous-programme local de codechaine, et decodecar est un sous-programme local de decodechaine. |
Contact | Accueil > PHP > Initiation |