Maison >développement back-end >tutoriel php >Guide d'apprentissage PHP-Chapitre 9

Guide d'apprentissage PHP-Chapitre 9

黄舟
黄舟original
2016-12-23 09:54:231234parcourir

Transfert d'informations entre pages Web

Points clés de ce chapitre

Pourquoi HTTP continue-t-il à se propager ?

Paramètres GET

Une autre URL utilisant le style GET

Gestion des variables de formulaire

Super tableau PHP

Ce chapitre est simple Apprenez un peu un peu sur la transmission de données entre les pages Web. Ces informations ne sont pas propres à PHP, mais constituent une partie importante du protocole PHH/HTML ou HTTP lui-même.

HTTP est sans état

L'une des choses les plus importantes à retenir à propos des services Web est que le protocole HTTP lui-même est sans état. Si vous avez une âme poétique, vous pourriez dire que chaque requête HTTP est seule, sans domicile, comme un parfait inconnu... vous connaissez le sujet. Pour les moins poétiques d'entre nous, cela signifie que chaque requête HTTP (chaque requête et transfert de page) est indépendante de tout autre contenu, n'a aucune connaissance de l'identité du client et n'a pas de mémoire. Chaque requête génère un processus indépendant, complète un service de fichiers, une tâche apparemment petite mais importante, puis disparaît automatiquement (cela semble très impitoyable, on peut peut-être dire que cela revient à "revenir à un état traitable").

Même si le site Web est conçu avec une navigation à sens unique très lâche (la page 1 mène à la page 2, la page 2 mène à la 3, etc.), l'assistance PTTP ne sait jamais et ne se soucie jamais de savoir si quelqu'un navigue sur la page 2. À partir de la page 1. Par conséquent, vous ne pouvez pas définir les variables de la page 1 à importer dans la page via le code HTML lui-même. Vous pouvez utiliser HTML pour afficher un formulaire et utiliser le formulaire pour saisir certaines informations, mais à moins que vous n'utilisiez une autre méthode pour transférer les informations vers une autre page ou un autre programme, les variables disparaissent une fois que vous passez à une autre page.

C'est pourquoi les technologies de traitement de formulaires comme PHP sont importées. PHP peut récupérer les variables transmises d'une page à une autre et les utiliser davantage. Les fonctions PHP s'avèrent très efficaces pour ce type de fonction de transfert de données, ce qui rend plus rapide et plus facile l'exécution de diverses tâches de site Web.

Les formulaires HTML sont la méthode la plus utile sur un site Web pour transmettre certaines données d'une page Web. Il existe de nombreuses façons plus persistantes de maintenir l'état sur de nombreuses pages Web, telles que les cookies et les sessions, dont nous parlerons dans. Chapitre 1 Le chapitre 27 présente ces fonctions. Ce chapitre se concentrera sur des techniques plus élémentaires de transfert d'informations entre des pages Web, qui consistent à utiliser les méthodes HTTP, GET et POST pour générer dynamiquement des pages Web et traiter des données.

Quand les programmeurs ASP voient cela, ils peuvent dire "PHP, c'est nul !" Parce que la variable de session qu'ils ont utilisée dans ASP est très magique. Il ne s'agit pas de faire éclater la bulle de qui que ce soit, mais Microsoft envisage d'utiliser des cookies pour stocker les variables de session, ce qui ouvre la porte à tous les problèmes potentiels.

Paramètres GET

La méthode GET traite les paramètres comme une chaîne de requête URI [Uniform Resource Indicator, indicateur de ressource cohérent] ; partie d'une page qui passe d'une page à une autre. Lorsqu'il est utilisé pour le traitement des formulaires, GET ajoute les noms et valeurs des variables à l'URL spécifiée dans l'attribut ACTION en utilisant des points d'interrogation (?) comme délimiteurs, et soumet tout le contenu à la technologie fournissant le traitement (dans ce cas, le serveur Web).

Voici un exemple de formulaire HTML utilisant la méthode GET (enregistrez le fichier dans team_select.html) :

< HTML >

<

< TITRE >Un exemple GET, partie 1< /TITRE >

< >< ; FOPM ACTION = http://localhost/baseball.php METHOD = « GET » >

< P >Racine, racine, racine pour le :< 🎜> < SELECT NAME = "Team" SIZE=2 >

