[Powered by Google Translate] [PHP الدورات] [تومي MacWilliam، جامعة هارفارد] [هذا CS50.] [CS50.TV] دورات في PHP يمكن استخدامها لتنفيذ وظيفة، مثل مستخدم تسجيل الدخول، في تطبيق الويب الخاص بك. دورات PHP تسمح لك لربط المعلومات مع جلسة عمل المستخدم تصفح كامل بدلا من مجرد صفحة واحدة. وهذا يعني كما يقوم المستخدم بزيارة صفحات PHP المختلفة التي تشكل موقع الويب الخاص بك، وسوف أي معلومات في الدورة تستمر. وهذا يعني أن البيانات المخزنة في الدورة بمقدار صفحة واحدة في وقت لاحق يمكن الوصول إليها عن طريق صفحة أخرى. تخزين المعلومات في جلسة أمر سهل، ونحن نفعل ذلك من خلال علامة الدولار، تؤكد، متغير الدورة رأس المال. علامة الدولار، تؤكد، الدورة تماما مثل علامة الدولار، تؤكد، والحصول على وعلامة الدولار، تؤكد، ما بعد هو مجموعة النقابي تتألف من أزواج قيمة المفتاح. حتى نتمكن من استخدام علامة الدولار جملة مثل، تؤكد، الدورة، قوس، واقتبس، فو، واقتبس، وقوس، يساوي، واقتبس، بار، واقتبس- لتخزين "بار" القيمة في مفتاح "فو". ومع ذلك، قبل أن نتمكن من كتابة أو قراءة مجموعة من الدورة، سنحتاج إلى استدعاء دالة خاصة الدورة، تؤكد، بدء، () - وهذا سوف تهيئة الدورة. لذلك دعونا نلقي نظرة على مثال على ذلك. الصفحة الأولى لدينا، hello.php، يستخدم الدورة لإخراج بعض البيانات للمستخدم. نتذكر، ونحن سوف تحتاج إلى استخدام session_start قبل أن نتمكن من الوصول إلى أي بيانات الدورة. الآن نحن نستخدم isset PHP لتحديد ما إذا كان يوجد مفتاح في مجموعة النقابي $ _SESSION. في حالة وجود هذا المفتاح، وهذا يعني وتسجيل المستخدم في، لذلك سنقوم بعرض اسم المستخدم. إذا لم يتم تعيين هذا المفتاح، وهذا يعني لم تسجيل دخول المستخدم في ذلك، لذلك سنقوم بعرض وصلة لlogin.php. لذلك دعونا نلقي نظرة على login.php. إلى هنا، لدينا نموذج HTML واحد مع مدخل واحد. سمة الإجراء للنموذج هو $ _SERVER ['PHP_SELF']، وهذا يعني ببساطة أننا نريد النموذج الذي سيقدم إلى الملف الحالي، الذي، في هذه الحالة، هو login.php. لذلك دعونا نعود إلى الجزء العلوي من هذا الملف. إذا قدم المستخدم النموذج، ثم $ _POST ['اسم'] يجب تعيين. لمزيد من المعلومات حول أشكال HTML وآخر، تحقق من شريط الفيديو الشبكة العالمية للتنمية PHP. في حالة أن المستخدم لم تقدم النموذج، نحن نرغب في كتابة القيمة التي كتبتها في في الدورة. الآن يمكننا إعادة توجيه المستخدم إلى hello.php. لأننا قد تخزين إدخال المستخدم في الدورة، hello.php سوف تكون قادرة على الوصول إلى القيمة التي تم تعيينها في login.php. لذلك دعونا التحقق من ذلك في مستعرض الويب. أولا، سنقوم انتقل إلى http://localhost/hello.php. يمكننا أن نرى هنا أننا لم تقم بتسجيل الدخول بعد، لذلك دعونا اضغط على الرابط تسجيل الدخول، والتي سوف إعادة توجيه لنا لlogin.php. حسنا، أنا سوف اكتب في اسمي، والتي سوف ثم خزنها في الدورة. عظيم! الآن يمكننا أن نرى من المدخلات بلدي login.php على hello.php عبر الدورة. لذا، ماذا عن تسجيل المستخدم بها؟ كذلك، من أجل تسجيل المستخدم في، ونحن ببساطة تخزين قيمة في اسم الدورة. وذلك لتسجيل المستخدم بها، ونحن ببساطة الحاجة لإزالة هذا المفتاح اسم من مجموعة الدورة. لذلك دعونا نلقي نظرة على هذا الملف الأخير، logout.php. مرة أخرى، ونحن سوف تحتاج إلى استدعاء session_start () قبل أن نتمكن من القيام بأي شيء الدورة ذات الصلة. الآن يمكننا ببساطة استدعاء session_destroy ()، والتي سوف تأخذ الرعاية من التخلص من كافة البيانات في الدورة ومن ثم إعادة توجيه المستخدم إلى hello.php. لذلك إذا كنت أنقر على الرابط خروج، يمكننا أن نرى أن الخادم قد نسي من أنا، وأنا لم يعد بتسجيل الدخول. وذلك ما يحدث هنا تحت غطاء محرك السيارة؟ من أجل الحصول على سلوك رأينا للتو، يحتاج الخادم لدينا للقيام الأشياء 2. أولا، يحتاج الملقم لتخزين البيانات في الدورة بطريقة أو بأخرى. ملفات PHP المختلفة التي تشمل موقع على شبكة الانترنت كما يتم تنفيذ دعوات منفصلة للمترجم PHP لا يمكن مشاركة المتغير المحلي بحيث بينهما. بدلا من ذلك، يحتاج الملقم لتخزين البيانات دورتنا في بعض المكان الذي متعددة. فب الملفات يمكن الوصول إليها. ثانيا، يحتاج الملقم لربط البيانات مع الدورة فقط جلسة التصفح الخاص بي. عندما كنت تسجيل الدخول إلى الفيسبوك، ربما يكون هناك الملايين من الناس الآخرين أيضا في الفيسبوك تسجيل في نفس الوقت. ولكن الخادم يحتاج بعض طريقة ربط البيانات الخاصة بي مع الدورة الحالية بلدي وبيانات شخص آخر مع جلسة عمل أخرى. لحسن الحظ، يعتقد واضعو PHP عن هذا كله بالنسبة لنا، لذلك نحن لسنا في حاجة لتنفيذ أي من هذه أنفسنا. ولكن دعونا نلقي نظرة على ما يفعله PHP بشكل افتراضي. عندما أقوم بزيارة صفحة PHP تحتوي على session_start للمرة الأولى، سوف PHP توليد قيمة عشوائية كبيرة. حتى يتم استدعاء أو session_destroy أنا لا زيارة أي صفحات PHP على هذا الموقع لفترة من الوقت، سوف تترافق أن قيمة عشوائية وربما فريدة من نوعها معي. بهذه الطريقة كان الملقم بعض الطريق لتحديد جلسة التصفح الخاص بي بدلا من شخص آخر. يمكننا أن نلقي نظرة على معرف جلسة العمل الحالية باستخدام وظيفة PHP، session_ID. هنا نحن ببساطة إخراج قيمة معرف دورتنا. حتى إذا كنا الدخول مرة أخرى إلى المثال التطبيق على شبكة الإنترنت، والآن انتقل إلى sessid.php، سنرى هذه السلسلة الطويلة من الشخصيات، وهذا هو المعرف الحالي للجلسة بلدي، وهذه هي الطريقة التي كان الملقم تتبع من أنا. حسنا، ولكن لدينا حل سوى نصف المشكلة. بالتأكيد، خادم لديها الآن بعض الطريق من تحديد لي، ولكن عندما أقوم بزيارة صفحة أخرى، يحتاج الملقم إلى إعادة استخدام هذا المعرف نفس بدلا من توليد واحدة جديدة. تذكر، إذا كنت تعريف متغير محلي في foo.php ثم قم بزيارة bar.php، bar.php لا يوجد لديه وسيلة لمعرفة ما حدث في foo.php. لذلك يتطلب تنفيذ الدورة فب الافتراضية التي المتصفح تذكير الخادم الدورة التي ID للاستخدام. ويتم تنفيذ ذلك في شكل الكعكة. الكوكي، بالإضافة إلى كونه وجبة خفيفة لذيذ هو مجرد ملف نصي صغير على جهاز الكمبيوتر الخاص بك أن ملقم يمكن الكتابة إلى عبر متصفح الويب. وذلك بعد يولد PHP بلدي فريد معرف جلسة العمل عبر session_start، انها سوف تخبر متصفح الويب لتخزين هذا المعرف في ملف نصي المحلية، أو ارتباط. ثم سوف تشمل متصفح الويب هذا المعرف في كل طلب أنه يجعل إلى الملقم. ذلك حقا، وخادم الويب لا تذكر من أنا. بدلا من ذلك، متصفح الويب ببساطة تذكر المعرف الفريد التي تم إنشاؤها بواسطة PHP ومن ثم تذكير باستمرار الخادم ما هو هذا المعرف. يتم تخزين بهذه الطريقة، المعلومات مثل اسم المستخدم الخاص بي على الملقم لا متصفح الويب الخاص بي. المتصفح ببساطة يخبر الملقم حيث PHP تخزين تلك المعلومات بحيث يمكن استرجاعها PHP. بحيث يطرح السؤال، حيث يتم تخزين PHP فعلا هذه المعلومات؟ افتراضيا، سوف PHP تخزين بيانات جلسة العمل الخاصة بك في ملف داخل / تمة، أو المجلد 'مؤقت'. واسم هذا الملف يتضمن معرف جلسة العمل بحيث يمكن تحديد PHP أي ملف على القراءة والكتابة من خلال فقط معرف جلسة العمل. حسنا. لذلك دعونا فتح علامة التبويب شبكة الاتصال في المصحح كروم عبر أيقونة وجع في أعلى اليمين. الآن دعونا التوجه إلى hello.php مرة أخرى. دعونا النقر على طلب HTTP إلى hello.php ثم انقر على الرؤوس. هنا يمكننا أن نرى أن رأس الكعكة يحتوي على مفتاح يسمى PHPSESSID، أو دورة PHP ID-مع قيمة نفس سلسلة طويلة رأينا عندما زرنا sessid.php. هذا هو بالضبط كيف المتصفح هو تذكير الخادم ما الدورة ID ينبغي استخدامها. انها بما في رأس HTTP. حسنا. دعونا رئيس مرة أخرى إلى المحطة. دعونا انتقل إلى / تمة، حيث يتم تخزين المعلومات PHP دورة افتراضيا. المؤكد، داخل هذا المجلد المؤقت، وهنا الملف الذي يحتوي على بالضبط نفس معرف جلسة العمل. إذا كان لنا أن تفتح هذا الملف، يمكننا أن نرى كيف PHP يمثل الدورة بلدي على القرص. هنا السلسلة "تومي" يتم تخزينها لمفتاح 'اسم' وهذا بالضبط ما كنا نتوقع. وهذا هو لمحة عامة عن الدورات في PHP. ما رأيناه كان مجرد فقط تطبيق الافتراضي الدورات. في الواقع، العديد من المواقع تغيير هذا السلوك الافتراضي لتخزين جلسات PHP أكثر كفاءة في مصلحة تحسين الأداء. اسمي تومي، وهذا هو CS50. [CS50.TV]