Contacts

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.



Vérification de la méthode GET en PHP


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.


Entrez le numéro

As tu un ordinateur?

Votre commentaire:





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.



Formulaire de transfert de données utilisant GET et PHP



Entrez le numéro

As tu un ordinateur?

Votre commentaire:









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.


Entrez le numéro

As tu un ordinateur?

Votre commentaire:





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.



Formulaire de transfert de données POST et PHP



Entrez le numéro

As tu un ordinateur?

Votre commentaire:









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:



Vérification de la méthode postale en 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.

<Тело>

Ceci est un exemple de paragraphe dans 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

. La méthode spécifiée détermine la manière dont ces formulaires sont transmis au serveur. Lorsque la méthode GET est utilisée, toutes les données de formulaire sont codées dans l'URL en tant que paramètres de chaîne de requête. Avec Post, ces formulaires apparaissent dans le message de requête HTTP.

Différences de représentation de forme

La méthode Post Requête demande à un serveur Web de recevoir et de stocker des données conçues dans le corps de la requête. Il est souvent utilisé lors du téléchargement d'un fichier ou lors de l'envoi d'un formulaire Web terminé.

La méthode HTTP Obtenir la requête récupère des informations à partir du serveur. Dans le cadre de la requête GET, certaines données peuvent être transmises dans la ligne de requête URL, en spécifiant les conditions de recherche, les gammes de date ou d'autres informations qui définissent la requête.

Dans la requête post, une quantité arbitraire de données de tout type peut être envoyée au serveur dans le corps du message de requête. Le champ d'en-tête de la requête postale indique généralement le type de message multimédia Internet.

La principale différence entre les demandes de get et post est qu'ils correspondent à diverses demandes HTTP telles que définies dans les spécifications HTTP. Le processus d'alimentation des deux méthodes commence de la même manière: l'ensemble de données de formulaire est créé par le navigateur et est ensuite codé par la méthode spécifiée par l'attribut ENCTYPE. Pour la méthode \u003d "Post, l'attribut EnCype peut être multipart / form-Data ou Application / X-www-Form-Urlencodé, tandis que pour la méthode \u003d" get "ne démarre que via l'application / x-www-formulaire-urlencoded. Celles-ci Le jeu de données est ensuite transmis au serveur.

Pour envoyer un formulaire à l'aide de la méthode \u003d "Get" Un navigateur crée une URL, en prenant la valeur d'un attribut d'action et ajout d'un ensemble de données de formulaire codé à l'aide du type de contenu Application / X-WW-FORM-URLENCODÉ. Le navigateur traite ensuite cette URL, comme s'il se référait au lien (ou, comme si l'utilisateur avait marqué l'URL manuellement). Le navigateur divise l'URL de la pièce et reconnaît l'hôte, puis envoie la demande d'obtention de cet hôte avec le reste de l'URL comme argument. Il est important de noter que ce processus signifie que ces formulaires sont limités aux codes ASCII. Une attention particulière doit être accordée au codage et à la décodage d'autres types de caractères lors de la transmission de l'URL au format ASCII.

Présentation du formulaire avec méthode \u003d "Post" Causes Envoi d'une requête postale à l'aide d'une valeur d'attribut Action et d'un message créé conformément au type de contenu spécifié par l'attribut Encype.

Php.

PHP est un HTML intégré. Cela signifie que le code PHP peut être inséré dans la page HTML. Le code PHP est lu ou analysé par le serveur sur lequel se trouve la page. La sortie des fonctions d'obtention et de poste dans PHP sur la page est généralement renvoyée sous forme de code HTML pouvant être lu par le navigateur. Étant donné que le code PHP est converti en HTML avant de télécharger la page, les utilisateurs ne peuvent pas afficher le code PHP sur la page. Cela rend les pages de PHP suffisantes pour accéder aux bases de données et autres informations protégées.

La majeure partie de la syntaxe PHP est empruntée à d'autres langues, telles que C, Java et Perl. Toutefois, PHP comporte un certain nombre de fonctionnalités uniques et de fonctionnalités spéciales. Le but de cette langue est de permettre aux développeurs Web d'écrire rapidement et facilement des pages générées de manière dynamique.

Wordpress.

WordPress est un système de gestion de contenu gratuit utilisé pour créer et gérer des sites Web. Sa simplicité d'utilisation et ses fonctions de blogses uniques a aidé à devenir l'outil de gestion de blog le plus populaire sur Internet.

L'interface WordPress permet à quiconque n'a aucune expérience de développement Web, créer et publier un site Web. Les outils de blogging intégrés offrent un moyen simple de suivre des messages individuels, des visiteurs et des commentaires des utilisateurs.

