DOUG لويد: حتى في موقعنا الفيديو على تركيب PHP، تحدثنا كثيرا حول كيفية PHP يمكن استخدامها في سطر الأوامر لتشغيل البرامج بطريقة نحن على دراية جدا مع من C. ولكن كما ذكرت أيضا في هذا الفيديو، PHP وقد وضعت في البداية ل تنفيذ برمجة الويب والمواقع الإلكترونية. وحتى في هذا الفيديو نحن سنتحدث عن كيف يمكننا استخدام PHP في سياق تطوير الشبكة. ونحن نعلم، بالفعل، من لدينا شريط فيديو على HTML، المواقع التي يتم بناؤها من مجموعة من الأكواد HTML التي تحدد غويا هيكل صفحة الويب. لكن المواقع التي هم بنيت مع نقية HTML تعاني من جدا، قيدا خطيرا جدا. وتوضيح هذا القيد، دعونا النظر في ما يلي. وحتى الآن اريد بناء صفحة على شبكة الإنترنت أنه كلما الزيارات المستخدم ذلك، انه يعطيني الحالي الوقت في كامبريدج، ماساشوستس، عرض لآخر لحظة. إذا كنت جعل هذا الحق الآن، قد أقول شيئا من هذا القبيل. الوقت الحالي في Cambridge-- ذلك لدي علامات HTML، والعلامات الرأس، وعلامات العنوان، هيئة tags-- الحالي الوقت في كامبريدج هو 14:08، طبع الوقت العسكرية. ماذا يحدث لو كان الآن 02:09، 14:09؟ بشكل جيد حتى الآن، مع HTML، ولدي للذهاب في وتغييره إلى 14:09. ثم بعد دقيقة واحدة، لدي لتغييره مرة أخرى. ثم بعد دقيقة واحدة، لدي لتغييره مرة أخرى. وكما يمكنك أن تتخيل، وهذا ربما أسوأ وظيفة من أي وقت مضى. كنت المسؤول عن الموقع لصفحة ويب، وكل دقيقة، 24 ساعة في اليوم، تحتاج لتحديث الوقت الحالي فتح time.html يدويا وتغيير مجرد أن مقتطف من التعليمات البرمجية ليقول الوقت الحالي في الساعات والدقائق. وهذا ربما ليس جدا حسن استخدام مواردنا، سواء البشرية والحاسوبية. المواقع التي هي كلها HTML ساكنة تماما. الطريقة الوحيدة التي يمكن تحديث المحتوى، كما رأينا للتو، هو فتح تلك المصادر يدويا الملفات، وتحريرها، وحفظها. ثم عندما يقوم المستخدم ينعش الصفحة، أو يزور الصفحة للمرة الأولى الوقت، أنها سوف تحصل على أحدث محتوى. ولكن فقط لأننا تحريره يدويا. إذا بدأنا لخلط بعض PHP هناك، لدينا قانون يمكن الحصول على الكثير أكثر مرونة. ونحن يمكن أن يكون وسيلة لصفحاتنا أن تكون ديناميكية، أو تحديث نفسها، دون الحاجة لدينا فقراء المسؤول عن الموقع في المثال السابق أن يكون يدويا تحديث الأشياء. يمكن أن تفعل ذلك تلقائيا. ليس لدينا للتدخل. يمكننا الحصول على بعض النوم. الذي هو على الارجح شيء جيد إذا كنت تفعل الكثير من برمجة الويب. حتى في CS50 IDE، ونحن تشغيل خادم الويب يسمى أباتشي. انها تستخدم عادة للغاية، المصدر المفتوح نظام خادم الويب. هذا النظام لديه القدرة على تفسير PHP، والتي ستكون مفيدة إذا كنت تريد أن تفعل أي البرمجة PHP. وفي IDE CS50، لدينا قيادة لجعل هذا من السهل جدا القيام به، apache50 بدء. ثم أن مائل المسار، خفض ل، خفض دير، وهذا هو مجرد وسيلة شائعة حقا مشيرا إلى ما قمت بتحديدها هنا هو المسار إلى خاص الدليل الذي تريد أن تكون جذورها الموقع أو الصفحة الأولية، أو المجلد الذي خادم الويب الخاص بك وسوف تبدأ في دراسة الملفات وخدمة لهم حتى للعملاء الذين يطلبونها. لذلك دعونا البوب ​​الى CS50 IDE، فقط ل تظهر لك، سريع حقا، كيف يعمل هذا. حتى هنا في IDE CS50، وأنا في دليل يسمى أسبوع صفر تسعة. ولدي two-- لدي أعدم أمر LS فقط فوق لتظهر لك أن لدي دليلين هنا، PHP، والذي هو مجموعة من الملفات التي استعملتها في فيديو تركيب PHP، ومن ثم PHP على شبكة الإنترنت، الذي هو مجموعة من الملفات التي I أود أن استخدامها في هذا الفيديو. وأود أن تبدأ مثيل خادم الويب مع محتويات المجلد PHP على شبكة الإنترنت كما يتم تقديم الملفات حتى. ذلك ما أنا ذاهب الى القيام به؟ أنا ذاهب لكتابة apache50 الفضاء بدء، PHP الفضاء، اندفاعة على شبكة الإنترنت. هذا هو المسار إلى الدليل من أين أنا حاليا. ثم أنا هاهنا. انها تنوي القيام به ل قليلا من الاشياء هنا. ثم انه ذاهب الى القول، التي أباتشي بنجاح. الموقع الخاص بك هو متاح الآن at-- و ثم هناك URL للموقع. ذلك ما أنا ذاهب الى القيام به؟ انا ذاهب الى نسخ هذا بسرعة. وانا ذاهب لفتح up-- و أنا تصغير قليلا here-- انا ذاهب لفتح علامة تبويب جديدة في كروم. وانا ذاهب لزيارة هذا العنوان. انا ذاهب الى هاهنا. انها تسير لتحميل. وسوف تصغير مرة أخرى. ويمكننا أن نرى هنا هو محتويات بلدي PHP دليل على الشبكة العالمية. وحتى الآن ما يحدث في الأساس هنا، يا مثيل CS50 IDE وتخدم ما يصل هذه الملفات ل أي شخص يطلب منهم. وعلى مدار هذا الفيديو، ونحن سوف نوع من نلقي نظرة على مجموعة من هذه الملفات المختلفة في السياق. لاختبار هذا اباتشي يعمل الخادم، الذي يجري عموما ليكون هذا هو الحال في CS50 IDE، ولكن إذا قمت بذلك بشكل عام، والبدء في بناء الويب الخاص بك الخوادم، وهناك حقا النوع الشائع من البث التناظري الى، "مرحبا العالم"، والذي عادة ما يكون تستخدم لتطوير PHP على شبكة الإنترنت. وهو أن يكون ملف تتألف من مجرد هذا code-- محدد PHP مع مجموعة من المعلومات PHP، بين قوسين، منقوطة بين بين. الذي هو في الأساس الخاصة وظيفة PHP تخبرك ما هو إصدار PHP تقوم بتشغيله. حتى في CS50 IDE، ولدي هذا الملف متاح فقط لتظهر لك ما هذا سيبدو. لذلك أنا أبحث في مؤشر بلدي من وجهة نظري PHP سبيل المثال. هو بلدي اباتشي سبيل المثال تشغيل محتويات PHP ويب. ولدي ملف يسمى هنا info.php. انا ذاهب الى فوقه، تصغير. هذا هو ما كنت تريد الذهاب لمعرفة، الى حد كبير. هذا هو مجرد تقول لي يعمل الخادم اباتشي بلدي. وهذا هو، على ما يبدو، ل إصدار PHP أنني التشغيل. هذا هو بلدي التناظرية إلى "مرحبا العالم". إذا كنت لا تعرف الأمور التشغيلية. لذلك نحن على ما يرام. يمكننا أن ننطلق من هنا. لذلك دعونا إعادة النظر في هذا مثال الوقت الذي كنا الحديث عن مع مشرفي المواقع الفقراء الذين اضطروا إلى تحديث الصفحة باستمرار. قد يكون هذا الإصلاح لكيفية وأود أن تنفيذ الأمور بحيث لم يكن المسؤول عن الموقع لديهم للحفاظ على تحديث الوقت. انها مجرد نوع من يحدث تلقائيا. في الأسفل، وHTML، انها تشبه إلى حد ما، مع استثناء واحد. ولكن هنا أنا عندي بعض PHP في الأعلى. لقد، على ما يبدو، ودعا هذا وظيفة date_default_timezone_set. ونحن لا نتحدث عن كل هذه الوظائف في CS50، لديه ربما PHP عشرات الآلاف. قد يكون هذا نوعا من مبالغة، ولكنه قد لا يكون. انها حصلت على الكثير من الوظائف التي بنيت في. ولذا فإن هذه الوظيفة على ما يبدو يحدد المنطقة الزمنية بصفتي الولايات المتحدة / الشرقية، وهي المنطقة الزمنية التي أنا حاليا في صنع هذا الفيديو. ثم أقوم بإجراء مكالمة ل دعت وظيفة، التاريخ. وعلى ما يبدو، وأنا تخزين HIS من ما يسمى والوقت. فما الذي يحدث هنا؟ حسنا، ما هو الأساس يحدث هو، أنا إجراء مكالمة لبعض الخادم الذي يتم الانتقال إلى قل لي ما هو الوقت المناسب لعرضه. وأنا تحويله إلى تنسيق ساعات والدقائق والثواني. والسبب انها العاصمة H هو هذا سوف تعطيني 24 ساعة، وليس 12 ساعة، والتي ستكون ح الصغيرة. وأنا مجرد تخزين أن في متغير يسمى، والوقت. بحيث السطر الثاني من PHP هناك، والدعوة إلى وظيفة، الآن، هو مجرد الحصول على بعض السلسلة، والذي هو الذهاب الى تعطيني التاريخ، و الوقت، وحفنة من المعلومات الأخرى. والحجة الأولى هناك، أن HIS، هو مجرد استخراج جزء مهم أن ما يهمني في هذا المثال، وهو ساعة، دقيقة، والثانية. لذلك هذا هو كل ما يجري. لذلك أنا تخزين أنه في الوقت $ متغير. ثم إلى أسفل في أسفل جدا هناك، وأنا يكون هذا الاختزال ل طبع في الوقت الحالي. لذلك أنا ذاهب لمجرد طباعة ما هو الوقت الحالي. لذلك دعونا نلقي نظرة على هذا في IDE CS50، ونرى كيف نحن الآن إنقاذ أن المسؤول عن الموقع الكثير من المتاعب. كل الحق، لذلك أنا هنا مرة أخرى مرة أخرى في الدليل الجذر الدرجة أباتشي بلدي. ولدي ملف يسمى هنا time.php. أنا ذاهب لمجرد النقر على ذلك. وسوف انتقل لأعلى أو ل نحن في أسرع إلى حد الآن. الوقت الحالي هو 14:20:34. لذلك أنا أفعل ذلك ساعة، الدقائق والثواني. ويمكنني تحديث الصفحة والحصول على الوقت الجديد. --41. انا ذاهب لتحديث الصفحة والحصول على موعد جديد، 44، 46، 47. لذلك، وأنا واضح لا تغيير أي شيء بنفسي. أنا هنا تحديث الصفحة. لذلك لا يمكن أن يكون هناك مرة أخرى تحريره. وأعدكم، وأنا لا لديك أي الحلفاء الذين يعدلون الملف نيابة عني على الجانب. أنا فقط باستخدام تلك الوظيفة PHP، الوقت، لتوليد الوقت بالنسبة لي تلقائيا. ذلك أنه حتى لو أنا نائمة، وخادم الويب الخاص بي قيد التشغيل، المستخدم الذي يزور تلك الصفحة لا تزال ذاهب للحصول بالضبط الوقت الحالي. لذلك هذا امر جيد جدا. لقد قدمت موقعي أكثر ديناميكية مع ليس كثيرا كود PHP. كان مجرد سطرين من التعليمات البرمجية ومن ثم قليلا من بيان الطباعة. وبالفعل لدي موقع أكثر حيوية بكثير من هذا المثال الأول رأينا في بداية الفيديو. لذلك، نذكر من الفيديو على تركيب PHP أن عند تشغيل مترجم PHP برنامجنا، فإنه يتجاهل كل شيء هذا ليس داخل المحددات PHP، البصق بها. في هذا المثال، ما الشيء انها بصق كان HTML. ويعني هذا يمكنني الآن بعثر HTML و PHP معا. لأن المترجم فقط تجاهل HTML والمخرجات حرفيا. وهو أمر جيد، أليس كذلك؟ لأن يفترض، في نهاية اليوم، وأود موقعي ل يتم بناؤها من HTML. بحيث أن أي متصفح ويب يمكن ترجمة ، أو فهم HTML على الصفحة وجعله كشيء نحن يمكن أن نفهم الواقع كبشر. ويمكنني فقط استخدام PHP لأجزاء من موقعي وتتطلب ديناميكية، التي تتطلب مني أن الأشياء التي تحديثه باستمرار. المعلومات الثابتة يمكن أن تبقى نفسها. حسنا، هذا جيد. ولكن لماذا أفعل هذا؟ لماذا يمكنني المزج بين HTML و PHP؟ أنا فقط يمكن طباعة جميع HTML، وذلك باستخدام وظيفة PHP الطباعة. لماذا أنا لا أفعل ذلك؟ التفكير في الامر لفترة ثانية. لماذا، عندما أتمكن من مجرد طباعة out-- I يمكن أن يكون خطوط PHP أن نقول فقط، طباعة العلامة HTML، رأس الطباعة. لماذا أنا لا أفعل ذلك؟ لماذا أنا خلط PHP و HTML؟ حسنا، إذا كنت تعتقد عن ذلك لفترة ثانية. PHP، المترجم له لتفسير ما يراه. وهكذا ستكون لدينا لتنفيذ سطر من التعليمات البرمجية. طباعة HTML. طباعة العلامة رئيس المفتوح. طباعة علامة العنوان مفتوحا. انها ستكون لدينا ل تنفيذ وتفسير أن كل خطوة واحدة على الطريق. لماذا لا مجرد السماح لل مترجم يتستر ما يزيد قليلا الأشياء التي لا يفهم وتفعل ذلك تلقائيا؟ انها سوف نجني الكثير من الوقت خلط بلدي HTML و PHP بلدي معا. وولهذا السبب نحن لا يكون مجرد محدد PHP مفتوحة ومن ثم طباعة فقط من أصل كامل محتوى الصفحة لدينا كما PHP واحدة عملاقة الدعوة إلى وظيفة، طباعة، ثم وثيق محدد PHP وننتهي. ولهذا السبب فإننا مزجها معا. حتى الآن، لم نر الكثير من فرق من جملة PHP العام. انها كانت واضحة جدا. لقد رأينا بالفعل علامة استفهام، على قدم المساواة. شاهدنا اثنين من المكالمات وظيفة جديدة، ولكن لا شيء يتوهم يحدث في الواقع. دعونا ربما جعل الأمور مربي الحيوانات قليلا. ماذا لو كنا نريد لتمرير المعلومات بين ملفات PHP مختلفة، لذلك يمكن أن ربما المستخدم تقديم معلومات بالنسبة لي. وبعد ذلك يمكن أن تفعل شيئا مع ذلك في صفحة أخرى. لذلك PHP لديه الدعم ل ما يسمى السوبر العالمية المتغيرات، التي تبدو رهيبة جدا. انهم حقا فقط صفائف النقابي العملاقة التي تساعد على تنفيذ هذه وظائف للمرور المعلومات بين الملفات التي PHP والقائمة على خادم الويب لدينا. أول هذه السوبر ويسمى غلوبالس $ _GET. وانها على الارجح أبسط لفهم. ما يحدث مع $ _GET؟ حسنا، في الأساس، المستخدم الذهاب إلى كتابة معلومات اضافية في نهاية عناوين المواقع لدينا. وكل ما اكتب، على افتراض لقد تنسيقه بطريقة معينة دعا سلسلة الاستعلام، الذي هو مجرد مجموعة من أزواج قيمة المفتاح فصل عن طريق اقحام. وتلك أزواج قيمة المفتاح يكون تخزينها في مجموعة النقابي $ _GET. ومن لدينا شريط فيديو على تركيب PHP، ونحن نعلم كيفية العمل مع صفائف النقابي بالفعل. حتى هنا هو مثال بعض PHP، حيث ربما أنا استخراج كل من أزواج قيمة المفتاح أن المستخدم المتوفرة في URL. لذلك لدي المفتوح محدد PHP. لدي حلقة foreach. أنا بالتكرار عبر السوبر دعا صفيف العالمي $ _GET. وأريد أن أكون قادرة على الرجوع إلى كل من مفتاح وقيمة. وأنا فقط طباعتها من كل واحد على ما يبدو العلامة فقرتها الخاصة هنا. أنا طبع بعض HTML والتحريف القيم مفتاح وقيمة في هذا البيان. لذلك دعونا نلقي نظرة على كيف يمكن لهذا سيعمل فعلا على IDE لدينا. وربما هذا سوف يساعد توضيح قليلا ما تحصل عليه هو القيام بالفعل. لذلك أنا هنا مرة أخرى في جذر الويب الخاص بي. وسوف التكبير في قليلا لتظهر لك أن لدي ملف يسمى، get1.php. لذلك دعونا انقر على get1.php. وأنا لا نرى أي محتوى. هذا غريب، أليس كذلك؟ حسنا، لا حقا في الواقع. لأنني لم أكن توريد أي شيء في URL. انا ذاهب الى get1.php، ولكن أنا لا تقدم أي أزواج قيمة المفتاح كجزء من سلسلة الاستعلام بلدي. لذلك دعونا إضافة سلسلة الاستعلام ونرى ما يمكن أن يفعله هذا الملف. لتبدأ سلسلة استعلام لك فقط اكتب علامة استفهام. ثم ربما أنا أقول اسم = دوغ والسنة = 2015. وبعد ذلك سوف هاهنا. لاحظ الآن ما يحدث. ما زلت في get1.php. ولكن الآن لقد زودت أزواج قيمة المفتاح، وأنا طباعتها من تلقاء نفسها اسم paragraph--، العام Doug--، 2015. هذا هو بالضبط رمز أننا فقط شاهدنا على الشريحة قبل لحظة. وإذا كنت ترغب في إضافة وربما آخر زوج قيمة المفتاح، والطبقة = CS50. الآن لدي قيمة أساسية أخرى الزوج هذا ما طباعتها عندما كنت إعادة النظر في URL مرة أخرى. الآن ربما هذا ليس تنسيق جيد بشكل فظيع. لذلك ليس لدي نسخة أخرى من get.php. انها get2.php. الفرق في هذا واحد هو ولدي ملف CSS، وذلك بتنسيق الأمور أكثر قليلا لطيف بالنسبة لي. انها ربما ليس أكثر CSS جمالا في العالم. ولكن انها مجرد طريقة أخرى للقيام بذلك. إذن أستطيع الوصول لمتغيرات بي باستخدام $ _GET. وفي هذه الحالة، أنا مجرد نوع من جعل CSS قليلا أكثر نزوة. وإذا كنا البوب ​​ل IDE بلدي لثانية واحدة، سأريكم في بلدي PHP على شبكة الإنترنت الدليل هنا، get2.php. سنقوم فتحه، بعض HTML هنا. على ما يبدو أنا ربط في ذلك ملف CSS كنت أتحدث عنه. I فتح العلامة الجدول. ثم وهنا قال لي حلقة Foreach. هنا هو أنه، ما أظهر على الشريحة من قبل. والفرق الوحيد هو أنا يكون هذا المفتاح والقيمة CSS التصميم أنني تطبيق إليها. ولكن هذا كل ما أفعله، وأنا بالتكرار عبر $ _GET للحصول على كل من أزواج قيمة المفتاح. وأنا طباعتها كما في الجدول. وعلى ما يبدو، وأنا تنسيق مفاتيح في اتجاه واحد، مع