DOUG LLOYD: Donc, dans notre video sur la syntaxe PHP, Nous avons beaucoup parlé de la façon dont PHP peut être utilisé à la ligne de commande pour exécuter des programmes d'une manière qui nous sommes assez familiers avec de C. Mais comme je l'ai aussi mentionné en ce que vidéo, PHP a été initialement développé pour mettre en œuvre la programmation web, les sites Web. Et dans cette vidéo, nous sommes allons parler de la façon dont nous utiliser PHP dans le contexte de développement web. Nous savons déjà, à partir de notre vidéo sur HTML, que les sites Web sont construits sur un ensemble de balises HTML que définie sémantiquement la structure d'une page Web. Mais les sites Web qui sont construit avec HTML pur souffrir d'une très, limitation très sérieuse. Et pour illustrer cette limitation, nous allons examiner ce qui suit. Alors maintenant, je veux construire une page Web que, chaque fois que l'utilisateur visite elle, il me donne le courant temps à Cambridge, Mass., figurent à la dernière minute. Si je faisais ce droit maintenant, Je pourrais dire quelque chose comme ça. Heure Cambridge-- donc je dois Les balises HTML, les balises de tête, les balises de titre, corps tags-- le courant temps à Cambridge est 14h08, imprimer temps militaire. Qu'advient-il si il est maintenant 14h09, 14h09? Eh bien jusqu'ici, avec le HTML, je dois aller et le changer à 14h09. Et puis, une minute plus tard, Je dois changer à nouveau. Et puis, une minute plus tard, Je dois changer à nouveau. Et comme vous pouvez l'imaginer, que ce probablement le pire emploi jamais. Vous êtes le webmaster pour une page Web, et chaque minute, 24 heures par jour, vous avez besoin de mettre à jour l'heure actuelle par ouverture manuelle et la modification heure.html juste que extrait de code pour dire le heure actuelle en heures et minutes. Voilà probablement pas une très bon usage de nos ressources, à la fois humaine et de calcul. Les sites Web qui sont tous HTML sont complètement statique. La seule façon que vous pouvez mettre à jour contenu, comme nous venons de le voir, est d'ouvrir manuellement les sources les fichiers, les modifier et les enregistrer. Et puis lorsque l'utilisateur rafraîchit la page, ou visite la page pour la première temps, ils obtiendront le dernier contenu. Mais seulement parce que nous avons édité manuellement. Si nous commençons à mélanger un peu de PHP là-dedans, notre code peut obtenir beaucoup plus souple. Et nous pouvons avoir un moyen pour nos pages pour être dynamique, ou se mettre à jour, sans exiger notre pauvre webmaster dans l'exemple précédent d'être mise à jour manuellement les choses. Ils peuvent le faire automatiquement. Nous ne devons pas intervenir. Nous pouvons dormir un peu. Ce qui est probablement une bonne chose si vous faites beaucoup de la programmation web. Donc, en CS50 IDE, nous courons un serveur web Apache appelé. Il est un très couramment utilisé, ouverte système de serveur de Web Source. Ce système présente l' capacité à interpréter PHP, qui va être utile si vous voulez faire toute la programmation PHP. Et dans CS50 IDE, nous avons une commande pour faire de cette très facile à faire, apache50 commencer. Et puis ce slash chemin, à réduire, réduire dir, qui est juste une façon vraiment commun de indiquant ce que vous avez spécifié ici est un chemin vers un particulier répertoire que vous vouloir être la racine site, ou la page racine, ou le dossier à partir de laquelle votre serveur web va commencer à examiner les dossiers et servir les à des clients qui en font la demande. Donc, nous allons POP sur la CS50 IDE, juste pour vous montrer, très rapide, comment cela fonctionne. Donc, ici, dans CS50 IDE, je suis dans un répertoire appelé Semaine zéro neuf. Et je dois two-- je dois exécuté une commande de LS juste ci-dessus pour vous montrer que je dois deux répertoires ici, PHP, qui est l'ensemble des fichiers que je utilisés dans la syntaxe PHP vidéo, puis PHP-web, qui est l'ensemble des fichiers que je voudraient utiliser dans cette vidéo. Et je voudrais commencer une instance de serveur Web avec le contenu du dossier PHP Web que les fichiers sont servis. Alors, que vais-je faire? Je vais taper apache50 espace commencer, PHP espace, tiret web. Voilà le chemin de répertoire d'où je suis actuellement. Puis je tape Entrée. Il va faire un peu de choses ici. Et puis, il va dire, Apache a démarré avec succès. Votre site est maintenant disponible et at-- puis il ya l'URL du site. Alors, que vais-je faire? Je vais copier rapidement cela. Et je vais ouvrir et up-- Je vais effectuer un zoom arrière un peu ici-- Je vais ouvrir un nouvel onglet dans Google Chrome. Et je vais rendre visite à cette URL. Je vais appuyez sur Entrée. Il va charger. Et je vais effectuer un zoom arrière. Et nous pouvons voir ici est le contenu de mon répertoire web PHP. Alors maintenant, ce qui est fondamentalement passe voici, mon instance de CS50 IDE est de servir ces fichiers à toute personne qui en fait la demande. Et au cours de cette vidéo, nous allons trier du jetez un oeil à un tas de ces fichiers différents dans leur contexte. Pour tester que votre Apache serveur fonctionne, qui est généralement aller d'être le cas dans CS50 IDE, mais si vous faites cela, plus généralement, et vous commencez à construire votre propre site web serveurs, il ya une très Trier commun de analogique, "bonjour monde», qui est habituellement utilisé pour le développement web PHP. Qui est d'avoir un fichier constitué de tout cela code-- un séparateur de PHP définir avec PHP info, parenthèses, points-virgules entre les deux. Qui est essentiellement une spéciale Fonction PHP qui vous dit quelle version de PHP que vous utilisez. Donc, en CS50 IDE, je dois ce fichier disponible juste pour vous montrer ce que cela ressemblerait. Alors je regarde mon index de mon instance de PHP. Mon instance d'Apache est en marche le contenu de PHP-Web. Et je dois ici un fichier appelé info.php. Je vais cliquez dessus, un zoom arrière. Ceci est ce que vous allez à voir, à peu près. Ceci est juste de me dire que mon serveur Apache travaille. Et cela est, apparemment, le version de PHP que je suis à court. Ceci est mon analogique "Bonjour tout le monde." Donc, je sais que les choses sont opérationnels. Nous sommes donc bon d'aller. Nous pouvons procéder à partir d'ici. Donc, nous allons revenir sur cette exemple de temps nous étions parler avec notre pauvre webmaster qui a dû mettre à jour la page en permanence. Cela pourrait être une solution pour savoir comment Je voudrais mettre en œuvre les choses de sorte que le webmaster n'a pas doivent garder à jour le temps. Il serait juste une sorte de se faire automatiquement. Le bas, le code HTML, il est assez similaire, à une exception près. Mais ici, je dois un peu de PHP au sommet. Je suis, apparemment, appelé cette date_default_timezone_set fonction. Et nous ne parlons pas de tous ces fonctions dans CS50, parce que PHP a probablement dizaines de milliers. Cela pourrait être un peu d'un exagération, mais il pourrait ne pas être. Il a beaucoup de fonctions intégrées. Et donc cela est une fonction apparemment définit mon fuseau horaire que US / Eastern, qui est le fuseau horaire que je suis actuellement à faire cette vidéo. Puis je fais un appel à fonction appelée, la date. Et, apparemment, je suis stocker le SA de quelque chose appelé, le temps. Alors qu'est-ce qui se passe ici? Eh bien, ce qui est essentiellement passe est, je fais un appel à un serveur qui va me dire ce que le temps est actuellement. Et je le convertir en un format des heures, minutes, secondes. Et la raison, il est grand H est présent va me donner le temps de 24 heures, pas 12 heure de temps, ce qui serait minuscules h. Et je suis juste stocker que dans une variable appelée, le temps. Alors que le deuxième ligne de PHP là, l'appel à la fonction, A ce jour, ne fait que commencer une chaîne de caractères, qui est va me donner la date et le temps, et un tas d'autres informations. Et le premier argument là, que son, est tout simplement extraire la partie importante que je me soucie pour cet exemple, qui est l'heure, minute et seconde. Voilà donc le tout ce qui se passe. Alors je stocke que dans un temps variable $. Et puis vers le bas à la bas là, je que pour avoir raccourci imprimer l'heure actuelle. Donc je vais juste pour imprimer ce que l'heure actuelle est. Donc, nous allons jeter un oeil à ce dans CS50 IDE et de voir comment nous sommes maintenant sauver que webmaster beaucoup d'ennuis. Très bien, alors je suis ici à nouveau Retour au répertoire racine de mon instance d'Apache. Et je dois ici un fichier appelé time.php. Je vais juste à cliquer sur ce. Et je vais défiler vers le haut, parce nous zoomé assez loin. L'heure actuelle est 14:20:34. Donc, je le fais heures, minutes et secondes. Et je peux rafraîchir la la page et d'obtenir une nouvelle fois. --41. Je vais rafraîchir la page et obtenir une nouvelle fois, 44, 46, 47. Donc, je suis clairement pas rien changer moi-même. Je suis là rafraîchir la page. Donc, je ne peux pas y retourner l'éditer. Et je vous promets, je ne sais pas avoir des confédérés qui éditez le fichier en mon nom sur le côté. Je suis juste en utilisant cette fonction de PHP, temps, pour générer le temps pour moi automatiquement. Alors que même si je suis endormi, et mon serveur web est en cours d'exécution, l'utilisateur qui visite cette page est encore va obtenir exactement l'heure actuelle. Voilà donc assez bonne. Je me suis fait mon site plus dynamique avec pas trop de code PHP. Il était seulement deux lignes de code, puis un peu d'une déclaration d'impression. Et déjà je dois une site beaucoup plus dynamique que nous avons vu premier exemple au début de la vidéo. Donc, rappeler de la vidéo sur la syntaxe PHP que lorsque l'interpréteur PHP fonctionne notre programme, il ignore tout ce est pas à l'intérieur des séparateurs de PHP, recracher. Dans cet exemple, ce que la chose qu'il crachait était HTML. Et cela signifie que je peux maintenant intercaler HTML et PHP ensemble. Parce que l'interprète sera juste ignorer le HTML et littéralement sortie il. Ce qui est bon, non? Parce que sans doute, à la fin de la journée, Je voudrais que mon site être construit de HTML. Alors que tout navigateur Web peut interpréter , ou comprendre le code HTML de la page et le rendre comme quelque chose que nous peut effectivement comprendre que les humains. Et je ne peux utiliser PHP pour les parties de mon site l'exigent dynamisme, qui me nécessitera d'avoir des choses qui mettent à jour en permanence. L'information statique peut rester le même. OK, alors ça va. Mais pourquoi devrais-je faire cela? Pourquoi aurais-je mélanger HTML et PHP? Je ne pouvais tout simplement imprimer toutes les HTML, en utilisant la fonction d'impression de PHP. Pourquoi suis-je pas le faire? Pensez-y une seconde. Pourquoi, quand je ne pouvais tout simplement imprimer out-- I pourrait avoir des lignes de PHP qui disent juste, balise HTML d'impression, la tête d'impression. Pourquoi suis-je pas le faire? Pourquoi suis-je mélanger les PHP et HTML? Eh bien, si vous pensez à ce sujet pour une seconde. PHP, l'interprète a à interpréter ce qu'il voit. Et donc il va falloir pour exécuter une ligne de code. Imprimez HTML. Imprimez tête ouverte tag. Imprimez titre ouvert tag. Il va devoir exécuter et interpréter que chaque étape du chemin. Pourquoi ne pas simplement laisser le interprète simplement gommer des choses qu'il ne comprend pas et de le faire automatiquement? Ça va me sauver beaucoup de temps de mélanger mon HTML et PHP mon ensemble. Et voilà pourquoi nous ne faisons pas juste avoir ouvert séparateur de PHP et puis juste imprimer l'ensemble le contenu de notre page PHP comme un géant appel à la fonction, Imprimer, puis Fermer séparateur de PHP et nous avons terminé. Voilà pourquoi nous les mélanger ensemble. Jusqu'à présent, on n'a pas vu trop de une différence de syntaxe générale de PHP. Il a été assez simple. Nous avons déjà vu la point d'interrogation, égale. Nous avons vu un couple de nouveaux appels de fonction, mais rien de vraiment envie d'aller sur. Disons peut-être faire les choses un peu plus fantaisistes. Que faire si nous voulons passer des informations entre les différents fichiers PHP, de telle sorte que l'utilisateur peut peut-être soumettre des informations pour moi. Et puis je pouvais faire quelque chose avec elle sur une autre page. Donc, PHP a le soutien de quelque chose appelé Super mondial Variables, ce qui semble assez impressionnant. Ils sont vraiment juste tableaux associatifs géants aider à mettre ce que fonctionnalité de passage informations entre les fichiers PHP qui sont existantes sur notre serveur. Le premier de ces super- globales sont appelés $ _GET. Et il est probablement le plus simple à comprendre. Qu'est-ce qui se passe avec $ _GET? Eh bien, au fond, l'utilisateur est aller à taper des informations supplémentaires à la fin de nos URL. Et quel que soit leur type, en supposant il est formaté d'une manière particulière appelé une chaîne de requête, qui est juste un ensemble de paires clé-valeur séparé par une esperluette. Ces paires de valeurs clés seront stockée dans un tableau associatif $ _GET. Et à partir de notre vidéo sur La syntaxe PHP, nous savons comment travailler avec Déjà tableaux associatifs. Donc, voici un exemple de un peu de PHP, où peut-être je suis l'extraction de l'ensemble des paires de valeurs clés que l'utilisateur a fourni à l'URL. Donc je dois mon Ouvrir séparateur de PHP. Je dois une boucle foreach. Je itération à travers le Super Réseau mondial appelé $ _GET. Et je veux être en mesure de se référer à la fois la clé et la valeur. Et je suis juste de les imprimer sur, chacun sur apparemment sa propre étiquette de paragraphe ici. Je imprimer un fichier HTML et interpoler les valeurs de la clé et de la valeur dans cette déclaration. Donc, nous allons jeter un oeil à la façon dont cette serait effectivement travailler sur notre IDE. Et peut-être que cela aidera illustrer un peu de ce que GET est en train de faire. Donc, je suis de retour ici dans ma racine web. Et je vais zoomer sur une peu pour vous montrer que je dois un fichier appelé, get1.php. Donc, nous allons cliquer sur get1.php. Et je ne vois pas de tout contenu. Voilà bizarre, non? Eh bien, pas vraiment en fait. Parce que je ne fournissons pas de quoi que ce soit dans l'URL. Je vais get1.php, mais je n'a pas fourni paires de valeurs clés dans le cadre de ma chaîne de requête. Ajoutons donc une chaîne de requête et voir ce que ce fichier peut faire. Pour commencer une chaîne de requête vous il suffit de taper point d'interrogation. Alors peut-être que je vais dire name = & Doug année = 2,015. Et puis je vais appuyez sur Entrée. Maintenant, remarquez ce qui se passe. Je suis toujours dans get1.php. Mais maintenant, je l'ai fourni paires de valeurs clés, et je suis les imprimer sur leur propre Nom paragraph--, année Doug-- 2015. Voilà exactement le code que nous venons vu sur la diapositive il ya un instant. Et si je veux peut-être ajouter une autre paire de valeur de clé, et class = CS50. Maintenant, je dois une autre valeur de clé paire qui est imprimé quand je revisite à nouveau l'URL. Maintenant peut-être ce ne est pas formatée terriblement bien. Je dois donc une autre version de get.php. Il est get2.php. La différence dans ce l'un est que je dois fichier CSS, et il formate les choses un peu plus bien pour moi. Il est peut-être pas le plus belle CSS dans le monde. Mais il est juste une autre façon de le faire. Donc, je peux encore obtenir l'accès à mes variables en utilisant $ _GET. Et dans ce cas, je suis juste un peu rendant le CSS d'un peu plus de fantaisie. Et si nous POP sur la mon IDE pour une seconde, Je vais vous montrer dans mon web PHP répertoire ici, get2.php. Nous allons ouvrir, certains HTML ici. Apparemment, je suis reliant dans ce Fichier CSS je parlais. Je ouvre une étiquette de table. Et puis voici mon boucle foreach. Ici est que, ce que je montré sur la diapositive avant. La seule différence est I avoir cette clé et la valeur CSS style que je suis à lui appliquer. Mais tout cela est que je fais, est que je suis itérer à travers $ _GET pour obtenir tous des paires de valeurs clés. Et je les imprimer que la table. Et, apparemment, je suis mise en forme des touches dans un sens, avec la "clé"