Malgré le fait que des milliers de modèles de WordPress et de plug-ins sont disponibles, le système d'obtention de la publication de WordPress a toujours ses limites. Comme il s'agit d'un service basé sur des modèles, l'utilisateur doit commencer par un site Web prédéterminé et ne pas créer de pages à partir de zéro. De plus, il n'est pas possible d'insérer des scripts ni de gérer une base de données avec le même niveau de contrôle que le site Web de l'utilisateur offre.

L'outil POST_GET_ID () vous permet d'utiliser des scripts pour contrôler l'élément, car il dispose d'un identifiant unique, et lorsque vous l'envoyez sous la forme d'un formulaire via ces méthodes, la liste déroulante sera expédiée avec un identifiant unique qui permet au script pour noter quelle publication fonctionne. Comme alternative, une variable cachée peut être envoyée, ce qui permettra au script de voir quelle publication fait référence à la présentation.

Cet article est la réponse à la question définie dans les commentaires à l'un de mes articles.

Dans l'article, je tiens à indiquer ce que les méthodes HTTP obtiennent / post / placent / supprime et d'autres, pour lesquelles ils ont été inventés et comment les utiliser conformément au reste.

Http.

Alors, quel est l'un des principaux protocoles Internet? Pédants envoient à RFC2616 et le reste racontera humainement :)

Ce protocole décrit l'interaction entre les deux ordinateurs (client et serveur), construit sur la base de données des messages, appelée demande) et réponse (réponse). Chaque message est composé de trois parties: ligne de départ, titres et corps. Dans ce cas, seule la ligne de départ est obligatoire.

Les lignes de départ pour la demande et la réponse ont un format différent - nous ne sommes intéressés que par la ligne de départ de la requête, qui ressemble à ceci:

Méthode URI Http / Version. ,

Lorsque la méthode est juste la méthode de la requête HTTP, l'URI est l'identifiant de ressource, la version est la version du protocole (version actuelle actualisée 1.1).

Les en-têtes sont un ensemble de nom de paire, séparé par le côlon. Dans les en-têtes, diverses informations de service sont transmises: le codage des messages, le nom et la version du navigateur, l'adresse à partir de laquelle le client est venu (référencier) et ainsi de suite.

Le corps du message est, en fait, les données transmises. En réponse aux données transmises, en règle générale, la page HTML demandée par le navigateur et dans la requête, par exemple dans le corps du message, le contenu des fichiers téléchargés sur le serveur est transmis. Mais en règle générale, le corps du message dans la requête est généralement absent.

Un exemple d'interaction http

Considérer un exemple.

Enquête:
Obtenir /index.php http / 1.1 Host: Exemple.com User-Agent: Mozilla / 5.0 (X11; U; Linux I686; Ru; RV: 1.9B5) Gecko / 2008050509 Firefox / 3.0B5 Accepter: Texte / Connexion HTML: Fermer
La première ligne est la chaîne de requête, le reste sont des titres; Il n'y a pas de message corporel

Répondre:
HTTP / 1.0 200 OK Server: NGinx / 0.6.31 Langue de contenu: RU Type de contenu: Texte / HTML; Charset \u003d UTF-8 Contenu-Longueur: 1234 Connexion: Fermer ... Page HTML ...

Ressources et méthodes

Revenons à la ligne de départ de la demande et rappelons-il qu'il présente un tel paramètre d'URI. Ceci est déchiffré comme identifiant de ressource uniforme - un identifiant de ressource uniforme. En règle générale, la ressource est, en règle générale, le fichier sur le serveur (exemple de l'URI dans ce cas "/styles.css"), mais il peut y avoir n'importe quel objet abstrait ("/ blogs / webdev /" - indique la Bloquer "Développement Web", non sur un fichier spécifique).

Le type de requête HTTP (également appelé méthode HTTP) indique le serveur au fait que nous voulons produire avec une ressource. Initialement (au début des années 90), il a été supposé que le client ne pouvait en vouloir que de l'obtenir de la ressource - pour l'obtenir, mais maintenant, par le protocole HTTP, vous pouvez créer des messages, modifier le profil, supprimer des messages et bien plus encore. Et ces actions sont difficiles à combiner le terme "reçu".

Pour délimiter l'action avec des ressources au niveau de la méthode HTTP et les options suivantes ont été inventées:

  • Obtenir - obtenir une ressource
  • Post - création de ressources
  • Mettre - Mise à jour des ressources
  • Supprimer - Supprimer la ressource
Faites attention au fait que la spécification HTTP n'oblige pas le serveur de comprendre toutes les méthodes (qui est bien plus de 4) - uniquement le get est requis et n'indique également pas le serveur qu'il devrait faire lors de la réception d'une demande avec une ou une autre méthode. Et cela signifie que le serveur en réponse à la demande de suppression /index.php http / 1.1 n'est pas obligé de Supprimer la page Index.PHP sur le serveur, ainsi que pour obtenir /index.php http / 1.1 demande n'est pas obligé de Renvoyer la page Index.PHP à vous, il peut le supprimer, par exemple :)

