Obtenir et poster des exemples. Attribut Action et méthode. Obtenir et poster des méthodes. Choix entre aller et poster
Les ressources Web modernes ne fournissent pas uniquement des informations au visiteur, mais n'interagissent également avec elle. Pour interagir avec l'utilisateur, vous devez recevoir des informations de celui-ci. Il existe plusieurs méthodes d'obtention de données, de méthodes très courantes. Obtenir. et PUBLIER.. Et respectivement B. Php. Il y a une prise en charge de ces méthodes de transfert de données Obtenir. et PUBLIER.. Voyons comment ces méthodes fonctionnent.
Obtenir la méthodeDonnées oBTENIR. Transmis en les ajoutant à l'adresse URL du scénario appelé destiné au traitement des informations reçues. Pour expliquer cette méthode, composez l'URL de la ressource dans la barre d'adresse dans la barre d'adresse et ajoutez d'abord le point d'interrogation (?), Puis le numéro num \u003d 10. par example
http: //domure.ru/script.php? Num \u003d 10
Si vous avez un serveur local, le domaine sera généralement localhost, puis l'entrée précédente cherchera
http: //localhost/script.php? Num \u003d 10
Dans ce cas, nous transmettons le paramètre Num à 10. Pour ajouter les paramètres suivants, le script doit être utilisé - ampersant (&), par exemple
http: //domure.ru/script.php? Num \u003d 10 & Type \u003d Nouveau & V \u003d Texte
Dans ce cas, nous avons transféré trois paramètres au script: num avec une valeur de 10, tapez avec la valeur "nouvelle" et V avec la valeur "Texte".
Pour obtenir ces paramètres dans le script, vous devez utiliser un tableau intégré. $ _GET. $ _GET ["NUM"], $ _GET ["TYPE"], $ _ Obtenez ["V"]. Ces éléments de tableau contiendront les valeurs des paramètres transmis. Pour démontrer cet exemple, créez un fichier script.php comme suit.
echo ($ _GET ["NUM"]. "
");
echo ($ _GET ["TYPE"]. "
");
Écho ($ _GET ["V"]);
?>
Et maintenant appelez ce fichier dans le navigateur
http: //at/script.php? num \u003d 10 et type \u003d nouveau & v \u003d texte
et vous verrez les paramètres transmis dans la fenêtre du navigateur. Mais si vous appelez ce fichier sans paramètres supplémentaires http: ///script.php, vous verrez des erreurs qui émettront un interprète Php.Qu'il n'y a pas de tels éléments de la graisse $ _GET. La vérification de ces données de l'utilisateur peut être mise en évidence, pas un article, donc dans cet article, je ne toucherai pas ce moment.
Comme vous le comprenez probablement, forcer l'utilisateur à composer des données dans la barre d'adresse n'est pas très bon et totalement gênant. Par conséquent, pour recevoir des données de l'utilisateur, vous devez utiliser le formulaire HTML. Écrivez un simple format HTML.
Je commente le formulaire créé. Les formulaires sont créés par la balise de formulaire. Les champs de formulaire sont créés par entrée, sélectionner des balises Textarea (vous pouvez en lire plus). Dans la balise de formulaire, l'URL du script est spécifiée dans l'attribut Action, qui recevra ces formulaires. Dans notre cas, nous avons déjà spécifié le fichier script.php déjà existant. L'attribut de la méthode définit la méthode d'envoi de données. Nous avons indiqué la méthode Obtenir.. Nous savons maintenant quel fichier ces fichiers seront transmis et de quelle manière, il reste à comprendre où les chercher ?!
Ces données de formulaire seront transférées sur le navigateur de ressources Web en les ajoutant à l'URL: sera d'abord un point d'interrogation (?), Puis les paramètres sont séparés par AMPERSANT (&). Le nom du paramètre sera pris à partir de l'attribut Nom, qui doit être épelé depuis n'importe quel champ de champ. La valeur du paramètre dépendra du type de champ. Si le champ est textuel, le texte entré par l'utilisateur sera l'utilisateur. Si le champ sera une liste, un groupe de commutateurs ou d'indicateurs, la valeur de la valeur de la valeur de l'élément sélectionné sera la valeur du paramètre. Je vais expliquer sur l'exemple de notre formulaire. Si l'utilisateur entre dans le numéro 10 dans le champ Entrée, le nom du paramètre sera numérique (la valeur de l'attribut Nom de la balise d'entrée) et la valeur sera la valeur (numéro entré par l'utilisateur). En conséquence, le navigateur formera une paire de "num \u003d 10". Si l'utilisateur de la liste sélectionne l'option "Oui", le nom du paramètre sera TYPE (l'attribut Valeur de la sélection de la balise de nom), et la valeur sera la valeur (valeur de la valeur de l'option de la balise de valeur. ). En conséquence, le navigateur formera une paire de "type \u003d oui".
Maintenant, ce formulaire sera placé sur la page forma.php.
Entrez toutes les valeurs dans les champs de formulaire et cliquez sur le bouton "Soumettre". Après avoir appuyé sur le bouton Navigateur, ouvre une autre page (script.php) et les données que vous avez entrées dans la fenêtre du navigateur seront affichées. Je pense que c'est clair pourquoi: le navigateur transférera des données sur le script script.php et dans le script, ces données seront traitées et affichées.
Post-méthodeVoyons maintenant comment la méthode fonctionne PUBLIER..
Envoyer ces méthodes PUBLIER. Vous devez utiliser le formulaire HTML. Comment nous rappelons-nous que la méthode de la forme est responsable de la méthode d'envoi du formulaire de données de formulaire. Par conséquent, vous devez spécifier la valeur postale dans l'attribut de la méthode. Sinon, le formulaire peut être le même que pour la méthode Obtention. Nous allons changer notre forme que nous avons déjà utilisé pour transférer des données sur la méthode Obtention de transmission par la méthode postale.
Comme vous pouvez le constater, le formulaire reste pareil à l'exception des attributs de la méthode et de l'action. Maintenant, les données seront transmises au script_post.php. Positionnez notre formulaire sur la page forma_post.php.
Maintenant, vous devez écrire un script qui traitera nos données de formulaire.
Pour obtenir une méthode transmise dans le script de données PUBLIER. besoin d'utiliser un tableau intégré $ _Post.. Les clés de ce tableau seront les noms des paramètres. Dans notre cas, vous devez utiliser $ _Post ["num"], $ _post ["type"], $ _ post ["" V "]. Ces éléments de tableau contiendront les valeurs des données transmises. Comme vous voyez la différence d'utilisation de la méthode GET, elle n'est exprimée que dans l'utilisation d'un tableau $ _Post. Par conséquent, nous ne serons pas difficiles à écrire un fichier script_post.php:
echo ($ _Post ["NUM"]. "
");
echo ($ _Post ["type"]. "
");
écho ($ _Post ["V"]);
?>
Ouvrez maintenant le fichier forma_post.php dans le navigateur. Entrez quelques données dans le champ Formulaire et appuyez sur le bouton "Soumettre". Maintenant, probablement, vous avez constaté la différence entre la méthode postale à partir de get - ces formulaires ne figuraient pas dans la barre d'adresse du navigateur. Méthode de données PUBLIER. Vous ne pouvez pas passer à travers la barre d'adresse du navigateur. Cette différence essentielle doit être rappelée.
DANS Php. En indépendance, quelles données de méthode ont été envoyées - par la méthode postale ou la méthode d'obtention - pour obtenir des données à l'aide d'un tableau $ _Request. Comparaison des méthodes d'obtention et de posteLors de l'utilisation de la méthode GET, les données sont transmises en ajoutant à l'URL. Ainsi, ils seront visibles pour l'utilisateur qui en termes de sécurité n'est pas toujours bon. En outre, la quantité maximale de données transmises dépendra du navigateur - du nombre maximal admissible des caractères de la barre d'adresse du navigateur.
Lors de l'utilisation de la méthode postale, les données ne seront pas visibles pour l'utilisateur (non affichées dans la barre d'adresse du navigateur). Et par conséquent, ils sont plus protégés et, par conséquent, le traitement du programme de ces données est plus protégé en termes de sécurité. En outre, la quantité de données transmissibles n'est pratiquement pas limitée.
Lorsque vous choisissez un moyen de transfert de données, vous devez prendre en compte les fonctionnalités données et arrêter à la méthode la plus acceptable.
En commun entre eux, le fait qu'ils travaillent de manière égale. La différence entre eux est techniquement no. Mais il y a des différences idéologiques.
Je vais en parler dans le contexte de PHP. Veuillez noter que le protocole HTTP à PHP possède une attitude indirecte, car elle a été créée pour échanger des pages HTML et PHP étend simplement les possibilités et l'autre.
Obtenir une requête est utilisé pour obtenir des données un message à envoyer. (Je vous rappelle que cela fonctionne techniquement égale).
Par conséquent, dans le contexte de PHP, s'appuyer sur cette idéologie a été faite comme suit:
1. Chaque fois que PHP est lancé, des tableaux superglobaux ($ _GET, $ _post) sont créés par défaut.
2. S'il y a un point d'interrogation dans la chaîne de requête (?). Alors tout est considéré après cela paramètres Obtenir des demandes qu'ils sont présentés dans la "clé" format \u003d "valeur" et un signe d'ampersand (&) est utilisé comme séparateur
Exemple:
Obtenir /index.php?Name\u003dandrey&sername\u003dhalkin
Ceci est une chaîne de requête, ici 2 paramètres. Ces paramètres tomberont dans la matrice $ _GET.
3. $ _Post est rempli d'une autre manière. Le contenu de cette matrice est rempli à partir des "en-têtes de demande". C'est-à-dire de l'endroit caché des yeux explicitement. La routine entière pour créer de telles titres prend sur un navigateur. Bien que parfois quelque chose soit édité dans les titres en manuel.
Le plus souvent, la demande postale est utilisée sous forme (pour envoyer des données).
Par exemple, nous avons un formulaire pour vous connecter à 2 champs de connexion et de mot de passe.
Imaginez que nous utilisons la méthode GET. Ensuite, lors de l'envoi d'un formulaire, nous nous tournons vers l'adresse suivante /login.php?login\u003dandrey&password\u003d123 conviennent que cela n'est pas sûr de transmettre de telles informations. Tout le monde peut ouvrir votre navigateur et commencer à entrer l'adresse du site. Il peut voir vos mots de passe et votre identifiant.
Mais si nous précisions par la méthode postale, nous obtiendrions la demande suivante:
Post /Login.php (Login \u003d Andrey & Mot de passe \u003d 123) Ce qui est entre parenthèses serait masqué et non enregistré dans le navigateur.
En général, résumez:
Obtenir est d'obtenir une certaine page sous un formulaire spécifique (tri, page actuelle dans le blog, la chaîne de recherche, etc.).
Post - pour les données de mandrin qui n'affecte pas l'affichage de la page, dans la manière dont ces données n'affectent que le résultat de l'exécution de script (connexions, mots de passe, numéros de carte de crédit, messages, etc.).
Et une autre bonne nouvelle peut être combinée, par exemple
Poste /index.php?page\u003dLogin (Login \u003d Andrey & Mot de passe \u003d 123) Je pense avoir déjà expliqué assez qu'il s'avère et quels paramètres à quel tableau tomberont.
Obtenir et poster des méthodes dans HTTP et HTTPS sont les deux méthodes les plus populaires utilisées pour transférer des données du client sur le serveur à l'aide du protocole HTTP (protocole de transmission hypertexte). Et le get and Post peut être utilisé pour envoyer une demande et recevoir une réponse, mais il y a une différence significative entre eux.
La différence entre les demandes d'accès à HTTP ou HTTPS est une question populaire sur chaque entretien de programmation Web. Étant donné que HTML ne dépend pas de la technologie du serveur Web, tel que Java, ASP ou PHP et HTTP, le protocole principal dans l'espace Internet, il est impossible d'ignorer clairement l'importance de comprendre les méthodes d'obtention et de poste. Dans cet article, nous examinerons ce que la méthode HTTP Obtenir est, quelle est la méthode Post HTTP, quand utiliser une une ou une autre demande et quelle est la différence entre eux. Nous analyserons chaque concept séparément.
Qu'est-ce que HTML?
HTML est une langue utilisée pour créer des pages Web. L'hypertexte fait référence aux hyperliens pouvant contenir une page HTML. Le langage de marquage signifie comment utiliser des balises pour déterminer la mise en page de la page et des éléments de la page.
Vous trouverez ci-dessous un exemple HTML, utilisé pour déterminer la page Web de base avec l'en-tête et un paragraphe du texte:
<Голова>
<Название> Techters.com. название>
HEAD>
<Тело>
Ceci est un exemple de paragraphe dans HTML. p>
Body>
Html>
La première chaîne détermine le type de contenu contenu dans le document.,
et qui sont tous inclus comme exemple ci-dessus. L'en-tête de la page, les métadonnées et les liens vers des fichiers de liaison sont placés entre le contenu réel de la page se situe entre les balises. .Au cours des dernières décennies, le réseau a survécu à de nombreux changements, mais HTML a toujours été la langue principale utilisée pour développer des pages Web. Fait intéressant, bien que les sites Web soient devenus plus avancés et plus interactifs, HTML est devenu plus facile. Si vous comparez la source de page HTML5 avec une page similaire écrite dans HTML 4.01 ou XHTML 1.0, sur la page HTML5, il y aura moins de code. Cela est dû au fait que le HTML moderne repose sur des feuilles de style en cascade ou JavaScript afin de formater presque tous les éléments de la page.
De nombreux sites Web dynamiques génèrent des pages Web "à la volée" à l'aide de la langue du serveur de script, telle que PHP ou ASP. Cependant, même des pages dynamiques doivent être formatées en utilisant HTML. Par conséquent, les langues de scénario génèrent souvent un code HTML envoyé au navigateur Web.
Le protocole de transmission HTTP Hypertext est conçu pour interagir entre les clients et les serveurs et fonctionne comme un protocole de réponse de requête.
Le navigateur Web peut être un client et l'application sur l'ordinateur sur lequel le site Web est affiché, le serveur.
Le client (navigateur) envoie une requête HTTP au serveur, le serveur renvoie une réponse contenant des informations sur l'état de la requête et peut également contenir le contenu demandé.
Deux méthodes de requêtes obtiennent et post
Deux méthodes fréquemment utilisées pour la réponse-réponse entre le client et le serveur:
Obtenir - demande des données de la ressource spécifiée;
Post - envoie des données à traiter à la ressource spécifiée.
Le transfert de get and post signifie littéralement obtenir et post-traitement.
En savoir plus sur http
HTTP est un protocole utilisé pour transférer des données via Internet. Il fait partie du package de protocole Internet et définit les commandes et les services utilisés pour transmettre des données de page Web.
HTTP utilise le modèle client-client. Le client peut être un ordinateur à domicile, un ordinateur portable ou un appareil mobile. Le serveur HTTP est généralement un hôte Web avec un logiciel de serveur Web, tel que Apache ou IIS. Lorsque l'utilisateur a accès au site Web, le navigateur envoie une demande au serveur Web approprié et répond au code d'état HTTP. Si l'URL est valide et que la connexion est fournie, le serveur enverra la page Web au navigateur et aux fichiers associés.
Les codes d'état HTTP GÉNÉRAL comprennent:
200 - une demande réussie (il y a une page Web);
301 - se déplace constamment (souvent redirigé vers une nouvelle URL);
401 - demande non autorisée (autorisation requise);
500 - Erreur de serveur interne (fréquemment causée par une configuration de serveur incorrecte).
Poster et obtenir http
HTTP définit les commandes GET et POST utilisées pour traiter les vues de formulaire sur des sites Web. La commande Connect est utilisée pour faciliter une connexion sécurisée cryptée à l'aide de SSL. Les connexions HTTP cryptées se produisent via HTTPS - Extension HTTP destinée aux transferts de données sécurisés.
Les URL commençant par "http: //" sont disponibles selon les protocoles de transmission hypertext standard et par défaut utilisent le port 80. URL commençant par "HTTPS: //" sont disponibles via une connexion HTTPS sécurisée et utilisent souvent le port 443.
PUBLIER.
La poste est une série de contrôles système effectués par des ordinateurs et d'autres périphériques électroniques lorsqu'ils sont allumés. Les résultats de test peuvent être affichés à l'écran, sortie via des voyants clignotants ou simplement enregistrés à l'intérieur. Dans les systèmes informatiques, la post opération est effectuée au début de la séquence de démarrage. Si tous les tests sont passés, le reste du processus de démarrage sera toujours poursuivi automatiquement.
Systèmes d'exploitation Les périphériques Mac et Windows démarrent chaque fois que l'ordinateur est chargé ou redémarré. La numérisation vérifie le matériel et garantit que le processeur, la RAM et les périphériques de stockage fonctionneront correctement. Si une erreur est survenue pendant le poste, le processus de démarrage peut faire une pause ou complètement arrêter, et le moniteur peut apparaître sur les ordinateurs d'erreur PC PC s'affiche souvent sur l'écran Information de BIOS. Ils peuvent être affichés sous forme de codes cryptiques, tels que "08", ou en tant que message système, tels que "Erreur de mémoire système lorsqu'ils sont déplacés." Sur Mac, les erreurs de poste sont souvent indiquées par des graphiques simples, par exemple une icône de dossier cassée, indiquant que l'unité de démarrage n'est pas trouvée.
Manifestations physiques
Dans certains cas, l'écran de l'ordinateur peut ne pas s'allumer avant les erreurs de poste. Si cela se produit, les codes d'erreur peuvent être affichés via des indicateurs de voyants clignotants ou des signaux audio. Par exemple, Apple IMAC jouera trois tons consécutifs pour résister à une pause de cinq secondes, puis répéter les tons lorsqu'une mauvaise bélier est détectée lors du démarrage. La plupart des PC publiquent également des signaux sonores lorsque les erreurs de poste sont détectées, bien que chaque fabricant utilise ses propres codes.
La poste est un terme assez technique qui utilise uniquement des techniques informatiques de manière régulière. Cependant, il s'agit d'une bonne abréviation, car elle permet de mieux comprendre les messages d'erreur pouvant apparaître sur des ordinateurs ou d'autres périphériques électroniques. Si l'ordinateur ne démarre pas en raison de l'erreur post, vous pouvez utiliser un autre périphérique pour trouver la valeur et créer des erreurs sur le site Web du fabricant. Ensuite, vous pouvez prendre les actions appropriées - supprimer le module de mémoire ou réinstaller la carte vidéo avec l'équipement de redémarrage ultérieur.
Obtenir.
La poste est également une méthode de transmission des variables de formes HTML à partir d'une page Web à une autre, sans les afficher dans la barre d'adresse. Méthode alternative - Obtenez, ce qui ajoute des valeurs à l'URL. Les demandes de post HTTP fournissent des données supplémentaires du client (navigateur) au serveur dans le corps du message. Au contraire, obtenir les demandes incluent toutes les données nécessaires dans l'URL. Les formulaires en HTML peuvent utiliser n'importe quelle méthode, en spécifiant la méthode \u003d poste ou méthode \u003d get (par défaut) dans l'élément
Enregistrement de ce code dans le fichier HTML et l'afficher avec votre navigateur préféré, vous verrez le formulaire HTML habituel:
Étiqueter
, En fait, demande la forme. Ses attributs sont tous deux facultatifs:- action - Indique l'URL (complète ou relative) à laquelle le formulaire sera envoyé. Si cet attribut ne spécifie pas, la plupart des navigateurs (plus précisément, tous les navigateurs connus de moi) envoient un formulaire au document actuel, c'est-à-dire "sur eux-mêmes". Il s'agit d'une réduction commode, mais selon la norme HTML, l'attribut Action est requis.
- la méthode est un moyen d'envoyer un formulaire. Il y a deux d'entre eux.
- Obtenez - Envoi de données de formulaire dans la barre d'adresse.
Pourriez-vous remarquer la présence à la fin de l'URL du symbole "?" Et les données suivantes dans le paramètre format \u003d valeur. Ici "Paramètre" correspond à la valeur de l'attribut Nom des éléments de formulaire (voir ci-dessous sur TEG ), et la "valeur" - le contenu de l'attribut de valeur (en elle, par exemple, contient l'entrée de l'utilisateur dans le champ de texte de la même balise ).
Par exemple, essayez de chercher quelque chose dans YANDEX et faites attention à la barre d'adresse du navigateur. Ceci est une méthode GET. - Post - Moule Ceux-ci sont envoyés dans le corps de la requête. Si ce n'est pas tout à fait clair (ou il est complètement flou), qu'est-ce que c'est - ne vous inquiétez pas, nous serons bientôt revenir à cette question.
- Obtenez - Envoi de données de formulaire dans la barre d'adresse.
Étiqueter - Spécifie l'élément de formulaire défini par l'attribut type:
- La valeur "texte" définit un champ d'entrée à une seule ligne
- La valeur "Soumettre" définit le bouton lorsque le formulaire est enfoncé sur le serveur.
D'autres valeurs sont possibles (et - Pas la seule balise qui spécifie l'élément de forme).
Alors, que se passe-t-il lorsque nous appuyons sur le bouton "OK"?
- Le navigateur parcourant les éléments inclus dans la forme et génère de leurs attributs de nom et de valeur ces formulaires. Supposons que le nom Vasya ait été introduit. Dans ce cas, ces formulaires - NAME \u003d VASYA & OKBUTTON \u003d OK
- Le navigateur établit une connexion au serveur, envoie une demande au serveur spécifié dans l'attribut de balises d'action.
- Le serveur analyse la requête reçue, forme une réponse, l'envoie au navigateur et ferme la connexion.
- Le navigateur affiche le document reçu du serveur.
L'envoi de la même requête manuellement (avec l'aide Telnet) ressemble à ceci (Supposons que le nom de domaine du site est www.example.com):
Telnet www.example.com 80 get /cgi-bin/form_handler.cgi?name\u003dvasya&okbutton\u003dok http / 1.0 \\ r \\ n hôte: www.example.com \\ r \\ n \\ r \\ n
Comme vous, probablement, avez déjà deviné, appuyez sur le bouton Soumettre sous la forme avec la méthode d'envoi «GET» est similaire à l'entrée de l'URL correspondante (avec une marque d'interrogation et des données de formulaire à la fin) de l'adresse du navigateur. bar:
Http://www.example.com/cgi-bin/form_handler.cgi?name\u003dvasya&okbutton\u003dok
En fait, la méthode GET est toujours utilisée lorsque vous demandez un document sur le serveur, simplement en entrant dans son URL ou en cliquant sur le lien. Utilisant
Le formulaire dans les lignes 8-12 contient deux éléments: nom et okbutton. L'attribut de la méthode spécifie la méthode post-formulaire, l'attribut d'action indiquant l'URL à laquelle le formulaire est envoyé est rempli de la valeur de variable de serveur PHP_SHELF Server - l'adresse du script en ce moment.
=$_SERVER["PHP_SELF"]?> - forme abrégée d'enregistrement pour echo $_SERVER["PHP_SELF"]; ?> .
Supposons, dans le champ Nom, nous sommes entrés dans la valeur de Vasya et le bouton OK a été enfoncé. Dans le même temps, le navigateur envoie au serveur de poste. Corps de requête: Nom \u003d Vasya & Okbutton \u003d OK. PHP remplit automatiquement le tableau $ _Post:
$ _Post ["Nom"] \u003d "Vasya"
$ _Post [Okbutton] \u003d "OK"
En fait, la valeur de "Vasya" est envoyée au navigateur de la forme d'urlencode; Pour le codage Windows-1251, cette valeur ressemble à% C2% E0% F1% FF. Mais, étant donné que PHP effectue automatiquement le décodage nécessaire, nous pouvons "oublier" à propos de cette fonctionnalité - jusqu'à ce que vous ayez à travailler avec des requêtes HTTP manuellement.
Comme dans le corps de la requête, seuls les noms et les valeurs sont indiqués, mais pas les types d'éléments de formulaire, PHP n'a aucune idée, correspond à $ _Post ["Nom"] ligne entrée, bouton ou liste. Mais cette information, en général, n'est absolument pas nécessaire. :)
Puisque vous savez ce qui est écrit sur le bouton d'envoi, nous sommes facultatifs, dans la ligne 11, vous pouvez supprimer l'attribut Nom, court-circuiter la description du bouton à . Dans ce cas, le navigateur enverra le nom \u003d Vasya-Vasya.
Et maintenant - la même chose, mais pour la forme de la forme:
si (Isset ($ _ obtenir ["nom"])) (
Écho "
Bonjour, "$ _GET [" Nom "]."
!" ;}
?>
En ligne 8, il serait possible d'écrire avec le même succès
Aucune nouvelle technique n'est utilisée ici. Observez, exécutez le code, essayez de modifier ...
Modifiez le dernier exemple de sorte que l'utilisateur n'a pas besoin de remplir les champs. Pour ce faire, remplissez les attributs de valeur des éléments de formulaire viennent juste d'entrer des valeurs.
$ Nom \u003d émetteur ($ _ post ["nom"])? $ _Post ["nom"]: "";
$ Année \u003d Isset ($ _ Post ["Année"])? $ _Post ["an"]: "";
Si (Isset ($ _ POST ["NOM"], $ _POST ["Année"])) (
Si ($ _Post ["nom"] \u003d\u003d "") (
ECHO "Spécifiez le nom!
"
;
) Sinon si ($ _Post ["an"]<
1900
||
$_POST
[
"year"
] >
2004
) {
Écho. "Spécifiez l'année de naissance! Plage de valeurs valide: 1900..2004
"
;
) AUTRE (
Echo "bonjour". $ _Post ["nom"]. "!
"
;
$ AGE \u003d 2004 - $ _Post ["Année"];
Echo "vous. € Age. " années
"
;
}
Écho "
" ;
}
?>
Quelques lignes incompréhensibles 4 et 5. Tout est très simple: la ligne 4 pourrait être enregistrée comme ceci:
si (Isset ($ _ POST ["NOM"])))
$ nom \u003d $ _post ["nom"];
aUTRE.
$ Nom \u003d "";
Une question peut survenir - pourquoi ne pas jeter les cordes 4-5 et ne pas écrire:
Entrez votre nom:
">
Entrez votre année de naissance:
">
Le fait est que si ces postes ne sont pas définis - et ce sera, si le formulaire n'a pas encore été rempli, PHP émettra des avertissements sur l'utilisation de variables non initialisées (et, bien fondées: un tel message vous permet de vous permettre de Trouvez des fautes de frappe fortement attachées dans des noms de variables et avertit également des "trous" possibles sur le site). Bien sûr, vous pouvez mettre le code avec Isset directement dans le formulaire, mais il s'avère trop encombrant.
Compris? Et maintenant, essayez de trouver une erreur dans le code ci-dessous. Eh bien, pas tout à fait une erreur, mais des défauts.
htmlspecialchars ()
N'a pas trouvé? Je vais vous dire. Entrez, par exemple, dans le champ "Nom" Double citations et du texte, par exemple, VA "SIA. Envoyez un formulaire et regardez le code source de la page reçue. Dans la quatrième ligne, il y aura quelque chose comme :
Entrez votre nom:
C'est - rien de bien. Et si l'utilisateur rincière est entré dans le code JavaScript?
Pour résoudre ce problème, il est nécessaire d'utiliser la fonction HTMLSpecialchars (), qui remplacera les caractères de service sur leur représentation HTML (par exemple, citations - ON »):
$ Nom \u003d émetteur ($ _ post ["nom"])? Htmlspecialchars ($ _Post ["nom"]): "";
$ Année \u003d Isset ($ _ Post ["Année"])? Htmlspecialchars ($ _Post ["an"]): "";
Si (Isset ($ _ POST ["NOM"], $ _POST ["Année"])) (
Si ($ _Post ["nom"] \u003d\u003d "") (
ECHO "Spécifiez le nom!
"
;
) Sinon si ($ _Post ["an"]<
1900
||
$_POST
[
"year"
] >
2004
) {
Écho. "Spécifiez l'année de naissance! Plage de valeurs valide: 1900..2004
"
;
) AUTRE (
Echo "bonjour". $ Nom. "!
"
;
$ AGE \u003d 2004 - $ _Post ["Année"];
Echo "vous. € Age. " années
"
;
}
Écho "
" ;
}
?>
Répétez l'expérience et assurez-vous que le code HTML est maintenant correct.
N'oubliez pas - la fonction HTMLSpecialchars () doit toujours être utilisée lorsque le contenu de la variable dans lequel le spécial HTML peut être présent est affiché.
phpinfo ()
La fonction phpinfo () est l'une des plus importantes de PHP. Il affiche des informations sur les paramètres PHP, les valeurs de toutes sortes de variables de configuration ...
Pourquoi je la mentionne dans l'article sur les formulaires? phpinfo () - outil de débogage plus confortable. phpinfo (), entre autres choses, affiche les valeurs de toutes les variables $ _get, $ _post et $ _Server. Donc, si la variable forme "perdue", le moyen le plus simple de détecter, quel est le cas - utilisez la fonction phpinfo (). Pour que la fonction affiche uniquement les valeurs des variables (et que vous n'avez pas eu à faire défiler une dizaine de pages), il convient d'appeler comme suit: phpinfo (info_variables); , ou - c'est absolument la même - phpinfo (32) ;.
phpinfo (32);
?>
Ou, par exemple, cette situation: vous voulez connaître l'adresse IP du visiteur. Vous vous rappelez que la variable correspondante est stockée dans un tableau de $ _Server, mais - ce n'est pas suffisant - ils ont oublié exactement comment la variable est appelée. Encore une fois, appelez phpinfo (32); Nous recherchons votre adresse IP dans la plaque et trouvons-la - dans la chaîne $ _Server ["Remote_addr"].