[Powered by Google Translate] [Semaine 8, suite] [David J. Malan] [Université de Harvard] [C'est CS50.] [CS50.TV] C'est CS50, c'est donc la fin de la semaine 8 ici. Nous avons bien sûr eu un peu d'un ouragan plus tôt cette semaine, alors maintenant il est vraiment juste toi et moi dans cette salle de conférence, mais aujourd'hui, nous continuons notre conversation à propos de PHP et à propos de la programmation web, plus généralement, et nous avons également introduire l'idée des bases de données, en particulier celui qui est appelé MySQL, qui est très populaire ces jours-ci, en grande partie en raison de son évolutivité et aussi parce que son être libre et open source. Mais d'abord, regardons où nous nous étions arrêtés la dernière fois. Rappelez-vous que nous regardions les exemples de plusieurs messages instantanés Frosh, et ce fut la forme hideuse que je suis venu avec quelques 15 + ans dans le but d'amener les élèves sur le campus registre pour les sports intra-muros de première année sans avoir à trek plus dans la cour de Wigglesworth de glisser un morceau de papier physique sous la porte quelques-uns de surveillant. Au lieu de cela nous avons déménagé tout en ligne, mais pour cela nous avons besoin de faire usage de quelques technologies, ainsi on, nous avions besoin de HTML, Hypertext Markup Language, ce qui est nouveau cette langage de balisage avec lequel vous faites des pages Web structurellement. En utilisant un peu de CSS ces jours-ci, les feuilles de style en cascade, où nous utilisons stylisations de la page Web en utilisant une syntaxe légèrement différente, tandis que le HTML a été tout au sujet de la structure de celle-ci. Nous devons également mettre en place un langage de programmation web. Dans ce cas, nous allons utiliser PHP et PHP va nous permettre le contenu dynamique de sortie ainsi que faire des choses comme programmatiques l'envoi de courriels, comme c'était le cas sur la note que nous a quitté la semaine dernière. Rappelons que le code de cette était en 2 parties. Un, nous avons eu froshims3.php, et ce fut en grande partie le balisage d'un formulaire HTML à l'intérieur de celui-ci, un petit peu de CSS ici dans les attributs de style de sorte que la forme elle-même serait centrée sur la page, mais au-delà nous avons eu quelques données du formulaire représentatifs, un champ de texte, une case à cocher, certains boutons radio, un menu de sélection et un bouton submit. Et via ce formulaire, nous avons soumis à un fichier qui a été apparemment appelé register3.php, qui lui-même avait l'air un petit quelque chose comme ça. Maintenant, la plupart du code dans register3.php, rappel, était tout au sujet de courriel. Il fait un peu de la validation du formulaire qui a été lancée afin de s'assurer que les champs ont été effectivement fournis qui étaient attendus. Ensuite, nous avons appelé des fonctions PHP en utilisant la nouvelle syntaxe légèrement, même si elle est empruntée à C. Cet opérateur flèche qui nous permet de faire usage de ce qu'on appelle la programmation orientée objet. Nous n'allons pas entrer dans les détails ici en détail, mais je sais pour l'instant c'est une façon d'avoir des fonctions associées aux objets, qui sont un type particulier de structure, comme nous l'avons vu dans C. Mais pour l'instant, il suffit de prendre sur la foi que c'est la syntaxe correcte à utiliser lorsque vous utilisez une bibliothèque comme cette bibliothèque PHPMailer. Et puis à la fin de ce fichier que nous avions généré dynamiquement un e-mail qui se sont adressé à mon compte jharvard@cs50.net à partir de mon compte jharvard@cs50.net, et nous avons informé l'utilisateur en conséquence qu'elles avaient été enregistrés pour ce sport. C'est à peu près ce que le site Frosh IM fait pendant toutes ces années quand je l'ai mis en place, d'accord, dans une langue différente, mais il vous montre peut-être le pouvoir que vous avez maintenant que vous pouvez vous exprimer non seulement par programmation à un niveau faible dans un langage comme C, mais à un niveau beaucoup plus élevé avec ces applications dans le monde réel comme très courriel à fait résoudre certains problèmes du monde réel. Maintenant, bien sûr, même si je utiliser ce script pour générer des e-mails de façon dynamique à partir jharvard@cs50.net, qui est en fait un compte que j'ai accès à, ne faire très attention à envoyer seulement le courrier des comptes qui sont en fait le vôtre, de peur que les choses que vous obtenez dans un peu d'eau chaude dans la vie. Cela dit, nous allons maintenant la transition vers la résolution d'un problème tout à fait différent, celle des États retenue. Maintenant, qu'est-ce que cela signifie réellement? HTTP, le protocole de transfert hypertexte, est en fait un protocole sans état, et ce que cela signifie, c'est que lorsque vous tirez quelque chose comme Google.com, puis appuyez sur Entrée généralement votre navigateur a une sorte d'icône qui tourne alors résultats dans une page web en cours de téléchargement, et puis cette petite icône s'arrête de tourner, et cela suggère en effet que HTTP a terminé une sorte de connexion au serveur et c'est tout. HTTP est apatride, dans le sens qu'elle ne tient pas une connexion persistante au serveur dans le même Skype ne ou GChat fait car avec HTTP l'hypothèse est qu'une fois que vous avez récupéré une page web c'est tout. Maintenant, dans la réalité de nos jours sur des sites comme Facebook et Google Maps et de Twitter et comme il ya beaucoup plus de dynamisme par lequel même après que l'icône s'arrête de tourner, vous pouvez en fait obtenir plus de mises à jour à partir du serveur, plus de tweets, mises à jour de statut sur Facebook et autres etc. Mais même cela est en utilisant une technique que nous allons parler dans une semaine ou deux connu sous le nom Ajax en utilisant un langage appelé JavaScript, mais à la fin de la journée, HTTP est toujours sans état. Et pourtant, si vous voulez quelque sorte se souvenir des choses au sujet d'un utilisateur même après avoir déconnecté de votre serveur PHP ne vous donner un moyen de le faire parce que, comme nous l'avons vu la dernière fois, PHP dispose d'un certain nombre de superglobals, et superglobale est, encore une fois, une variable globale spéciale qui est remise par le serveur web et PHP par lui-même. Vous n'avez pas à faire quelque chose pour mettre les valeurs en elle, et parmi les super-globales que nous avons vu jusqu'à présent sont GET et POST, qui est l'endroit où les champs du formulaire sont mises automatiquement pour vous, ainsi que quelques autres que nous n'avons pas encore vu. A l'intérieur de $ _SERVER sont des variables spéciales relatives au serveur lui-même. Quelle est l'adresse IP, ce protocole HTTP ou HTTPS avez-vous utilisé, quelle méthode avez-vous utilisé la demande et autres, donc il ya des choses intéressantes, détails croustillants sur le serveur, et en fait, l'utilisateur il ainsi. Il ya $ _COOKIE, qui est l'endroit où ces choses appelées cookies sont stockés. Nous ne nous attarderons pas sur les cookies eux-mêmes aujourd'hui, mais je sais pour l'instant qu'un cookie est juste un petit morceau d'information qu'un serveur web peut planter sur un navigateur et à son tour sa RAM ou le disque dur de son ordinateur pour stocker des informations sur un utilisateur, par exemple, leur nom d'utilisateur de sorte qu'ils n'ont pas à le saisir à chaque fois qu'ils se connectent ou une numéro unique d'identification ou de l'utilisateur de sorte que vous n'avez pas à les harceler avec les mêmes types de questions au sujet de préférences à l'avenir, mais la plupart d'intérêt en ce moment est de $ _SESSION. Cette superglobale, qui, comme les autres, est remis automatiquement par PHP lorsque vous écrivez des sites web PHP peut stocker tout ce que vous voulez, les chaînes, les entiers, flottants, des valeurs, des tableaux, des objets, vraiment tout ce que vous voulez, et il vous permet de stocker de manière que même si l'utilisateur vient vous rendre visite de temps en temps revient une minute à partir de maintenant ou à 5 minutes à partir de maintenant parce que ils prennent leur temps avant de cliquer sur un autre lien PHP va assurer que ce que vous mettez dans ce que superglobale séance quelques minutes ou 5 minutes il ya seront toujours là lorsque l'utilisateur revient. Et sous le capot de cette superglobale est mis en œuvre par le biais de ces choses appelées cookies, mais pour l'instant, c'est juste une abstraction où c'est un peu l'équivalent programmatique d'un panier d'achat. Quoi que vous, le programmeur, mis dans cette superglobale tableau associatif sera là un certain nombre de minutes plus tard, jusqu'à ce que vous le supprimiez ou jusqu'à ce que l'utilisateur quitte son navigateur totalement. Jetons un coup d'oeil à un exemple de la façon dont cette chose est réellement utilisée. En counter.php entre morceaux d'aujourd'hui de code nous avons la ligne suivante. Au début de ce dossier, nous avons un tas de commentaires bleus, qui sont sans intérêt pour le moment. Mais à la ligne 13, nous avons une nouvelle ligne, session_start, et qui ne fait exactement ce qu'il dit. Il commence sessions. Il vous permet d'utiliser ce gros superglobale $ _SESSION, et c'est aussi simple que cela. Maintenant, si nous procédons à regarder à la ligne 16, nous allons essayer de comprendre ce que cette page web va faire. If (isset ($ _SESSION ["compteur"]), puis aller de l'avant et stocker dans la variable compteur, compteur minuscules, $ _SESSION ["Compteur"]. Cela semble être la déclaration d'une variable locale appelée contre- à l'intérieur de laquelle elle est mise une copie de tout ce qui est à l'intérieur de la super- appelé session à l'emplacement «contre». Sinon, apparemment, ce petit compteur de variable locale, est initialisée à 0. Mais alors, quelques lignes plus loin dans 26 préavis que la copie de la session de compteur, la clé, a une valeur assignée nouvelle qui est la valeur actuelle de plus 1. En bref, ce fichier semble être la mise à jour un compteur qui est stocké à l'intérieur de la super session de en l'incrémentant de 1, mais il conserve une première copie de la valeur précédente en le stockant dans une variable locale appelée $ compteur, et puis ici nous allons voir ce qu'il en reste. Il s'avère que c'est à peu près juste HTML. Au bas de cette page, nous voyons dans la ligne 37 que j'ai visité ce site numéro du compteur de temps, donc il ya un couple d'fonctionnalités intéressantes ici. Un, il s'agit clairement d'une variable, mais il ne suffit pas de simplement mettre $ Compteur dans le corps de votre code HTML, car bien sûr, si c'est juste là, au milieu de votre PHP HTML va supposer que c'est juste HTML. Vous voulez littéralement $ compteur à imprimer sur l'écran. Mais au lieu de tomber dans le mode PHP avec ce morceau de syntaxe, nous pouvons insérer dynamiquement une valeur ici très semblable dans l'esprit à ce que nous avons fait la dernière fois avec l'insertion de valeurs dans des chaînes. En fait, c'est juste une notation abrégée pour dire quelque chose comme cela à la lettre, print ($ compteur) ou même quelque chose comme printf (% s, comptoir) ou même, comme vous avez pu le voir en ligne ou dans les manuels, il ya une fonction en PHP appelé écho qui fait la même chose, et tous ceux qui sont simplement des façons plus prolixes de dire