Reste entre dans le jeu

Le repos (transfert d'état de représentation) est le terme a été introduit en 2000 par le mode de vue des Roem (Roy Fielding) - l'un des développeurs du protocole HTTP - comme nom du groupe des principes de construction de sites Web. En général, le reste couvre une zone plus large que http - il peut être appliqué dans d'autres réseaux avec d'autres protocoles. Le repos décrit les principes de l'interaction et du serveur du client, en fonction des concepts de "ressource" et de "verbe" (vous pouvez les comprendre comme sujets à la fois). Dans le cas de HTTP, la ressource est déterminée par son URI et le verbe est une méthode HTTP.

Le repos propose de refuser d'utiliser la même URI pour différentes ressources (c'est-à-dire les adresses de deux articles différents comme /index.php?article_id\u003d10 et /index.php?article_id\u003d20 n'est pas le chemin de retour) et utilisez différents Méthodes HTTP pour différentes actions. C'est-à-dire qu'une application Web écrite à l'aide de l'approche de repos supprimera une ressource lors de son accès avec la méthode HTTP de Suppr (bien sûr, cela ne signifie pas qu'il est nécessaire de donner la possibilité de tout supprimer, mais quelconque Une demande de suppression de l'application doit utiliser la méthode HTTP-Supprimer).

Le repos donne aux programmeurs la possibilité d'écrire des applications Web normalisées et légèrement plus belles qu'auparavant. Utilisation du reste, URI pour ajouter un nouvel utilisateur ne sera pas non /USER.PHP?Action\u003dCreate (Méthode Obtenir / post) et simplement /USER.PHP (méthode postale stricte).

En conséquence, ensemble la spécification existante HTTP et l'approche de repos acquièrent enfin la signification de diverses méthodes HTTP. Obtenir - Retourne la ressource, Post - Crée un nouveau, Met - met à jour - la suppression existante, Supprimer - Supprêts.

Problèmes?

Oui, il y a un petit problème avec l'utilisation du reste dans la pratique. Ce problème s'appelle HTML.

Les demandes de mise / de suppression peuvent être envoyées via XMLHTTPQUEST, en vous référant au serveur manuel (par exemple, via Curl ou même via Telnet), mais vous ne pouvez pas créer de formulaire HTML qui envoie une demande de mise / Supprimer à part entière.

Le fait est que la spécification HTML ne vous permet pas de créer des formulaires d'envoi de données différemment de via GET ou POST. Par conséquent, pour un fonctionnement normal avec d'autres méthodes, ils doivent les imiter artificiellement. Par exemple, dans le rack (un mécanisme sur la base desquels Ruby interagit avec le serveur Web; avec rack, rails, armatures et autres frameds rubis sont fabriqués) sous la forme que vous pouvez ajouter un champ caché appelé "_method", et en tant que Valeur Spécifiez le nom de la méthode (par exemple, "Met") - Dans ce cas, une post-demande sera envoyée, mais le rack sera en mesure de prétendre que j'ai été mis, et de ne pas poster.

Forme html. Tableaux $ _Post et $ _GET

Forme html. Méthodes d'envoi de données au serveur

Avec les formulaires HTML, vous avez probablement déjà rencontré:

Entrez votre nom:

Enregistrement de ce code dans le fichier HTML et l'afficher avec votre navigateur préféré, vous verrez le formulaire HTML habituel:

Étiqueter

avoir une étiquette finale de paire
, 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.
    Si l'attribut de la méthode n'est pas spécifié - le get est signifié.

É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"?

  1. 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
  2. Le navigateur établit une connexion au serveur, envoie une demande au serveur spécifié dans l'attribut de balises d'action.
    En utilisant la méthode d'envoi spécifiée dans l'attribut méthode (dans ce cas - obtenez), transmettez des données dans la requête.
  3. Le serveur analyse la requête reçue, forme une réponse, l'envoie au navigateur et ferme la connexion.
  4. 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 L'URL ajoutez simplement un point d'interrogation et former des données.

Peut-être que tous ces détails techniques et ces exercices avec le Telnet-ohm semblent incroyablement ennuyeux et même inutiles ("et quoi PHP?"). Et en vain. :) Ce sont les bases du travail sur le protocole HTTP, que vous devez savoir à chaque programmeur Web, ce qui n'est pas une connaissance théorique - tout cela est utile dans la pratique.

