[Powered by Google Translate] [Тиждень 9] [David J. Малан - Гарвардський університет] [Це CS50. - CS50.TV] Добре. Ласкаво просимо назад. Це CS50, і це початок тижня 9. Сьогодні ми зосереджені, зокрема, на дизайн, більше не в контексті C але в контексті PHP і трохи SQL і трохи JavaScript, особливо до кінця і PSET 7, а також остаточний проект. У самому справі, якщо ви знаходитеся в даний момент ваш остаточний проект , Де імовірно на годину або близько того назад ви по крайней мере, почали давати деякі думки на ваш остаточний проект, і ви думаєте ви хотіли б співпрацювати з 1 або 2 однокласниками, якщо у вас виникли проблеми з підключенням до зазначеної однокласників, не соромтеся заповнити форму на cs50.net/partners/form. Він просто запитує, хто ти, який проект ви думаєте про те, де ви живете тільки з технічних причин. І потім, якщо ви хочете, щоб тримати очі на протязі наступного тижня або близько того таблицю URL там, Ви можете побачити, тільки для читання версію Google Doc , В якій ми збираємо цю інформацію. Так що якщо ви хочете працювати з кимось, всіма засобами, не соромтеся звернутися до людей за допомогою цього механізму. Але більшість людей працюють соло. Це абсолютно нормально. Тому не вважаю, що це в будь-якому випадку обов'язково. У п'ятницю він був тільки я і ще кілька команді тут, порожньому театрі, по більшій частині. Там було 3 туристи сидять там, нагорі, так, щоб було трохи ніяково. Те, що ми говорили тільки про те, баз даних і ми говорили про PSET 7 небагато. І якщо ви випадково не спіймати, що на відео прямо зараз, це нормально. Я постараюся, щоб визначити будь-які умови, які ми інакше сприймаємо як належне на основі лекції в п'ятницю. Але сьогодні ми будемо намагатися, щоб ви в точку не просто можливість зробити щось подібне PSET 7 але насправді розуміючи, що відбувається під капотом, Особливо деякі абстракції, які ми ставимо на місце в файлі functions.php , Щоб зробити ваше життя трохи легше, але так, що ви в кінцевому підсумку зрозуміти так що, коли навчання колеса відірвалися через кілька тижнів ви все ще можете вижити У реальному світі і зробити цей матеріал без CS50 рамки під вами. Це $ _SESSION, для тих з вас, хто знайомий або хто вже зловили відео в п'ятницю, що ж СЕСІЇ давайте зробимо У PHP на основі веб-додатків? Це суперглобальні змінної, яка означає, що він схожий по духу GET і POST і деякі інші, але що це за справа корисно? Що таке СЕСІЇ використовується? Так. [Студент] входу в обліковий запис Пробачте? [Студент] входу в обліковий запис входу в обліковий запис насправді. У PSET 7 ми використовуємо цю сесію суперглобальні для полегшення входу в обліковий запис І що приємно про це суперглобальні тому, що це асоціативний масив. Асоціативний масив, нагадаємо, є тільки масив, але чиї показники не повинні бути номери як 012. Вони можуть бути числами або вони можуть бути навіть рядків. І тому, якщо ви пірнули в PSET 7 ще, ви можете пригадати, що ми зберігаємо ключ, який називається ID Всередині це асоціативний масив, значення якого є щось подібне до 123 - що в даний час увійшли в ID користувача є. Мотивацією для цього є те, що навіть після того, як користувач відвідав локальний або мій сайт в цілому, а потім вони увійшли в систему, навіть якщо вони не клацають по посиланню або повернутися на свій сайт за 5 хвилин або навіть годину або навіть день, але вони залишають їх відкритими вікна браузера, через цей суперглобальні я можу пам'ятати, що вони зайшли Іншими словами, це дозволяє мені зберігати кілька довгострокових що я хочу про користувача. І ви можете думати, це дійсно як втілення кошику. Такі місця, як Amazon, очевидно, дозволить вам покласти речі в кошик, але HTTP, протокол, що повноваження в Інтернеті, є особою без громадянства У тому сенсі, що, коли ви відвідуєте веб-сайт, здебільшого у вас немає деякої постійної підключення до мережі між браузером і сервером. Як тільки ви завантажили HTML і зображення у форматі JPEG і GIF-файли та все таке, з'єднання йде, і ви просто мати копію HTML і ще багато чого з сервера. Але якщо сервер хоче пригадати щось про вас, навантаження на сервер насправді записати цю інформацію. І тому ви програміст, які мають контроль над сервером можна поставити самий, що ви хочете всередині цього суперглобальні асоціативний масив і вона буде там наступного разу, коли користувач повертається, будь то хвилин або навіть днів, якщо вони не закривають вікна браузера, в який момент СЕСІЇ зникає. Таким чином, це ефемерне зберігання, це непостійне, і це означало, щоб піти Як тільки користувач закриває свій браузер - не тільки цій вкладці, часто весь браузер, тим самим ефективно реєстрації користувачів з. Так як ця річ насправді реалізовані? Давайте кинемо швидкий погляд на простому прикладі ми розглянули в п'ятницю. Для тих, хто незнайомий, це було так просто, як це. Це веб-сторінки, єдина мета в житті, щоб сказати мені, Скільки разів я відвідав цю сторінку. Це перший раз в понеділок, що я відвідав його, так він говорить 0 раз. Але якщо я почну перезавантаження сторінки, вона говорить 1 раз, 2, 3, 4, 5, і це в кінцевому підсумку просто тримати на рахунку вгору, вгору, вгору, вгору, вгору кожен раз я насправді кнопки Оновити на ньому. Так як же це працює? Дозвольте мені зайти всередину цього файлу під назвою counter.php. У верхній частині воно все синім коментарів, але найцікавіше тут. У рядку 13 ми називаємо цю функцію session_start, і що буквально все, що вам потрібно зробити, якщо ви хочете мати доступ цього спеціального суперглобальні називається $ _SESSION. Це робить все це можливим, і ми побачимо через мить, як таке взагалі можливо. У рядку 16 повідомлення, що я роблю. Якщо ключ, званий лічильником - іншими словами, значення індексу - "лічильник" існує всередині цього масиву називають сесії, то, що я роблю з нею в рядку нижче? Що таке рядок 18 робиш? [Нерозбірливо відповідь студента] Що це? [Студент] Збереження значення. Добре. Це зберігання значення, яке знаходиться в СЕСІЇ зараз в нових локальних тимчасових змінних, $ Лічильника в нижньому регістрі. Зверніть увагу, що PHP вже трохи лінивий тут. Зверніть увагу, ми не маємо ніякої згадки про Int або з плаваючою точкою або рядок або щось в цьому роді тому що PHP типізованих слабо, в якому ви не повинні вказувати тип змінної, і в цьому випадку тут я навіть не оголошені ще. Я оголосивши його всередині цих фігурні дужки, і на відміну від C, це насправді добре. Незалежно від того, наскільки глибоко вкладених декларації змінної в PHP - Усередині фігурних дужок, усередині фігурною дужкою і т.п. - вона буде на той момент часу існують на частину програми, на краще або на гірше. Так що відразу стає глобальним, як тільки ви визначили його, як ми робимо тут. В іншому випадку, якщо я не знаходжу в цьому немає нічого в СЕСІЇ суперглобальні, Я мабуть ініціалізації цієї змінної лічильника в 0, таким чином тільки за умови, що користувач ніколи не був тут раніше. І тоді це, звичайно, збільшуючи лічильник як? Я оновлюю значення, що знаходиться всередині цього асоціативний масив , Встановивши його рівним незалежно від лічильника в даний час + 1. Якщо я прокрутіть вниз тут, щоб HTML-сторінки, це насправді досить проста. Все, що я в тілі цієї сторінки: "Ви відвідали цей сайт, щоб і те-то часи". І це конструкції PHP. Якщо ви робите