[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. Если вы делаете