Remplacez maintenant la première chaîne de notre formulaire à ce qui suit:

Nous avons souligné la méthode d'envoi de "post". Dans ce cas, les données sont envoyées au serveur de plusieurs autres voies:

Telnet www.example.com 80 post /cgi-bin/form_handler.cgi http / 1.0 \\ r \\ n hôte: www.example.com \\ r \\ n contenu-type: application / x-www-form-urlencoded \\ r \\ r \\ N Longueur de contenu: 41263 \\ r \\ n \\ r \\ n nom \u003d VASYA & OKBUTTON \u003d OK

Lors de l'utilisation de la méthode postale, ces formulaires sont envoyés après "Deux entrant" - dans le corps de la requête. Tout ce qui précède est en fait un en-tête de requête (et lorsque nous avons utilisé la méthode GET, ces formulaires ont été envoyés dans le titre). Pour que le serveur sache comment terminer la lecture des corps de la demande, le titre est présent dans la ligne de longueur de contenu; À peu près la même chose que les données de formulaire seront transmises par paramètre1 \u003d value1 & paramètre2 \u003d Value2 ... et les valeurs sont transmises comme URLenCode - c'est-à-dire comme avec la méthode GET, mais dans le corps de la requête, le serveur Rapporte l'en-tête de contenu -Tlair: Application / X-www-Form-Urlencodé.

L'avantage de la méthode postale est le manque de limite de la longueur de la chaîne avec les données de formulaire.

Lors de l'utilisation de la méthode postale, il est impossible d'envoyer un formulaire, juste «aller sur le lien», car il s'agissait d'obtenir.

Lorsque vous utilisez POST-FORMULAIRE, dans son attribut d'action, vous pouvez spécifier après le formulaire de marque et des paramètres d'interrogation. Ainsi, la méthode postale comprend à la fois la méthode GET.

Arrayes $ _GET et $ _Post

Ainsi, les formulaires sont la principale façon d'échanger des données entre le serveur Web et le navigateur, c'est-à-dire une interaction avec l'utilisateur - en fait, pour laquelle vous avez besoin d'une programmation Web.

Considérons un exemple simple:



si ($ _Server ["demande_method"] \u003d\u003d "POST") (
Écho "

Bonjour, "$ _Post [" nom "]."

!" ;
}
?>
">
Entrez votre nom:






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.

- forme abrégée d'enregistrement pour .

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 "]."

!" ;
}
?>
">
Entrez votre nom:







En ligne 8, il serait possible d'écrire avec le même succès

: Obtenez - la méthode par défaut. Cette fois, le navigateur envoie la demande d'obtention, ce qui équivaut à entrer dans la barre d'adresse de l'adresse: http: //adress-site./Mety-script.php? Nom \u003d Vasya.

PHP avec des formulaires GET entrent de la même manière qu'avec la poste, la différence que le tableau $ _get est rempli.

La différence cardinale est dans la ligne 4. Étant donné que la simple entrée de l'adresse de la chaîne de navigateur est une utilité, vérifiez si ($ _Server ["request_method"] \u003d\u003d "get") n'a pas de sens. Par conséquent, nous avons recours à la conception ISSET (), qui retourne true si cette variable est définie (c'est-à-dire une valeur (c'est-à-dire une valeur), et FALSE - si la variable n'est pas définie. Si le formulaire a été rempli - comme vous avez déjà compris, PHP attribue automatiquement $ _GET ["nom"] la valeur correspondante.

L'inspection est utilisée avec Isset () - Universal, elle pourrait être utilisée pour la post-forme. De plus, il est préférable, car il vous permet de déterminer quels champs de la forme sont remplis.

Un petit exemple plus complexe.




ECHO "Spécifiez le nom!
" ;
< 1900 || $_POST [ "year" ] > 2004 ) {
Écho.
"
;
) AUTRE (

" ;

Echo "vous. € Age. " années
" ;
}
Écho "


" ;
}
?>
">
Entrez votre nom:


Entrez votre année de naissance:







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 "


" ;
}
?>
">
Entrez votre nom:


Entrez votre année de naissance:







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 "


" ;
}
?>
">
Entrez votre nom:


Entrez votre année de naissance:







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) ;.



">
Entrez votre nom:


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"].



Avez-vous aimé l'article? Partagez-le