[Powered by Google Translate] [تابع أسبوع 8] [ديفيد J. مالان] [جامعة هارفارد] [هذا CS50.] [CS50.TV] هذا هو CS50، لذلك هذا هو نهاية أسبوع 8 هنا. كان لدينا بالطبع قليلا من الاعصار في وقت سابق هذا الأسبوع، حتى الآن هو حقا فقط أنت وأنا في هذه القاعة محاضرة، ولكن اليوم نحن نواصل حديثنا عن PHP وحول برمجة الويب بشكل عام، ونحن نقدم أيضا فكرة قواعد البيانات، لا سيما احد يسمى الخلية، التي تحظى بشعبية كبيرة هذه الأيام، في جزء كبير منه بسبب قابلية، وكذلك بسبب كونها الحرة والمفتوحة المصدر. ولكن أولا، نظرة على حيث توقفنا آخر مرة. أذكر أننا كنا ننظر إلى العديد من الأمثلة الرسائل الفورية Frosh، وكان هذا النموذج البشع الذي جئت حتى مع سنوات + منذ نحو 15 من أجل أن يكون الطلاب على الحرم الجامعي سجل للرياضة جماعية طالبة دون الحاجة فعلا لرحلة بعد الآن عبر الفناء ليجلزوورث إلى الشريحة قطعة من الورق تحت البدنية الباب بعض بروكتور. انتقل بدلا من ذلك نحن كل شيء عبر الإنترنت، ولكن للقيام بذلك نحن بحاجة إلى الاستفادة من التكنولوجيات قليلة، حتى واحد، نحن في حاجة HTML، لغة توصيف النص التشعبي، وهو مرة أخرى هذه اللغة الترميزية التي تقوم بها صفحات الويب هيكليا. استخدام القليل من CSS في هذه الأيام، أوراق الأنماط المتتالية، حيث نستخدم stylizations من صفحة ويب باستخدام بناء جملة مختلف قليلا، في حين كان كل شيء عن HTML بنية منه. ونحن بحاجة أيضا إلى إدخال لغة البرمجة على شبكة الإنترنت. في هذه الحالة، سوف نستخدم PHP، PHP وسوف تسمح لنا خرج إلى المحتوى ديناميكيا وكذلك كما تفعل أشياء مثل برنامجي إرسال رسائل البريد الإلكتروني، كما كان الحال على المذكرة غادرنا الأسبوع الماضي. يذكر أن قانون لهذا كان في 2 أجزاء. واحد، كان لدينا froshims3.php، وكان هذا التوصيف إلى حد كبير مع نموذج HTML داخل منه، القليل من CSS هنا حتى في سمات نمط وبحيث يتم توسيط النموذج نفسه على الصفحة، ولكن أبعد من ذلك كان لدينا بعض المدخلات شكل ممثل، حقل النص، مربع، بعض أزرار الراديو، وقائمة مختارة، وعلى زر إرسال. وعبر هذا النموذج، قدمنا ​​إلى ملف التي كانت تسمى فيما يبدو register3.php، بدا التي في حد ذاته شيئا قليلا من هذا القبيل. الآن، كان معظم التعليمات البرمجية في register3.php، أذكر، كل شيء عن البريد الإلكتروني. فعلت قليلا من التحقق من صحة النموذج الذي قدم للتأكد من التي تم توفيرها في الواقع الحقول التي كان من المتوقع. ثم دعا لنا بعض وظائف PHP باستخدام بناء الجملة قليلا جديدة، على الرغم من انها اقترضت من أنه C. هذا المشغل سهم يتيح لنا الاستفادة من ما يسمى وجوه المنحى البرمجة. فإننا لن يذهب الى ذلك بأي قدر من التفصيل هنا، ولكن أعرف في الوقت الراهن انها وسيلة من وجود وظائف الكائنات المرتبطة، التي هي نوع خاص من الهيكل، كما رأينا في C. لكن في الوقت الراهن، تأخذ فقط على الإيمان بأن هذا هو بناء الجملة الصحيح لاستخدام عند استخدام مكتبة مثل هذه المكتبة PHPMailer. ثم في نهاية هذا الملف كنا قد تم إنشاؤه بشكل حيوي بريد الكتروني التي حصلت على إرسالها إلى حساب بلدي jharvard@cs50.net من حساب jharvard@cs50.net بلدي، وأبلغنا المستخدم بناء على ذلك تم تسجيلها لهذه الرياضة. هذا هو الى حد كبير ما لم Frosh موقع الرسائل الفورية كل تلك السنوات منذ عندما كنت تنفيذه، منح، في لغة مختلفة، ولكنه ربما يظهر لك القوة التي لديك الآن يمكنك التعبير عن نفسك فقط لا برمجيا على مستوى منخفض في لغة C ولكن في مثل مستوى أعلى بكثير مع هذه التطبيقات العالم الحقيقي جدا مثل البريد الإلكتروني إلى حل فعلا بعض مشاكل العالم الحقيقي. الآن، بطبيعة الحال، على الرغم من أنني استخدام هذا البرنامج النصي لتوليد بعض رسائل البريد الإلكتروني بشكل حيوي من jharvard@cs50.net، الذي هو في الواقع حساب أن لدي الوصول إلى، لا أن نكون حذرين للغاية لإرسال البريد فقط من الحسابات التي هي في الواقع بنفسك، لئلا الأمور تحصل في قليلا من الماء الساخن في الحياة. مع أن قال، دعونا الآن الانتقال إلى حل مشكلة مختلفة تماما، أن الدول الاحتفاظ. الآن، ماذا يعني هذا في الواقع؟ HTTP، بروتوكول نقل النص التشعبي هذا، هو في الواقع بروتوكول عديمي الجنسية، وما يعنيه هذا هو أن عند سحب ما يصل شيء من هذا القبيل ثم Google.com وتصل إلى تدخل عادة المتصفح لديه بعض النوع من الغزل رمز ثم أن يتم تحميلها النتائج في بعض صفحات الويب، ثم توقف قليلا أن رمز الغزل، والتي تشير إلى الواقع إلى اكتمال HTTP نوع من الاتصال بالخادم وهذا كل شيء. HTTP عديم الجنسية، بمعنى أنه لا يحتفظ اتصال مستمر إلى الملقم في سكايب بنفس الطريقة لا أو هل لأن Gchat مع HTTP الافتراض هو أنه بمجرد كنت قد جلب صفحة ويب هذا كل شيء. الآن، في الواقع هذه الأيام على مواقع مثل الفيسبوك وخرائط جوجل وتويتر وما شابه ذلك هناك الكثير من الديناميكية حيث حتى بعد أن يتوقف رمز الغزل يمكنك الحصول في الواقع المزيد من التحديثات من الملقم، أكثر تويت والتحديثات في الفيسبوك أكثر الوضع وما شابه ذلك. ولكن حتى الذي يستخدم تقنية التي سنتحدث عنها في غضون أسبوع أو أسبوعين المعروفة باسم اياكس باستخدام لغة تسمى جافا سكريبت، ولكن في نهاية اليوم، لا يزال HTTP عديمي الجنسية. وحتى الآن إذا كنت تريد أن تذكر على نحو ما الأشياء عن مستخدم حتى بعد لقد قطع هم من الخادم الخاص بك PHP لا تحمل لك وسيلة للقيام بذلك لأنه، كما رأينا المرة الأخيرة، PHP لديها عدد من superglobals، وsuperglobal هو، مرة أخرى، متغير الخاصة العالمية وسلمت لك من قبل أن خادم الويب وPHP نفسها. لم يكن لديك لتفعل أي شيء لوضع القيم فيه، وبين superglobals رأيناه حتى الآن يتم الحصول على وظيفة، وهو حيث يتم وضع حقول النموذج تلقائيا بالنسبة لك، فضلا عن اثنين آخرين أننا لم نشهد حتى الآن. داخل دولار _SERVER بعض المتغيرات الخاصة المتعلقة الملقم نفسه. ما هو عنوان IP، ما البروتوكول، HTTP أو HTTPS لم تستخدمها، ما طريقة طلب استخدمتها وما شابه، لذلك هناك بعض مثيرة للاهتمام، العصير تفاصيل حول الخادم، في واقع الأمر، المستخدم في هناك أيضا. هناك $ _cookie، الذي هو مصدر هذه الاشياء يتم تخزين ملفات تعريف الارتباط ودعا. فإننا لن قضاء بعض الوقت على ملفات تعريف الارتباط نفسها اليوم، ولكن نعرف الآن أن الكعكة هو مجرد قطعة صغيرة من المعلومات التي يمكن أن خادم الويب النباتية على متصفح الإنترنت وبدوره RAM، أو محرك الأقراص الثابت الكمبيوتر الخاص به لتخزين المعلومات عن مستخدم، على سبيل المثال، اسم المستخدم بحيث لم يكن لديك لكتابته كل مرة يدخلون فيها في بعض أو فريد رقم أو معرف لهذا المستخدم بحيث لم يكن لديك لالالحاح لهم مثل هذا النوع من الأسئلة حول تفضيلات في المستقبل، ولكن معظم الفائدة الآن هو $ _SESSION. هذا superglobal، والتي، مثل الآخرين، وسلمت لكم تلقائيا باستخدام PHP عندما كنت تكتب PHP القائمة على المواقع يمكن تخزين أي شيء تريده، سلاسل، الأعداد الصحيحة، العائمة نقطة، والقيم، المصفوفات، الكائنات، حقا أي شيء الذي تريده، ويسمح لك لتخزين في مثل هذه الطريقة أنه حتى لو يقوم المستخدم بزيارة كنت بين الحين والآخر يعود دقيقة من الآن أو 5 دقائق من الآن لأن انهم يأخذون وقتهم قبل النقر فوق بعض وصلة أخرى سوف PHP ضمان مهما كنت وضعت في هذا superglobal الدورة وبعد دقائق أو 5 دقائق قبل أن يكون لا يزال هناك عندما يعود المستخدم. وتحت غطاء محرك السيارة ويتم تنفيذ هذا عن طريق superglobal ودعا تلك الأشياء الكوكيز، ولكن في الوقت الراهن، انها مجرد فكرة مجردة حيث انها نوع من ما يعادل البرنامجي للعربة التسوق. مهما كنت، ومبرمج، وطرح في هذا وسوف تكون مجموعة النقابي superglobal هناك بعض عدد الدقائق في وقت لاحق حتى تقوم بحذفها أو حتى المستخدم إنهاء المتصفح له أو لها تماما. دعونا نلقي نظرة على مثال لكيفية استخدام هذا الشيء في الواقع. في counter.php بين القطع اليوم من التعليمات البرمجية لدينا السطر التالي. في بداية هذا الملف لدينا مجموعة من التعليقات الأزرق، والتي رتيبا في الوقت الراهن. ولكن في خط 13 لدينا سطر جديد، session_start، والتي في الواقع لا بالضبط ما يقول. ويبدأ جلسات. أنها تمكنك من استخدام هذا superglobal $ _SESSION كبيرة، وانها بهذه البساطة. الآن، إذا كان لنا أن المضي قدما للنظر في السطر 16، دعونا في محاولة لمعرفة ما صفحة الويب هذه هو الذهاب الى القيام به. اذا (isset ($ _SESSION ["مكافحة"]) ثم المضي قدما وتخزينها في المتغير العداد، ومكافحة صغيرة، $ _SESSION ["مكافحة"]. هذا ويبدو أن الإعلان عن متغير محلي يسمى مكافحة داخل منها انها وضع نسخة من كل ما هو داخل superglobal ودعا الدورة في موقع "العداد." آخر، على ما يبدو، هذا القليل مكافحة متغير محلي، يتم تهيئة إلى 0. ولكن بعد ذلك بضعة أسطر في وقت لاحق في 26 نسخة لاحظ أن الدورة من العداد، مفتاحه، لديها تعيين القيمة الجديدة التي هي قيمتها الحالية بالإضافة إلى 1. باختصار، هذا الملف يبدو أن تحديث عداد التي يتم تخزينها داخل superglobal الدورة من تزايد ذلك في موعد أقصاه 1، ولكنه يحتفظ لأول مرة نسخة من القيمة السابقة بواسطة تخزينها في متغير محلي يسمى مكافحة $، ثم أسفل هنا دعونا نرى ما تبقى. تبين انه موجود HTML فقط. في الجزء السفلي من هذه الصفحة ونحن نرى في خط ال 37 التي زرتها في هذا الموقع عدد المرات مكافحة، لذلك هناك ملامح الزوجين للاهتمام هنا. واحد، وهذا هو متغير بشكل واضح، ولكنها لا تكفي لمجرد وضع $ العداد في جسد HTML الخاص بك لأنه بطبيعة الحال اذا كان هناك فقط بين PHP HTML الخاص بك هو ذاهب لنفترض أن هذا HTML فقط. تريد حرفيا $ مكافحة المراد طباعتها على الشاشة. ولكن بدلا من ذلك عن طريق إسقاط في وضع PHP مع هذه القطعة من الجملة يمكننا إدراج قيمة حيوي هنا مشابهة جدا في الروح إلى ما قمنا به آخر مرة مع إدراج القيم في السلاسل. في الواقع، وهذا هو مجرد تدوين اختزال لقوله شيئا من هذا القبيل حرفيا، الطباعة ($ العداد) أو حتى شيء من هذا القبيل (٪ S مكافحة،) printf، أو حتى، كما كنت قد شهدت عبر الإنترنت أو في الكتب المدرسية، هناك وظيفة تسمى صدى في PHP الذي يفعل الشيء نفسه، وجميع هذه الطرق هي مجرد يعد ينضب لقول <؟ =. في هذا حالة واحدة لا تحتاج لوضع وPHP الكلمة بعد علامة الاستفهام. هذا هو اختصار لتدوين، مرة أخرى، ما رأيناه فقط قبل لحظة الذي يردد بعض القيمة. دعونا نرى ما النتيجة النهائية لهذا هو في الواقع. اسمحوا لي أن يذهب أكثر في ملف counter.php لدينا، وسنرى أن داود ارتكب خطأ فحسب من خلال اللعب مع رمز هناك. دعونا نذهب الإصلاح أيا كان سكران، ويبدو أن الخطأ هناك، ذهب، على خط 37. وفقا لأعلى هذه الصفحة لقد زرت هذا الموقع 0 مرة. حسنا، دعونا نمضي قدما الآن، وعلى رأس من المتصفح انقر على إعادة تحميل الرمز، وأنا تحميل، انقر فوق والآن لقد زار الموقع 1 مرة، 2، 3، 4، 5، 6، 7، 8. والواقع أنه إذا نظرنا إلى مصدر هذه الصفحة شفرة المصدر الفعلي يتغير، وتلاحظ الغياب التام لأي PHP، والتي جاء فيها أن يتم تقييم PHP رمز أو تفسير جانب الملقم، وهذا يعني أن ذلك ناتج من البرنامج النصي PHP هو ما بعث في نهاية المطاف إلى المستعرض، وهو في هذه الحالة هو بعض HTML الخام وبعض النصوص الخام. ما يحدث هنا؟ حسنا، مع خطوط قليلة نسبيا من التعليمات البرمجية وأنا قادرة على تخزين باستمرار على مدى عدة ثوان، أو إذا انتظرنا لفترة كافية، دقائق وساعات حتى بعض القيمة بطريقة تجعل HTTP يبدو كما لو جليل لقد احتفظت هذا الصدد إلى الخادم، وانها تذكر فقط ما قلت أنها المرة الأخيرة، ولكن في الواقع هناك مجموعة كاملة من التعقيد يجري تحت غطاء محرك السيارة التي تنطوي على ملفات تعريف الارتباط التي التمكينية PHP أن تعطيني هذا الوهم هذا عربة التسوق تشبه الميزة. في الوقت الراهن، مثال تافهة حيث نحن فقط تخزين عدد صحيح، ولكن ذلك يعود إلى ميزة أن تكون ذات قيمة كبيرة عندما نبدأ الحديث عن المشاريع أكثر تعقيدا، من بينها تعيين المشكلة 7. هذه هي مشكلتك مشاركة جدا في تعيين CS50. وأنا أعلم، أنه من المحزن جدا، ولكن ما سوف تجد هو أننا ذاهبون إلى إبرام هذا الجزء من الفصل الدراسي من خلال تحويل الواقع من سياق C بالتأكيد سياق PHP ولكن في حين أن استخدام بعض أساسيات نفسه لقد تحدثنا عن لبعض الوقت. الهدف مع pset 7 في تنفيذ CS50 المالية، وهو الإصدار الخاص بك من ياهو المالية أو التمويل جوجل أو حتى Etrade.com حيث لديك القدرة على البحث عن أسعار الأسهم لرموز معينة، ولكن أكثر من ذلك لديك القدرة على "شراء" و "بيع" الأسهم أن يتم تداول في البورصات المختلفة لأنه كما هذه الصفحة الرئيسية يشير هنا، وهو في الواقع إلى أي مدى بدأنا مجموعة مشكلة بالنسبة لك، لديك نموذج تسجيل الدخول هذا ما يسأل عن اسم مستخدم وكلمة مرور. أنه يحتوي على زر إرسال، ولكن بعد ذلك، كما سنرى في نهاية المطاف، ليس هناك شيء يحدث في الواقع تحت غطاء محرك السيارة لأنه حتى الآن يبقى لك لتنفيذ القدرة على تسجيل المستخدمين الجدد، القدرة على شراء الأسهم، لبيع الأسهم، لننظر في الواقع إلى ارتفاع أسعار الأسهم الحالية. وبالفعل، فإن ذلك لن يكون كما العالم الحقيقي ممكن لأننا لم وتشمل قليلا من التعليمات البرمجية التي من شأنها أن تسمح لك وظيفة واحدة للاستعلام ياهو المالية، الأمر الذي يجعل رائعة البيانات المتاحة مجانا ليبحث حتى أسعار الأسهم استنادا إلى رمز أسهم أو رمز مؤشر، وتحصل مرة أخرى على السعر الحالي للسهم من اليوم. فإن البيانات ترونه في هذا الواقع pset خاصة تكون كما حول العالم الحقيقي كما يمكن الحصول على ذلك ان كنت فعلا التواصل مع الأسهم العالم الحقيقي، وأسعار العالم الحقيقي، وسنرى كم من المال يمكنك ان تجعل ربما خلال الأيام القليلة القادمة من اللعب مع مجموعة مشكلتك الخاصة. ولكن دعونا أولا تعيين المرحلة لكيفية تصميم شيء وهذا بالتأكيد أكثر تعقيدا من counter.php، وهذا أكثر تعقيدا من أي من الأمثلة الرسائل الفورية Frosh حتى الآن، ودعونا نحاول أن نقدم نماذج لبعض هنا أن تسمح لنا سواء بالنسبة للpset 7 و ربما لمشروعك النهائي إذا كنت تفعل شيئا على شبكة الإنترنت استنادا للحفاظ على التعليمات البرمجية منظمة تنظيما جيدا، للحفاظ على نفسك عاقل، واتخاذ خطوة نحو التعاون، سواء في المشروع النهائي CS50 أو أكثر إذا كنت لا تزال لبرنامج شيء في المستقبل. هناك هذا النموذج التصميم العام في علم الحاسوب وتطوير البرمجيات في عام أكثر المعروفة باسم MVC، نموذج عرض وحدة تحكم، وهذا هو اختصار سخيفة الذي يصف فكرة جميلة جدا، وهو الفصل بين الجوانب المختلفة للبرنامج، حفظ تحديدا منفصلة أو منطق منطق تسلسل العمل من موقع على شبكة الانترنت ذلك أن أي شيء ينطوي على أشياء مثل استدعاء دالات قواعد البيانات والاستعلام ومثل لا يحدث بين HTML الخاص بك بل في ملفات منفصلة، ​​وبالفعل، هناك ملف واحد هذا ودعا عادة أن تقوم وحدة تحكم هذا حقا العقل المدبر وراء العملية، وسنرى مثالا هذا في لحظة واحدة. هناك نموذج البرمجة التي رمز التي لا والحديث مع قواعد البيانات، أن يتكلم مع ياهو المالية وما شابه ذلك، وثم هناك V في MVC، وجهات النظر، كل الاشياء التي لتتصل علم الجمال، والملفات التي تحتوي على الواقع HTML الخاص بك، وربما CSS الخاص وما شابه ذلك. الفكرة هنا، وهذه الصورة توحي، هو أن وحدة تحكم هو الملف، كما سنرى قريبا، وكما سترى خاصة في pset 7، ان العالم يتحدث عبر متصفحات الويب الخاصة بهم. وهذا هو الملف الذي زار يحصل على شبكة الانترنت العامة، ولكن وحدة تحكم يتحدث إلى نموذج محتمل، التي تعد واحدة أو أكثر من الملفات الأخرى التي تحتوي على رمز البيانات ذات الصلة ل، كود المتعلقة قواعد البيانات وما شابه ذلك، وبعد ذلك يتحدث إلى وحدة تحكم واحد أو أكثر من الملفات الأخرى المعروفة وجهات النظر، والتي هي جماليات صفحة ويب، وقوالب من نوع ما، والذي قد يأخذ بعض البيانات كمدخلات، ولكن في نهاية اليوم ينبغي أن المنطق فقط من داخل عرض يكون تقديم تلك البيانات، بالتكرار عبر حلقة والبصق فعلا بعض HTML المستندة إلى التسليم لها أو حتى ما يشبه PDF. ما هو لطيفة عن MVC هي أنك يمكن أن يكون لها وجهات نظر مختلفة يعتمد على نوع الجهاز، استنادا إلى نوع تنسيق الملف الذي في الواقع تريد أن تظهر للمستخدم. دعونا نلقي نظرة على بعض الأمثلة تدريجيا أكثر تعقيدا ومصممة بشكل جيد من خلال البدء أولا مع الإصدار 0 هنا. اسمحوا لي أن تمضي قدما وفتح في الدليل MVC لدينا اليوم يسمى ملف index.php في الدليل 0. تلاحظ هذا هو موقع سوبر بسيطة ومخيب جدا وهذا النوع من الإصدار 0 من صفحة رئيسية لCS50، ولاحظ كيف لدينا تصل إلى محاضرات، لدينا تصل إلى المنهج، وإذا كنت اتبع الارتباط إلى إشعار بأن محاضرات URL يصل أعلى سيتغير لlectures.php. إذا كنت ثم اتبع تصل إلى إشعار 1 أسبوع أن التغييرات URL لweek1.php. يبدو أن هناك بنية هرمية بسيطة الى حد كبير هنا. دعونا نلقي نظرة سريعة تحت غطاء محرك السيارة في كيفية وضع هذا الخروج، والواقع أنه إذا أنظر إلى index.php انها بسيطة جدا. في الواقع، على الرغم من أنني يسمى هذا ملف PHP وليس هناك كود البرمجة الفعلية. هناك تعليق أنني كتبت هنا في PHP فقط حتى أن المستخدم لا ينتهي رؤيتها. بطبيعة الحال، كما كان من قبل، في أي شيء بين العلامات PHP يحصل تفسير، حتى لو كان تعليق، وتفسير تعليقا يعني فقط لرميها بعيدا في نهاية المطاف والواقع ليس إرسالها إلى المستعرض، لذلك كل شيء هنا هو في علم الجمال فقط. إذا كنت تفتح lectures.php بالمثل هذا أيضا مجرد ملف الثابت ترميز. يحدث أن تسمى شيئا. PHP، لكنها في الحقيقة للتو. HTML، وweek1.php، week2.php وبالمثل هي العلامات فقط، لذلك هناك مجموعة من أوجه القصور في هذا التصميم. واحد، انها كمية كبيرة من نسخ / لصق. على الرغم من أن الشيء الوحيد الذي تغير بين هذه الملفات هي قائمة غير مرتبة، العلامات لي، مع ذلك لدي نوع الوثيقة، HTML، الرأس، عنوان والجسد وثيقة، وثيقة HTML وأكثر في كل ملف واحد، مما يعني أنه إذا أريد من أي وقت مضى لإعادة هيكلة هذه صفحة ويب أو restylize أنه يجب أن أذهب في وتغيير كل هذه الملفات يدويا أو مع بعض ضخمة البحث والاستبدال. دعونا نلقي خطوة نحو تصميم أكثر ذكاء، ويعد التفكير في الإصدار 1 هنا حيث في مثل قراءة البيانات التي لدينا المدرجة بحيث يمكنك لعب جنبا إلى جنب مع هذه أكثر مهل في وقت المنزل الذي لدينا هنا موجز من الملفات في الإصدار 1 من هذا الموقع، ويبدو أن ذلك لقد اتخذت على نفسي لخصم ما بعض التعليمات البرمجية المشتركة، وfooter.php header.php. حسنا، دعونا نلقي نظرة على ما هو داخل أول هذه. Header.php تبدو مألوفة، ولكن لاحظ حيث أنها لا تحصل على قطع؟ مباشرة بعد السطر 19، لذلك هذا هو كل ما كان شائعا من index.php الملفات، lectures.php، week1 وweek2.php من المثال السابق. كان ما فعلته نسخة وقطع كل شيء أن كان سمة مشتركة بين جميع هذه الملفات، وضعها في ملف رأس منفصلة، ​​وبالمثل في footer.php لم أكن تطبيق نفس المبدأ حيث خطوط فقط للاهتمام في footer.php هي هذين، وثيقة وهيئة HTML إغلاق. ولكن ماذا يعني هذا الآن هو أن في الإصدار الجديد إشعار index.php كم فإنه يمكن الحصول على أبسط. منح، أكثر قليلا خفي النظر، أقل قليلا بديهية لمتابعة الأعلى إلى الأسفل، ولكن يا إلهي، هو ذهب الآن كل ذلك التكرار. نطلب باستخدام دالة PHP دعا حرفيا تتطلب أعلى، التي تذكر جدا، أذكر، من لC # تشمل آلية. نطلب header.php في الأعلى. نطلب footer.php في الجزء السفلي، والشيء الوحيد الذي يختلف أو خاص حول هذا الملف هو المحتوى الذي من المفترض أن تكون فريدة من نوعها لذلك. إذا ذهبت بعد ذلك الى، يقول، lectures.php، وينطبق المبدأ ذاته. مرة أخرى، بعض التعليقات حتى اعلى، ولكن بعد ذلك تتطلب رأس، تذييل تتطلب، وبين انها فقط المحتوى الذي الذي تغير فعلا. وإذا نظرنا إلى أسبوع 1 أسبوع 2 وكنا نرى أنه قد تم تطبيق نفس المبدأ هناك. حسنا، لم تكن فعلنا تماما هناك. دعونا نلقي نظرة على الإصدار 2، التي لديها بنية مماثلة، ولكن لاحظ الآن لقد أدخلت شيء آخر. في السطر 10 لقد تعرفت helpers.php، والذي يحتوي على ما يبدو دالات المساعدة. A الدالة المساعد عموما وظيفة قصيرة نسبيا أن تكتب لمساعدتك في أماكن مختلفة، ودعونا نرى ما هو داخل helpers.php. في هذه الحالة، يبدو أن لديها 2 المهام. أذكر من ذلك اليوم مع المثال لدينا مكعب يمكنك تحديد المهام الخاصة بك في PHP، وما قمت به الآن هو أنني قمت الوظائف المحددة دعا تقديم تذييل وتقديم رأس، دعا وأولها تأخذ معلمة البيانات، القيمة الافتراضية التي هي مجموعة فارغة، كما اقترح هناك، ويمكن أن نكتب هذا في الواقع أكثر وضوحا حتى في أحدث إصدار من PHP بالقول قوس مربع فتح، إغلاق مربع قوس. هذا يعني مجموعة فارغة من حجم 0 ولكن مع ذلك صفيف. هذه الوظيفة استخراج قليلا خاصة في هذا ما يفعله هو أنه يأخذ وحجتها مجموعة النقابي يحتوي 0 أو أكثر أزواج قيمة المفتاح، وإذا كان لديك مفتاح للفو وقيمة من شريط وظيفة مستخلص يخلق وضعا يكون فيه الآن، وذلك اعتبارا من خط 11، لديك متغير محلي يسمى $ فو قيمته هو بار. وإذا كان لديك المزيد من المفاتيح والقيم في مجموعة البيانات، وبالمثل يمكن استخراج ما في النطاق المحلي أو اسم الفضاء بحيث footer.php و نفس الفكرة الى هنا بحيث header.php الحصول على هذه المتغيرات. في الواقع، اسمحوا لي مرة أخرى فتح header.php ولفت الانتباه إلى الآن ما يبدو في هذا الإصدار. بدلا من الترميز الصعب CS50 كعنوان لكل صفحة واحدة لاحظ الدينامية التي من الممكن الآن. في السطر 5 مرددا أنا متغير العنوان، ولكن أولا أنا تمرير هذا المتغير إلى وظيفة العنوان دعا htmlspecialchars. A اسم غبي لوظيفة، طالما أنه هو، ولكن هل حقا ما يقول. فإنه يضمن أن أي أحرف خاصة في سلسلة وهذا ما كان صدر في ونجا بشكل صحيح HTML. هذا هو في الواقع وسيلة لتجنب ما يسمى هجوم عبر موقع البرمجة حيث يمكن للشخص بشكل ضار أو غير قصد حقن HTML الخاصة بهم إلى موقع الويب الخاص بك عن طريق لصق في شكل ما، على سبيل المثال، ما كنت لم نكن نتوقع تماما، لا سيما شفرة جافا سكريبت، كما سوف نتحدث عن في غضون أسبوع أو اثنين الخاص الوقت. هذا header.php الآن، انها وجهة نظر بمعنى أنه يسمح لك لعرض جماليا محتويات بعض مجموعة البيانات. ولكن على نحو أكثر تحديدا، انها القالب. هذا هو نوع من خطة الآن ما نريد رأس كل صفحة لتبدو وكأنها، ولكن هناك بعض الدينامية في أننا نريد أن يكون عنوان إدراج حيوي استنادا إلى متغير اللقب تم استخراج أننا عندما دعا، مرة أخرى، وظيفة تجعل الرأس. الآن، إذا نظرنا إلى تذييل تقديم، هناك في الواقع لا تستخدم الكثير من هذا الحق الآن لأنه في footer.php ليس هناك ديناميكية على الإطلاق. يمكن أن يكون هناك، ولكن في الوقت الحالي فإنه من الصعب قائمة مشفرة من 2 العلامات، ولكن نفس الفكرة تنطبق، بحيث تشير في الواقع لماذا نحن لم نضيع الوقت وجود رأس وتجعل وظيفة تقديم تذييل؟ اسمحوا لي أن انتقل الآن إلى الإصدار بدلا 3، وفي الإصدار 3 في المساعدين قررت تبسيط الأمر أكثر. اسمحوا لي أن يكون وظيفة واحدة تقدم. يسمى هذا الوقت اسمحوا لي انها قد تأخذ حجة أخرى، قالب، الذي صمم ليكون اسم القالب، وبعد ذلك سوف سلسلة بوقاحة. PHP لقيمة هذا المتغير في، ثم إذا كان موجودا foo.php، bar.php أو header.php وfooter.php، ثم انا ذاهب الى المضي قدما واستخراج البيانات المتغيرة وتتطلب بعد ذلك أن المسار. وبعبارة أخرى، لاستخدام هذا الآن، إذا كنت تفتح index.php تلاحظ أنني لا تستدعي تقديم رأس بعد الآن. أعطي الكلمة فقط تقديم، ولكن مررت في قيمة رأس نقلت من لتوضيح القالب الذي أريد في الواقع ليتم تحميلها. ثم لاحظت أكثر من هنا ما أفعله. أنا في تمرير مفتاح حيوي من العنوان، قيمة CS50، وهذا أيضا، كما رأينا من قبل، ويمكن تقديم أكثر اقتضابا في أحدث إصدار من PHP أين يمكنني استبدال دالة صفيف مع الأقواس المربعة، الذي أقترح هو أكثر قابلية للقراءة وبالتأكيد أسهل قليلا لكتابة. وبطبيعة الحال، مع الدعوة تجعل تذييل في الجزء السفلي، نحن لا تهتم يمر في الوسيطة الثانية في كل شيء، لا مجموعة النقابي، لأنه لا يوجد شيء داخل دينامية أن تذييل الصفحة. انها مجرد وثيقة لبعض العلامات HTML. جيدة، ونحن نتخذ خطوات لتنظيف الامور حقا هنا، ولكن اسمحوا لي أن تفتح 2 أمثلة النهائي. هذا واحد، رقم 4، لاحظ أن لقد اتخذت قرارا واعيا الآن لتحسين بناء على المثال السابق باستخدام التسلسل الهرمي لبعض وأخيرا ملفاتي. تلاحظ أن في هذا الملخص، في هذا قراءة لي، لقد أدخلت ويتضمن الدليل ودليل قوالب محتويات التي ستكون الأمور أريد أن تشمل والقوالب التي أريد أن تجعل، على التوالي. هذا هو حقا كوني الشرج ومحاولة لابقاء الامور مرتبة، الحفاظ على الملفات ذات الصلة معا، ولكن النتيجة النهائية هو أن لدينا الآن الإعداد أرتب قليلا، ولكن علينا أن نتذكر الآن في، على سبيل المثال، index.php عندما نطلب helpers.php الملف علينا أن تتطلب الآن عبر يشمل / helpers.php بدلا من القول فقط helpers.php لأنه الآن انها في الواقع في دليل فرعي. الآن، بوصفها جانبا، سترى في هذه الأمثلة وغيرها بعض تتطلب وظائف مثل، تتطلب مرة واحدة. هناك في الواقع وظيفة تسمى نفسها تشمل، ولديهم كل سلوك مختلف قليلا. هنا أقول مرة واحدة تتطلب لجعل سوبر الواضح أن أريد فقط تلك وشملت المساعدين في مشروعي مرة واحدة. ولكن إذا أنا دقيق وإذا أنا أفكر في الواقع من خلال منطق بلدي بشكل صحيح ويكفي فقط أن أقول أيضا تتطلب أعلى ومن أعلى طالما أنا نفسي لا تتطلب بطريق الخطأ أن الملف نفسه في مكان آخر. في الواقع، وهذا هو وسيلة أكثر كفاءة قليلا للقيام بهذه الأمور بعد ذلك باستخدام تتطلب مرة واحدة، ولذا فإنني سوف تقليم عليه أن يطلب فقط. دعونا نلقي خطوة إلى الأمام. هذا المثال الأخير الآن، الإصدار 5، لديه التسلسل الهرمي للمجلدات حتى أنظف. لاحظت ما فعلته هنا فقا لقراءة البيانات في هذا الإصدار النهائي الآن لدي الدليل بلدي HTML، والتي لقد كان كل هذا الوقت، ولكن داخل هناك الآن فقط index.php، lectures.php، week1.php وweek2.php. ويتضمن الدليل يعيش الآن جنبا إلى جنب مع الدليل HTML، حتى على مستوى نفس أخ، إذا جاز التعبير. يفعل ذلك المجلد Templates. الوجبات الجاهزة المفتاح هنا هو لقد قدم هيكل أكثر قليلا، ولكن السمة الرئيسية الآن هي أن الملفات فقط التي تحتاج إلى شبكة الإنترنت يمكن الوصول إليها، علنا ​​عنونة من URL على شبكة الانترنت العامة في دليل بلدي HTML. وفي الوقت نفسه، وغيرها من الملفات، helpers.php، footer.php، header.php، التي هي ربما يمكن القول أكثر حساسية، ربما المساعدين في الواقع بعض أسماء المستخدمين وكلمات السر أو بعض الفكرية الملكية من الألغام، وظائف أنا حقا لا نريد للعالم أن يرى، حتى لو عن طريق الخطأ. انها ممارسة جيدة للحفاظ على الخروج من الدليل HTML العامة أي الملفات التي لا تحتاج لنفسها ان تكون عامة. كل ما عليك القيام به في هذه الحالة عند النظر في، على سبيل المثال، الدليل HTML في ملف index.php، تلاحظ لدينا لمجرد أن يكون قليلا أكثر حذرا عندما تتطلب أو مرة واحدة تتطلب هذا الملف. ولست بحاجة إلى القيام به أولا .. للذهاب إلى الدليل الرئيسي، بعد ذلك / وتشمل / helpers.php للغوص في التراجع للحصول على الملف الذي يهمني. ثم أي أسئلة على MVC هذا التجسد أو بسيطة نسبيا منه؟ واسمحوا لي أن أوضح أن ركزنا قليلا جدا على V هنا، وجهات النظر وهذه الديون للخروج من هذه القوالب. لقد تميز حقا لا M من C فقط حتى الآن. في الواقع، هناك فعلا ما لا M هنا، وحتى C لدينا، تحكم، لا تفعل فعلا كل ذلك بكثير، ولكن عليك الحصول على أكثر من ذلك بكثير مألوفة مع كل من تلك الرسائل 2 من MVC، أو بدلا من ذلك، سوف تحصل على أكثر من ذلك بكثير على دراية C في MVC للاطلاع على المجموعة المشكلة 7، ولذلك لا يوجد المزيد من ذلك في الأفق. الأسئلة؟ هناك في الواقع لا أحد هنا. حسنا، دعنا ننتقل الآن إلى الموضوع الثاني والأخير لهذا اليوم. هذا هو مقدمة لقاعدة بيانات. حتى هذه النقطة كان لدينا عدد قليل من الطرق لتخزين البيانات. لقد استخدمنا المتغيرات. مرة أخرى في ملف C لدينا، I / O مناقشة بدأنا باستخدام ملفات نصية واستخدام الملفات مثل fprintf، ومن ثم بدأنا حتى الحديث عن ملفات CSV قليلا أو قيم مفصولة بفاصلة، يسمح ذلك كل هذه أن يكون لدينا البيانات المخزنة إما باستمرار أو غير بإصرار. ولكن حتى ملفات CSV لا تساعد حقا أن تبحث وإدراج وحذف. انها حقا مجرد ملف نصي غبي مفصولة بفواصل من صف من صف من، حتى إذا كنت ترغب في البحث هذا الملف أفضل يمكنك القيام به هو حقا البحث الخطي. عليك أن تبدأ في الجزء العلوي من الملف، وقراءة كل شيء في، والبحث عن بعض قيمة الفائدة. إذا كنت ترغب في إدراج فيه عليك أن تفعل الشيء نفسه، أكثر من ذلك بالتكرار وإدراج في مكان معين، في واقع الأمر، لديك لبذل كل ما من منطق البحث نفسك. لا يمكنك أن تفعل نمط مطابقة ذكية على ملف CSV نفسك إلا إذا كنت كتابة التعليمات البرمجية. لا يمكنك أن تفعل لملف الترشيح CSV إلا إذا كنت نفسك كتابة التعليمات البرمجية. لن يكون ذلك جميلا إذا وضع شخص آخر في جميع الجهود في الواقع لجعل البحث سهلة وسهلة الإدراج وحذف وتحديث وهكذا دواليك؟ هذا هو بالضبط ما هو قاعدة بيانات. SQL، لغة الاستعلام الهيكلية، هو آخر لغة اننا هنا اليوم تقديم، ولكن هذا أيضا يمكن الوصول إليها إلى حد ما، وما نحن ذاهبون حقا القيام به هو مجرد نتف من ورائه بعض أبرزها الخصائص بحيث لpset 7، وإذا كنت تفعل شيئا على شبكة الإنترنت استنادا، المشروع النهائي الخاص بك، لديك القدرة على التعبير عن نفسك من حيث الاستعلامات البيانات. لديك القدرة على تخزين قليلا أو كثيرا من البيانات بطريقة أكثر تنظيما من شأنها أن في نهاية اليوم تجعل حياتك أسهل لأنه مع SQL يمكنك التعبير عن نفسك أكثر دقة، أكثر من ذلك بكثير منهجي من أجل نعود بعض فرعية من البيانات من أكبر جسم من البيانات. يمكنك التفكير في قاعدة البيانات، في هذه الحالة، قاعدة بيانات SQL، حقا مثل Excel أو أرقام حيث انها جداول البيانات، أو ربما جداول متعددة، وجداول البيانات، بالطبع، والصفوف والأعمدة، وذلك لأن قواعد البيانات العلائقية SQL هي، بمعنى العلائقية أنهم تخزين البيانات من حيث هذه الجداول، الصفوف والأعمدة. فهي أعلى من أداء ما يشبه جدول البيانات، ومن المفترض جدول لاستخدامها من قبل الإنسان. وتهدف قاعدة بيانات لاستخدامها من قبل مبرمج كتابة التعليمات البرمجية ضدها، لذلك تجسد قاعدة بيانات ستكون إما سطر الأوامر. واحدة من قواعد البيانات العلائقية الأكثر شعبية هناك، مرة أخرى، الخلية، وهو مجاني رائعة، وأداء عال جدا، وهذا ما تستخدم الفيسبوك للغاية في وقت مبكر وإلى حد ما حتى اليوم لتخزين الكثير من البيانات الخاصة به، وسنرى في لحظة أن استخدام أوامر بسيطة نسبيا يمكننا تحديد البيانات وإدراج، تحديث البيانات، حذف البيانات وما شابه ذلك، لكن لحسن الحظ، هناك أكثر من واجهة سهلة الاستخدام من مجرد كتابة في موجه بالأبيض والأسود هنا. سنستخدم لpset 7 و بعده أداة مجانية تسمى بريس. الاسم هو من قبيل الصدفة. الأداة التي ستنفذ يحدث في PHP، ولكن هذا لا صلة لها بالموضوع أساسا. ما هو مفيدة حول بريس هو أنه أداة على شبكة الإنترنت. لقد كنا مثبتة مسبقا في الجهاز بالنسبة لك، ومعها يمكنك إنشاء الجداول في قاعدة بيانات، يمكنك إدراج البيانات، حذف البيانات، ونرى عموما البيانات في بيئة سهلة الاستخدام إلى حد ما. المستخدمون لن تستخدم بريس. هذا هو في الحقيقة مجرد أداة إدارية أو المطور التي لرؤية وكزة حول البيانات الخاصة بك ومعرفة كيفية تنظيم ذلك، مثل الكثير من نفسك أنك قد تستخدم Excel أو أرقام، ولكنها ستكون وسيلة رائعة لتصور ما يجري تحت غطاء محرك السيارة بحيث يمكنك التركيز على حل مشكلة مثيرة للاهتمام وليس ذلك بكثير على أوامر غامضة. دعونا نلقي نظرة على مثال من البيانات التي قد تكون مخزنة tabularly في قاعدة بيانات علائقية. وهنا أحد الأمثلة على ذلك. الآن، للأسف، أخطأ بريس على جانب الطريق رمي أيضا العديد من الكلمات والرسومات في لكم، ولكن إذا كنت في شحذ فقط على العمود ID، العمود اسم المستخدم والعمود التجزئة، هذا هو جدول فعال، ولكن يحدث أن تكون قصاصة من داخل الجدول من الأجهزة باستخدام ملف التي نقدمها لكم مع مجموعة مشكلة في 7. على وجه الخصوص، نقدم لكم ملف الذي يمثل المستخدم الجدول، لذلك تحتوي على جدول المستخدمين مع 3 أعمدة، واحد منها هو معرف فريد ابتداء من الساعة 1 و يجري بعد ذلك زيادة. العمود الثاني هو اسم المستخدم، وأولئك منكم الذين لم هاكر، الطبعة هاكر لpset 2 قد، التعرف على بعض من هذه أسماء المستخدمين على الأقل. على الجانب الأيمن من كلمات السر، لكنها ليست كلمات السر الحرفي. انهم التجزئة منه، لذلك تبين أن تخزين كلمات السر في قاعدة بيانات هو فكرة سيئة حقا. كنت قد قرأت جميع ربما في مرحلة ما من بعض المواقع أو قاعدة بيانات للخطر بعض الشركات، ومن ثم عليك أن تغيير كلمة المرور الخاصة بك، تحتاج إلى الحصول على مبلغ معاد على الأشياء لأن بعض الرجل سيئة اندلعت فعلا في حسابك نتيجة لذلك. تخزين كلمات المرور في نص واضح، غير مشفرة في قاعدة بيانات هو أبله تماما، وحتى الآن انها مسلية إلى حد كبير ثم قرأت عن بعض الشركات معروفة جدا في بعض الأحيان في الصحافة للخطر الذي قواعد البيانات، وهذا الجزء ليس مضحكا، ولكن غير مشفرة حقيقة أن تحتوي على قواعد بيانات أمر مثير للسخرية لأن كلمات المرور حرفيا مع سطر واحد من التعليمات البرمجية يمكنك حماية ضد هذا التهديد بصفة خاصة، وهذا ما فعلناه هنا. حتى وهمية لدينا القليل الإصدار المالية CS50 تشفير كلمات المرور ونحن فقط لحسن التدبير، وأنه حقيقة كل هذه كلمات السر تبدأ مع $ 1 $ هو مجرد اتفاقية. هذا يعني فقط أنهم المشفرة أو تجزئته حقا، الذي هو مثل وظيفة التشفير في اتجاه واحد حيث لا يمكنك عكس آثاره مع ما يسمى MD5. حقيقة أن 50 هو بعد ذلك يعني أن قيمة الملح كان يستخدم من 50 لتجزئة كل هذه كلمات السر باستثناء واحدة. الألغام، بطبيعة الحال، وكما ترون هناك، HA، وكان استخدام الملح مختلفة، لذلك أولئك منكم الذين حصلوا على تعثرت قليلا حتى ربما في هاكر 2، وربما كان ذلك نتيجة لدينا بعد استخدام تجزئة مختلفة من الآخرين لأن كلمة السر هو في الواقع نفس حيث أن بعض المستخدمين الآخرين هناك. في الواقع، إذا كنت قد تم الانتظار كل هذه الأسابيع لمعرفة ما هي تلك كلمات السر وهنا كانت كلمات المرور التي تم الطعن لك للقضاء في الطبعة هاكر من مجموعة المشكلة 2، لذلك لا صعبة جدا. في الواقع، كان لمالان نفس jharvard، لكنهم إذا عدنا تبدو مختلفة. التركيز على jharvard في قرمزي بسبب المملحة بشكل مختلف. منزعجة الخوارزمية في الطريقة التي تجزئة القيمة، قيمة مشفرة تبدو مختلفة قليلا لأن المدخلات كانت مختلفة قليلا، ولكن كلمة المرور تحت غطاء محرك السيارة كان لا يزال قرمزي في نهاية المطاف. الآن، هذا الذي يهتم؟ حسنا، نحن نقدم لكم مع المستخدمين العينة، والعينة أسماء المستخدمين والتجزئة من كلمات المرور الخاصة بهم بحيث يكون لديك فعلا بعض العملاء لCS50 المالية عندما تحصل على أول بعيدا عن الارض مع التعليمات البرمجية. سيكون لديك لتنفيذ أكثر من الجداول داخل الخلية، داخل قاعدة البيانات. سيكون لديك لخلق المزيد من جداول البيانات، على نحو فعال، ولكن قررنا أن أقدم لكم هذا واحد لتبدأ، وسترى أن المشكلة مواصفات مجموعة يرشدك خلال عملية استيراد هذا الجدول وشرح أيضا ما تناقلته بعض والخصائص، وسترى أيضا أن نقدم لك رمز للتعامل مع تجزئة أو تشفير كلمات المرور هذه، حتى لا داعي للقلق كثيرا حول ما MD5 أو ما شابه ذلك هو في الواقع كل شيء. لذلك، SQL، لغة الاستعلام الهيكلية. هذا هو، بكل بساطة، لغة نحن على وشك البدء في استخدام pset في 7 وربما خارجها لطلب البيانات من قاعدة بيانات بعض. و، البيانات مرة أخرى وتخزينها tabularly في هذه الجداول العلائقية، والأعمدة، والصفوف، ولكن باستخدام بعض بناء الجملة بسيطة نسبيا مثل حذف، يمكن إدراج وتحديث وتحديد نقوم به بالضبط. يمكننا حذف من قاعدة البيانات، إدراج، تحديث البيانات، وكذلك تحديد، وهذا هو، استرداد البيانات من قاعدة البيانات. كيف نذهب عن القيام بذلك؟ اسمحوا لي أن المضي قدما في الجهاز. اسمحوا لي سحب ما يصل الموقع http://localhost، التي، مرة أخرى، هو الأجهزة المحلية نفسها. وهذا اللقب الافتراضي الخاص به. واسمحوا لي أن انتقل إلى / بريس. هذا يحدث ليكون URL الخاص أن الأجهزة هي مسبقا لفهم يطالب فورا لي عن اسم المستخدم وكلمة المرور. كالعادة، انا ذاهب لكتابة jharvard والقرمزي، ولكن ندرك أن هذا هو حساب المسؤول على الكمبيوتر. انها مجرد مصادفة أن هناك أيضا jharvard مسجلة لCS50 المالية. Jharvard، قرمزي، أدخل يعطيني واجهة المستخدم التي رأيناها لمحة عن لحظة مضت، وانها قليلا في البداية الساحقة، لكن اطمئني، كنت أبدا ستكون لدينا لفوق معظم الروابط في هذه الأداة. سوف ينتهي بك الأمر باستخدام مجموعة فرعية صغيرة التي هي سوبر مفيدة، وأولها هو قواعد البيانات هنا. إذا ذهبت إلى قواعد البيانات، لاحظ أن أنا دفعت الأول إلى إنشاء قاعدة بيانات. هذا هو مثل إنشاء ملف Excel جديد، على نحو فعال. انا ذاهب الى المضي قدما، وندعو هذه المحاضرة، وأنا مجرد الذهاب الى هناك تجاهل حقل ومقارنتها. عليها أن تفعل مع تمثيل البيانات فيه، وانا ذاهب الى انقر فوق إنشاء، ثم لاحظ الآن وأنا أترك خلق على الجانب الأيسر حيث تقول لا قواعد البيانات وأود أن نرى قريبا قاعدة البيانات المحاضرة. إذا كنت انقر الآن على الجانب الأيسر، وقاعدة بيانات محاضرة، تلاحظ علامات التبويب تغيير بلدي قليلا. أنا عندي هيكل، SQL، الاستيراد والتصدير وبعض الأشياء الأخرى. هيكل جميلة فارغة من ذلك بكثير. العثور على الجداول في قاعدة البيانات، كما جاء هنا، لذلك دعونا إنشاء جدول، ودعونا نمضي قدما وإنشاء جدول مثل الطلاب، وعدد الأعمدة ونحن لا نريد؟ دعونا نحافظ على هذا بسيط، ودعونا سجل لكل طالب عدد ID، وهو اسم، وعنوان البريد الإلكتروني. سنقوم يبقيه بسيط من هذا القبيل، لذلك 3 أعمدة، انتقل. النموذج الذي تراه هنا الآن قليلا فوضوي والساحقة، ولكن لدينا فقط للذهاب من خلال ذلك من صف، لذلك بسرعة حقا دعونا نعطي العمود الأول في قاعدة البيانات هذه على اسم ID لمعرف فريد. سيكون عدد صحيح. لا أستطيع تجاهل الواقع وطول القيم. والباحث ستكون 32 بت بغض النظر عن ما اكتب في هناك، لذلك دعونا اتركه فارغا. القيمة الافتراضية، ويمكنني أن تجعل من فارغة، كما هو محدد. أنا ذاهب إلى ترك ذلك وحده. دعونا لا تقلق بشأن القيم الافتراضية. دعونا انتقل إلى هنا لسمات، أليس كذلك. هذا مثير للاهتمام. دعونا نمضي قدما وبشكل تعسفي إلى حد ما أن نقول يجب أن تكون معرفات غير الموقعة. دعونا لا نضيع الأرقام السالبة. دعونا نذهب 0 حتي 4000000000، يعطي أو يأخذ، وثم دعونا لا تلمس أي من هذه الحقول فقط حتى الآن هناك، ولكن ثم اسمحوا لي أن اكتب في اسم هنا إلى أسفل، وغيرها من ثم كان البريد الإلكتروني، وبالتالي فإن الصيد هو البريد الإلكتروني واسم، من الواضح أن لا الأعداد الصحيحة، لذلك دعونا تغيير هذه إلى حقل مختلف. تبين VARCHAR، شار متغير الطول، مثل سلسلة في قاعدة بيانات SQL ولكن بطول متغير، وكان لديك فعلا ليقولوا ذلك مقدما الحد الأقصى لطول السلسلة، لذلك انا ذاهب الى حد ما بشكل تعسفي من اتفاقية نوع 255 حرفا. يمكن أن أقول تماما 32. يمكن أن أقول 1،000. كنت نوع من الحاجة إلى تقرر لنفسك بناء على التركيبة السكانية لديك ما هو أطول اسم الطالب وتذهب مع هذا العدد أو أكبر قليلا، ولكن ما هو جميل عن VARCHAR هو انها لن تضيع 255 بايت على اسم كل طالب. اذا كان DAVID انها لن تستخدم كلها 255 بايت، ولكن هذا على الحد الأعلى، لذلك سأذهب مع 255 فقط من خلال الاتفاقية، ولكن يمكن أن نناقش بعض لتكون أقل قيمة، وعنوان البريد الإلكتروني لمجرد أن يكون ثابت 255، ولكن مرة أخرى، أننا يمكن أن يكون نفس المناقشة. ولكن انا ذاهب الى القيام شيء آخر أكثر من هنا على الجانب الأيمن. ما هو قوية حول قاعدة بيانات هي أنه يمكن أن تفعل الكثير من رفع الأحمال الثقيلة أو العمل المعقد بالنسبة لك. على وجه الخصوص، في الحقيقة أنا لا يهمني ما أرقام ID تلميذي هي. من المفترض أن تكون مجرد معرف فريد في قاعدة بيانات لذلك لدي التمثيل مقتضبة 32 بت من ذلك الطالب بحيث لدي طريقة ما لتحديد فريد لهم لئلا تكون 2 ديفيدز هناك، على سبيل المثال، في فئة. في الواقع، انا ذاهب للتحقق من هذا المربع AI، مقدار السيارات، بحيث قاعدة البيانات، الخلية، والشخصيات من ما كل طالب ID المدرج حديثا هو سيكون. أنا لا تملك حتى ليهمني ذلك في قانون بلدي، وانا ذاهب أيضا لاختيار شيء ضمن القائمة الفهرس. مؤشر المنسدلة هنا والابتدائي، فريدة من نوعها، ومؤشر النص الكامل. يمكنك تخمين ما ربما اثنين من هذه الأمور، ولكن تبين في قواعد البيانات العلائقية أنت مبرمج أو مسؤول قاعدة البيانات الحصول على نحو استباقي تعطي تلميحات إلى قاعدة البيانات على ما المجالات في جدول خاص هي قليلا. على سبيل المثال، في هذه الحالة أنا ذاهب إلى القول بأن ID سيكون مؤشر الأولية، والمعروف باسم مفتاح أساسي. ما يعني بحكم التعريف هو أن من الآن فصاعدا ID وبشكل فريد الطلاب في هذا الجدول. لن يكون لدى الطالب نفس معرف لأنني فرض هذا القيد أو هذا مؤشر. وعلاوة على ذلك، وهذا ما يجري القيام به بالنسبة لي هو انه ذاهب لاقول الخلية التي ID هو خاص. أهتم بشكل خاص حول ID، لذلك يذهب إلى الأمام والقيام السحر بنية البيانات الخاصة بك نزوة ل، بناء نوع من الأشجار. عادة ما تسمى شيء انها B-شجرة، ونحن لم ننظر في أسابيع، ولكن من آخر بنية بيانات مماثلة في مثل هذه الروح إلى الأشجار الثنائية ويحاول أننا في النظر، لكنه سيحتاج إلى القول إلى قاعدة البيانات هذا المجال المهم لدرجة أنني ربما تريد أن تكون قادرة على البحث في ذلك، والمضي قدما في بناء يتوهم البعض هيكل البيانات في الذاكرة لتسريع البحث بحيث مثالي انهم الوقت ثابتة أو على الأقل قريبة من ممكن أن بحيث لا تتحول الى البحث الخطي، والذي لن يكون العلي أداء النهج. على النقيض من ذلك، كان يمكن أن يكون عنوان البريد الإلكتروني مفتاح أساسي. من الناحية النظرية، عنوان البريد الإلكتروني الجميع هي فريدة من نوعها، إلا إذا كنت تقاسم بعض الاعتبار، ولكن هذا عادة لا جيدة لاستخدام شيء من هذا القبيل سلسلة كمفتاح أساسي لأنه إذا هدفها في الحياة هو تحديد فريد الصفوف في الجدول الخاص بك وليس هناك سبب لاستخدام الحد الأقصى 255 بايت لتحديد فريد شخص إذا كان يمكنك الحصول بعيدا مع فقط 4 بايت أو الباحث 32 بت. بشكل عام، يجب أن يكون المفتاح الأساسي قصيرة وموجزة وشيء من هذا القبيل مثالي عدد صحيح أو الباحث الكبير، الذي صادف أن يكون 64 بت. ولكن يجب أن يكون عنوان بريد إلكتروني فريد، واحدة من السمات من قاعدة بيانات جدا هو فرض تفرد بالنسبة لي. من خلال تحديد فريدة هنا بجوار البريد الإلكتروني، على الرغم من البريد الإلكتروني نفسه يتم تمريره خارج الشاشة، وأنا أقول لقاعدة البيانات لا ثقة لي. لا تدع لي إدراجها في قاعدة البيانات عنوان البريد الإلكتروني نفسه مرتين، حتى لو أنا أحمق ولست جيدة جدا مع المؤسسة الدولية للعلوم بلدي وآخر، والمؤسسة الدولية للعلوم الفعلية كود PHP واسمحوا لي بطريق الخطأ للمستخدم تسجيل عنوان بريد إلكتروني مع القائمة قاعدة البيانات هو آخر مستوى الدفاع عن صحة لضمان أن عنوان البريد الإلكتروني مكررة لا ينتهي في الجدول. الآن، على النقيض من ذلك، على سبيل الاسم الذي ربما لا تريد لجعل هذا فريدة من نوعها لأن هناك أبدا ثم يمكن أن تكون 2 أو 2 ديفيدز الحدادون مايك، على سبيل المثال، في قاعدة البيانات الخاصة بك، ليصبح الفرد سوف نترك وحده فقط. انا ذاهب الى المضي قدما وانقر على حفظ أسفل اليمين، وكل شيء يبدو جيدا، ولكن لاحظت هنا هذا هو الجزء الذي لأننا الآن لن تنفق الكثير من الوقت على لأن بناء الجملة معقدة بعض الشيء، وليس لدينا لإنشاء الجداول كل ما في كثير من الأحيان، ولكن SQL نفسها هي لغة، بناء الجملة من أجل الحق الذي هو هنا لقد أبرزت أن. ما هو حقا بريس أنه يخلق GUI على شبكة الإنترنت بالنسبة لك والتي يمكنك توفير الوقت وعدم الحاجة إلى كتابة يدويا من استعلام SQL طويلة نسبيا من هذا القبيل. وبعبارة أخرى، إذا كنت تريد يدويا إنشاء هذا الجدول، إما في تلك بريس بالأبيض والأسود أو حتى في الأوامر باستخدام هذا التبويب أخرى، هذا التبويب SQL حيث يمكنك كتابة أي استفسارات في SQL تريد، بصراحة، هذا من شأنه أن اتخذت لي دقيقة واحدة في الواقع أن نتذكر بناء الجملة بأكملها، وحتى ذلك الحين لدي ربما إحراز بعض الأخطاء المطبعية، لذلك هذه الأداة مفيدة لاشياء من هذا القبيل، وكما انها مفيدة. يمكنك أن تبدأ في الاستدلال ما هو بناء الجملة فقط من خلال لون لطيفة الترميز التي تضيف بريس للراحة لنا البصرية. ولكن الآن دعونا نفعل هذا بدلا من ذلك. اسمحوا لي أن انتقل إلى علامة التبويب إدراج في الأعلى، واسمحوا لي أن تمضي قدما وعلى سبيل المثال إدراج معرف دعونا نقول من الواقع، لا يهمني. انه سيكون لطريقة السيارات. انا ذاهب للسماح للصفقة قاعدة البيانات مع هذا. ولكن سأكون ديفيد، والبريد الإلكتروني الخاص بي يجب أن يكون malan@harvard.edu. دعونا نمضي قدما هنا وضعت في مايك سميث واحد آخر. سوف أعطي نفسي اسم العائلة أيضا، وسيكون لدينا له ان smith@example.com، ثم أين أذهب بعد ذلك؟ حسنا، يبدو أن الذهاب هو الزر لفوق، وفويلا. تلاحظ في الصفوف الأعلى 2 المدرجة. هذا هو الاستعلام SQL الفعلي. هذا هو أداة تنفيذ بريس بالنسبة لي، ولكن النتيجة النهائية، لاحظ، إذا ذهبت الآن إلى علامة التبويب شاشة، هو أن نرى الصفوف 2 في هذا الجدول، تذكرنا جدا من الناحية الجمالية من الجدول رأينا في وقت سابق لمستخدمينا من pset 7، واحد منهم هو ديفيد مالان، واحد منهم هو الآن مايك سميث. ولكن لمجرد أن يكون واضحا، ولست بحاجة لاستخدام بريس، وبالفعل، وأنت تسير لكتابة التعليمات البرمجية قريبا لpset 7 بأتمتة عملية إضافة الصفوف، وحذف الصفوف، واستكمال الصفوف وما شابه ذلك، لذلك اسمحوا لي أن انتقل إلى علامة التبويب بدلا SQL هنا حتى ونوع في حدد * من الطلاب حيث البريد الإلكتروني = "malan@harvard.edu". وبعبارة أخرى لنفترض الآن لديك شكل HTML، وأنواع المستخدم في عنوان بريدهم الإلكتروني، من بين مجالات أخرى، والهدف من ذلك هو الآن في PHP على رمز النهاية الخلفية لننظر في الواقع عن التفاصيل الخاصة بهذا المستخدم الأخرى. ما هو اسمك الكامل؟ ما هو رقم هاتفك ID؟ هل يمكن كتابة استعلام SQL مثل هذا، حدد * من الطلاب حيث الكتروني = "malan@harvard.edu". وإذا كنت ثم انقر فوق انتقال، لاحظ أنه ينبغي لي أن والواقع أنني، نعود فقط صف واحد. تم حذف مايك من هذه المجموعة نتيجة لذلك، كما جمع الصفوف ويطلق عموما، لأنه ليس لديه عنوان البريد الإلكتروني نفسه لي. الآن، مرة أخرى، وهنا لpset 7 ستستخدم كأداة بريس الإدارية وأداة تربوية لمعرفة طريقك في جميع أنحاء العالم من SQL، ولكن في نهاية اليوم كنت على وشك أن أكتب هذه الاستعلامات داخل كود PHP الفعلية، وهكذا لا تنزعج تجول في Zamyla على وجه الخصوص حيث سوف تحصل على جولة من قانون التوزيع لهذه المجموعة المشكلة لقد أعطيت لنا حيث كنت ليس فقط جماليات لصفحة تسجيل الدخول ولقد ظل شعار لطيف مثير تقول CS50 المالية، ولكننا أيضا كنت مجموعة من الوظائف من شأنها أن تجعل حياتك أسهل قليلا. لقد كتبنا أيضا جزء من pset بالنسبة لك، الجزء الدخول منه على وجه الخصوص، لتعطيك إحساسا تصميم ممثل يستخدم وحدة تحكم في الواقع، لindex.php، المثال، login.php وما شابه ذلك، ومن ثم سترى pset أيضا دليل قوالب التي لديها كل وجهات النظر الخاصة بك، كل من علم الجمال. وهكذا سير العمل العام في pset 7 هو الى ان يحدث ذلك المستخدمون زيارة وحدة تحكم عن طريق URL في مستعرض. أن وحدة التحكم يحتوي على رمز PHP التي كتبت، وداخل التعليمات البرمجية PHP قد تكون متداخلة بعض خطوط SQL علامات اقتباس مزدوجة في ما بين ومررنا على وظيفة كتب الاستعلام دعا وسوف تساعدك على التحدث إلى قاعدة البيانات دون استخدام شيء من هذا القبيل أداة إدارية مثل بريس. عليك أن تكون قادرا على كتابة البيانات SQL في التعليمات البرمجية PHP ونعود مجموعة PHP من مجموعة النتائج، من الصفوف التي تطابق الواقع هذا الاستعلام. وبالمثل سوف تكون قادرة على القيام إدراج أو حذف أو تحديثات أو ما شابه ذلك، بناء الجملة التي تشبه إلى حد ما، وسترى من بعض المراجع على الإنترنت، من توزيع التعليمات البرمجية وpset من حزمة نفسها بالضبط كيفية التوجه نحو القيام بذلك. في نهاية المطاف نحن ندرك حقا مجرد خدش سطح SQL والخلية، ولكن قوة هو حقا أنها تحررك للتركيز على المشاكل التي تريد حلها، وحالات الاستخدام تريد تطبيق دون الحاجة إلى القلق تماما بقدر، على الأقل في وقت مبكر، حول مكان وكيفية تخزين والبحث في قاعدة البيانات الخاصة بك، وهذا هو حرفيا حيث الفيسبوك نفسه حصلت على بدايته باستخدام MySQL و بعد ذلك باستخدام أكثر من ملقمات الخلية ومن ثم أكثر من ملقمات الخلية قبل وقت طويل كان لديهم ثم لبدء حقا التفكير مليا في كيفية تخزين البيانات، وكيفية تخزين الأشياء أكثر كفاءة، على الرغم من ذلك سوف نتخذها لمنح حقيقة أن الفهارس والقيود الفريدة وهكذا دواليك العمل فقط هناك محادثة مثيرة جدا للاهتمام التي يمكن أن تؤدي في نهاية المطاف كل هذا، لذلك ندرك أننا مجرد خدش السطح يمكن في نهاية المطاف ما لك أو لمشاريعك تصبح قدرا كبيرا من البيانات الكبيرة. مع أن قال، دعونا تنتهي هنا، وسنرى في الأسبوع القادم. [CS50.TV]