Lorsque l'utilisateur effectue une sélection et clique sur le bouton Soumettre, le navigateur joint ces éléments dans l'ordre suivant, sans espaces entre les deux :

Après le mot ACTION, l'URL (http://localhost/baseball.php) entre guillemets

Le point d'interrogation (?) indique que les caractères suivants formeront la chaîne GET

Variable NOM, signe égal et VALEUR correspondante (Team = Cubbies)

Symbole "&" et la paire suivante de "NOM = VALEUR" (Soumettre = Soumettre) ; longueur de la chaîne Les limitations le permettent, ces combinaisons nom-valeur séparées par & peuvent être répétées plusieurs fois.

Cela formera une chaîne d'URL comme celle-ci :

(http://locahost/baseball .php ? Team = Cubbies&Submit = Select)

où la chaîne devient nouvelle. La demande est envoyée à l'espace d'adressage du navigateur. Une fois le formulaire ci-dessus soumis, le script PHP (baseball.php) qui traite le formulaire obtiendra les variables GET à la fin de la chaîne de requête et effectuera les opérations correspondantes sur ces variables. Dans l'exemple suivant, deux des valeurs ​. ​est inséré dans la chaîne littérale.

Le code de programme suivant est la partie de traitement du formulaire utilisée par PHP pour traiter le formulaire HTML original :

< HTML >
< TITRE >Un exemple GET, partie 2< /TITRE >

< STYLE TYPE = "text/css">

< >
CORPS {font-size : 24pt;}

-- >

< /STYLE >

< /TÊTE >

< ?php echo $_GET['Équipe'];? >

!

< /BODY >

< >Enfin vous devriez voir Go,Cubbies en grosses lettres sur la page web.

La méthode GET dans le traitement des formulaires a un bien meilleur avantage que la méthode POST : elle crée une chaîne de requête URL vraiment nouvelle et complètement différente. De cette façon, les utilisateurs peuvent ajouter cette page à leurs favoris (voir que cela peut remonter le moral lorsque l'équipe de développement se sent déprimée). Les résultats obtenus à partir d'un formulaire utilisant la méthode POST ne peuvent pas être mis en signet.

Cependant, ce n'est pas parce que vous pouvez utiliser les paramètres GET pour accomplir ce que vous voulez que vous devriez le faire. Pour la plupart des gestionnaires de formulaires, les défauts de la méthode GET sont si graves que la spécification officielle HTML 4.0 d'origine ne le faisait pas. En faveur de son utilisation. Ces défauts incluent :

GET n'est pas adapté à la connexion (login), car le nom d'utilisateur et le mot de passe sont masqués et stockés dans la mémoire du navigateur client en tant que pages consultées, et ils sont également affichés à l'écran. Entièrement visible.

Chaque soumission GET est enregistrée dans le journal du serveur Web, y compris l'ensemble de données.

Étant donné que GET alloue des données aux variables d'environnement du serveur, la longueur de l'URL est limitée. Vous pouvez imaginer à quoi ressemble une URL très longue lorsque vous utilisez GET, mais en réalité personne ne veut essayer de fournir un article HTML de trois cents mots en utilisant cette méthode.

La spécification HTML d'origine limitait la longueur de la chaîne de requête à 255 caractères. Bien que la limite de 255 caractères ait été assouplie par la suite, l'utilisation de chaînes très longues pose vraiment problème.

Après de nombreux débats, W3 est toujours revenu à l'utilisation de la méthode GET dans le traitement des formulaires, principalement en raison de la fonctionnalité de signet. Bien que la méthode GET reste le choix par défaut pour le traitement des formulaires, nous vous recommandons de l'utiliser uniquement là où il n'y a pas d'effets secondaires. En réunissant les deux avantages et les deux inconvénients, l’utilisation la plus appropriée de l’utilisation de GET pour traiter les formulaires devrait en fait être le « champ de recherche ». À moins que vous n'ayez absolument aucune raison d'utiliser la méthode GET dans un gestionnaire de formulaire autre que la recherche, utilisez plutôt la méthode POST.

Une meilleure utilisation des URL de style GET

Bien qu'il ait été recommandé de ne pas utiliser la méthode GET pour le traitement des formulaires. Cependant, le style d'URL associé est toujours très utile pour la navigation sur les sites Web, en particulier pour les sites Web contenant des publicités dynamiques, tels que les sites Web souvent construits avec PHP. L'URL au format variable étant ajoutée, elle est très adaptée aux modèles tels que le. système de développement de contenu.

Comme le montre l'exemple suivant, supposons que vous exploitiez un site Web contenant des informations riches sur les voitures solaires et que vous ayez stocké un format long et cohérent de pages riches en informations et attrayantes comme suit :

suspension_design.html

windtunnel_testing.html

friction_braking.html

Mais lorsque la taille du site Web augmente, une structure de site Web d'archive aussi simple prendra beaucoup de temps à gérer , car certains changements triviaux doivent être répétés sur chaque page. Si la structure de ces pages est très simple, vous pouvez utiliser PHP pour convertir le site en un système basé sur des modèles.

Vous pouvez décider d'utiliser un seul modèle pour séparer les fichiers texte pour chaque sujet (y compris les informations, photos, opinions, etc.) :

topic.php

suspension_design . inc

windtunnel_testing . inc

friction_braking inc

Ou vous pouvez choisir un exemple de fichier plus grand et plus spécifiquement choisi :
php inc

racing . php

race _strategy . inc

Un modèle simple pourrait ressembler à cet exemple (parce que nous n'avons pas inclus le fichier texte .inc requis, ce fichier ne fonctionnera pas réellement) :

< HTML >

< HEAD >



< !-

BODY{font:verdana;font – size:12pt}
< TABLE BORDER = 0 CELLPADDING = 0 WIDTH = 100 % >

< YR >

< !—Barre de navigation, avec URL de style Get .-- >

< #4282B4" ALIGN = CENTER VALIGN=TOP WIDTH=25% >

< P >

< A HREF="mechanical_syatems .php? Name = friction_braking">< B >Freinage par friction< /B >< /A >

< BR >

< ; B > Direction < /B ><

<Suspenion<

<


<
< BR >

< /P >

<

< TD BGCOLOR = "#FFFFFF" ALIGN = LEFT VALIGN=TOP WIDTH = 75% >

< ) >

< /TD> /TE >

<

<

Veuillez noter que lorsque vous cliquez sur le lien dans la barre de navigation, il sera traité par le navigateur comme s'il soumettait un gestionnaire GET.

Mais pour cette solution, vous devez quand même modifier manuellement une partie du code du programme : pour vous assurer que chaque fichier inclus est au bon format HTML, et pour ajouter la barre de navigation à chaque fois qu'une nouvelle page est ajoutée à le site Web Nouvelles connexions et autres contenus similaires. En règle générale, séparez autant que possible la forme et le contenu et vous pouvez choisir d'utiliser une base de données. Si vous utilisez une base de données, l'URL ressemblerait à ceci :

(http://localhost/topic .php ?topicID = 2)

Elle pointerait vers un exemple PHP qui gère les appels à la base de données . version (l'utilisation de variables numériques au lieu de mots accélère l'interrogation de la base de données). Lorsqu'un nouveau sujet est ajouté à la base de données, le système ajoute des liens à la barre de navigation, de sorte que toutes les pages Web peuvent être générées sans travail manuel (le mot « tout » ici est un peu exagéré, mais cela permet d'économiser des personnes et un travail excessif. du temps).

Paramètres POST

POST est actuellement une méthode de traitement de formulaire relativement bonne, particulièrement adaptée aux situations qui n'ont pas besoin d'être utilisées en même temps (spécifiez certaines données ou fonctions pour un traitement à long terme), telles que comme lors de la création d'une base de données Ajouter le traitement des informations. Lorsque les données du formulaire sont transmises au gestionnaire (dans ce cas PHP), elles sont incluses dans le corps du formulaire. Lorsque les informations soumises sont différentes, aucun changement ne sera visible dans l'URL.

La méthode POST présente les avantages suivants :

◎ Elle est plus sécurisée que GET car le message d'erreur dans la chaîne de requête URL, dans le journal du serveur ou sur l'écran (si des précautions sont prises, comme toujours Le format de saisie du mot de passe HTML est utilisé pour exprimer le champ du mot de passe) et les informations saisies par l'utilisateur ne peuvent pas être vues.

◎ La limite sur la quantité de données pouvant être transmises est plus souple (jusqu'à 2 000 tuples, et pas seulement plus de 200 caractères).

Cependant, POST présente également certains inconvénients :

◎ Les résultats ne peuvent pas être marqués comme favoris.

◎ Cette méthode est incompatible avec certains paramètres du pare-feu. Pour des raisons de sécurité, le pare-feu supprimera certaines données du formulaire.

Dans ce livre, nous utilisons systématiquement la méthode POST pour traiter les formulaires, en particulier lorsque nous utilisons la syntaxe SQL d'écriture dans un fichier ou INSERT pour remplir des données dans le système. Nous utilisons uniquement la méthode GET dans les champs de navigation et de recherche du site Web. En d'autres termes, le moment de l'utilisation est d'écrire les données dans l'emplacement de stockage des données et d'afficher la page Web. Méthode POST.

Utilisez simultanément les méthodes GET et POST

Le saviez-vous ? PHP permet d'utiliser à la fois les variables GET et POST sur la même page, alors n'hésitez pas à écrire des formulaires dynamiques !

Mais cela soulève immédiatement une question : que se passe-t-il si le même nom de variable est utilisé dans les tableaux GET et POST (intentionnellement ou pour d'autres raisons) ? Si vous activez la directive register_globals dans votre fichier php .ini, PHP stocke les variables telles que ENVIRONMENT, GET, POST, COOLIE et SERVER dans le tableau $GLOBAL. Si un conflit se produit, il sera basé sur ce que vous avez défini. est résolu en réajustant le contenu de la variable dans un certain ordre, en définissant l'option variable_order dans votre php.ini. Ce dernier remplacera le premier, donc si vous utilisez la valeur par défaut "EGPCS", POST remplacera GET et COOKIE remplacera POST. Vous pouvez contrôler l'ordre de substitution en ajustant de manière appropriée l'ordre des lettres dans ce fichier, ou c'est même. Il est préférable de désactiver Register_globals et d'utiliser les nouveaux tableaux super-globaux de PHP, que nous aborderons dans la section suivante.

Gestion des variables en PHP

PHP est très efficace pour transmettre des données car les développeurs ont décidé d'utiliser une conception très pratique mais (en théorie) quelque peu compliquée. Lors de la soumission d'un ensemble de données à l'aide de la méthode GET ou POST, PHP spécifie automatiquement et de manière invisible les variables sur la nouvelle page. La plupart des autres langages de programmation permettent au programmeur d'effectuer un traitement explicitement spécifié sur la page ; si la spécification est oubliée ou mal écrite, les informations ne seront pas transmises à l'agent de traitement. En comparaison, PHP est plus rapide, plus simple et plus infaillible.

Mais en raison de cette spécification automatique des variables, vous devez toujours obtenir un bon attribut NAME pour chaque élément de contrôle INPUT. En fait, l'attribut NAME n'est pas obligatoire pour HTML. Votre formulaire peut toujours fonctionner sans lui. mais les données n'auront aucune fonction car les attributs du champ de formulaire NAME de ces HTML seront les noms de variables du gestionnaire de formulaire.

En d'autres termes, la forme suivante :

< FORM ACTION = "< ?php echo $_SERVER['PHP_SELF']; ? >" METHOD = "POST" >

< INPUT TYPE="texte" NAME="email" > ;

< INPUT TYPE="submit" NAME="Submit" VALUE="Send" >

< /FORM >

le champ de texte de l'e-mail sera oblige PHP à générer la variable $_OPET['email'] (ou $HTTP_POST_VARS['email'] si vous utilisez des variables de tableau à l'ancienne, ou même $email si vous activez register_globals) lorsque le formulaire est envoyé, de même Oui, le bouton d'envoi amènera la page Web suivante à générer la variable $_POST ['submit']. Le nom que vous utilisez dans le formulaire HTML deviendra le champ de formulaire variable pour le traitement de votre formulaire PHP.

Une autre chose à retenir lors de la génération de formulaires HTML est que si vous souhaitez que le formulaire affiche le texte initial avant de le remplir, vous devez définir l'attribut VALEUR. Ceci est particulièrement utile sur deux types de formulaires : Les formulaires qui saisissent. des données dans une base de données et des formulaires envoyés plus d'une fois. Ce dernier cas se produit souvent lorsque le formulaire doit être réaffiché lorsqu'une erreur de saisie se produit. Par exemple, un formulaire utilisé pour se connecter n'entrera pas dans le formulaire tant qu'il n'est pas utilisé. Une adresse e-mail valide ou d’autres informations pertinentes peuvent être envoyées.

Par exemple, le formulaire suivant (utilisé comme feuille de calcul de pension) est conçu pour être envoyé plusieurs fois au fur et à mesure que l'utilisateur remplit les informations. Chaque fois que vous envoyez le formulaire, les informations que vous avez renseignées la fois précédente sont. Les matériaux de rebut seront remplis automatiquement. Veuillez faire attention à l'attribut VALEUR du champ du formulaire dans l'exemple de programme suivant.

< HTML >

< HEAD >



< !- -

BODY {font-size:14pt}

.heading {font-size :18pt; couleur:rouge
-->

< php

//Ce test, ainsi que la valeur du bouton Soumettre dans le formulaire ci-dessous,

//vérifiera si le formulaire est rendu pour la première fois

//(auquel cas il s'affichera avec uniquement le gain annuel par défaut

//rempli)

If (!IsSet($_POST[′Submit?])||$_POST [′Soumettre ?]!=′Calculer ?){

$_POST['CurrentAge'] = "";

$_POST['RetieAge']= "";

$_POST['Contrib'] = "";

$Total = 7;

}else{

$AnnGain = $_POST['AnnGain'];

$Années = $_POST['RetireAge'] - $_POST['CurrentAge'];

$YearCount = 0

$Total = $_POST['Countrib; '];

While($YearCount<= $Years){

$Total = round($Total *(1.0 $AnnGain/100) $_POST['Contrib']);

$YearCount = $YearCount 1;

}

}

>

< 🎜>< BIV ALIGN = CENTER ID = Divl classe = rubrique >A retraite – ​​calculateur d'épargne

< /DIV >

Remplir dans toutes les valeurs (sauf « Nest Egg ») et voyez combien d'argent vous aurez pour votre retraite selon différents scénarios. Vous pouvez modifier les valeurs et soumettre à nouveau le formulaire autant de fois que vous le souhaitez. Vous devez remplir le formulaire. deux variables « Âge ». La variable « Rendement annuel » a une valeur par défaut ajustée à l'inflation (7 % = 8 % de croissance moins 1 % d'inflation) que vous pouvez modifier pour refléter votre plus grand optimisme ou pessimisme.< 🎜>
< FORM ACTIIN = "" METHOD="POST" >



< php echo $_POST['RetireAge'];? >" >

< P >Contribution annuelle : 〈 INPUT TYPE="texte " SIZE=15 NAME="Contrib" VALUE=" < ?php echo $_POST[?Contrib?]; " >

< ="text"SIZE=15 NAME="AnnGain ”VALUE= ”< php echo $annGain > » > 🎜>< P < B >NEST EGG< /B < : ?php ECHO $Total >

< NOM = « Soumettre » VALUE = « Calculer » >

< /FORM >

< >

La figure 9-1 montre le programme ci-dessus Le résultat.



Figure 9-1 : Formulaire utilisant des méthodes et des attributs VALUE


Amélioration des formulaires et du traitement des formulaires

Comme vous pouvez le voir dans le programme ci-dessus, généralement les formulaires HTML et les formulaires Il s'agit plus facile de placer les gestionnaires dans le même programme. Cette approche présente de nombreux avantages. Par exemple, votre page de connexion affichera un message d'erreur lorsque la connexion échoue. Si vous séparez le gestionnaire de formulaire, vous devrez peut-être également GET variables pour rediriger If. vous améliorez le fonctionnement du formulaire, vous pouvez contrôler plus facilement l'affichage sans utiliser un tel mécanisme.

Lorsque vous améliorez le formulaire, le gestionnaire de formulaire doit apparaître avant que le formulaire ne soit affiché. Certaines personnes peuvent penser que parce que le formulaire est conçu en premier, le gestionnaire doit ensuite être inversé, mais si vous suivez le chemin ici, Vous comprendrez la logique, vous devez d'abord vous permettre de nommer les variables et de faire des sélections avant d'afficher le formulaire. Ceci est utile si vous devez diriger l'utilisateur vers une autre page Web dans certains cas, en utilisant la fonction header(), plus important encore. , car cette décision doit être prise avant qu'une sortie HTML ne soit affichée dans le navigateur.

Ce qui précède est le contenu du Guide d'apprentissage PHP - Chapitre 9. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !