Домашка:
Выполнить 3 задания. Каждая из задачек проходит определённый пройденный материал. Тот, кто решит все 3 - будет знать все 3 темы хорошо.
Важное замечание, не используйте структуру из 15-ого урока в этой домашке, она вам не нужна, а только создаст дополнительные проблемы. Как склеить структуру из 15 и код из 16-ого будет рассказано в 17-ом уроке!
1. Форму для авторизации и выход
Делается достаточно просто, простая форма на ввод логина, пароли и email. Далее проверяем сначало на то, что заполнили поля, и email заполнили верно! После авторизации - запоминать ключ в куках. Выводить на экране. Для email: filter_var. Последнее поле меню: ВЫХОД!
2. Битва алкоголиков:
Мини-игра, цель которой показать, что алкоголизм - это плохо. Мы создаём страничку game.php под игру. Создаются 2 персонажа, у обоих по 10хп (2 сессионных переменных), создаётся форма, где пользователь вводит число от 1 до 3 и отправляет запрос на сервер. На сервере запустить rand(1,3), и если значение человека с значением случайным совпадает, то снимаются ХП с персонажа человека (клиента), если не совпадают - с серверного персонажа. Отнимать надо от 1 до 4хп, случайным образом). То есть вероятность 33%, что отнимутся у клиента, и 66%, что у серверного персонажа.
В момент, когда у одного из персонажей ХП становится 0 и ниже, - перебрасывать на другую страницу при помощи переадресации (header) на страницу gameover.php , и выводить текст, победил ли игрок, или система.
Цели игры: разобраться в сессиях и переадресациях. Попробовать на практике изученную самостоятельно функцию rand();
3. Файловый менеджер
Простая файловая система на подобии norton-comander, far, FileZilla с упрощенной версией.
Её путь будет: program.php .
Необходимо:
1) вывести каталог папок и файлов для данной директории, используя scandir('.'). Перед названием выводить иконку папки, или иконку файла соответственно. Проверку делать на: is_dir() - else.
2) Папки сделать кликабельными, через ссылку передавать второй аргумент - путь к файлу по примеру: <a href="/program.php&link=echo (isset($link) ? $link.'/'.$v :$v);">имя папки</a> . Данный путь будет содержаться в массиве после использования функции scandir.
3) По переходу по ссылке будет передаваться $_GET['link'], который необходимо будет подставить в функцию scandir для того, чтобы отобразить файлы и папки внутри конкретной директории.
4) Таким образом мы сможем воссоздать файловую систему и передвигаться по директориям и поддиректориям.
Цели программы: изучить новые функции + цикл с массивом и множества аргументов для $_GET.
Под каждым уроком есть 10 тестов, которые помогут Вам закрепить пройденный материал.
Один из тестов будет развивать Вашу логику и интеллект!
Чтобы получить доступ к тестам -
авторизируйтесь!
{"137":{"id":"137","lesson":"16","type":"radio","title":"","text":"Какие данные не передаются между страницами?","answer_type":"Int","answer":"2","variables":{"0":"$_SESSION","1":"$_COOKIE","2":"$var","3":"Данные хранить в файле"},"group":"lvl1","course":"2"},"138":{"id":"138","lesson":"16","type":"input","title":"","text":"Какую цифру в error_reporting мы указываем, когда мы создали сайт и загрузили его на хостинг, то есть теперь на него заходят посетители?","answer_type":"Full","answer":"0","variables":{"0":""},"group":"lvl1","course":"2"},"139":{"id":"139","lesson":"16","type":"radio","title":"","text":"Какое из следующих утверждений не верно:","answer_type":"Int","answer":"3","variables":{"0":"Куки хранятся на компьютере у клиента, где их можно изменять как угодно","1":"Сессия хранится на сервере, куда доступа у клиента нет","2":"Куки легко изменить пользователю, достаточно установить плагин в браузере","3":"Сессию можно так же легко изменить клиенту, снова же через плагин в браузере"},"group":"lvl1","course":"2"},"140":{"id":"140","lesson":"16","type":"input","title":"","text":"Какой функцией можно создавать, редактировать и удалять куки?","answer_type":"Function","answer":"setcookie","variables":{"0":""},"group":"lvl1","course":"2"},"141":{"id":"141","lesson":"16","type":"radio","title":"","text":"Как удаляются куки?","answer_type":"Int","answer":"3","variables":{"0":"функцией deletecookie","1":"Функцией delcookie","2":"Только вручную через браузер клиент может удалить куки","3":"Функцией setcookie указывая прошлое время жизни, например time()-3600"},"group":"lvl1","course":"2"},"142":{"id":"142","lesson":"16","type":"yesno","title":"","text":"Верно ли утверждение, что несмотря на то, что сессия создана на уровне сервера и недоступна клиенту, у клиента создаётся дополнительно куки с идентификатором этой самой сессии для привязки данного пользователя с данной сессией?","answer_type":"Int","answer":"0","variables":{"0":""},"group":"lvl1","course":"2"},"143":{"id":"143","lesson":"16","type":"yesno","title":"","text":"Удаляя куки надо ли указывать определённое правильное содержание для значения куки? Ответ нет будет означать, что значением куки мы можем оставлять пустым \u0022\u0022, ведь куки итак удаляется.","answer_type":"Int","answer":"1","variables":{"0":""},"group":"lvl1","course":"2"},"144":{"id":"144","lesson":"16","type":"yesno","title":"","text":"После создания кук мы дублируем содержание куки в локальную глобальную переменную: $_COOKIE или, что будет более предпочтительней, делаем переадресацию при помощи header(\u0027Location: URL\u0027); exit; \r\nВсе верно?","answer_type":"Int","answer":"0","variables":{"0":""},"group":"lvl1","course":"2"},"145":{"id":"145","lesson":"16","type":"input","title":"","text":"Куки с ключом \u0027a\u0027 и значением \u0027xxx\u0027 было создано на одной из страниц ранее. Что выведется следующим кодом:\r\n\u003Cpre class=\u0022code-code\u0022\u003E\u003Ccode\u003E\u0026lt;?php\r\nsetcookie(\u0026#039;a\u0026#039;,\u0026#039;yyy\u0026#039;);\r\necho $_COOKIE[\u0026#039;a\u0026#039;];\u003C\/code\u003E\u003C\/pre\u003E","answer_type":"Full","answer":"xxx","variables":{"0":""},"group":"lvl1","course":"2"},"146":{"id":"146","lesson":"16","type":"input","title":"","text":"Напишите полностью код РЕДАКТИРОВАНИЯ куки с указанием ключа - \u0027key\u0027, значение меняем с \u0027xxx\u0027 на \u0027yyy\u0027 (старое было xxx, надо указать новое yyy), время жизни ставим +60 секунд от текущей даты. Пишите полностью строку кода без пробелов:","answer_type":"Full","answer":"setcookie(\u0027key\u0027,\u0027yyy\u0027,time()+60,\u0027\/\u0027);","variables":{"0":""},"group":"lvl1","course":"2"}}
{"0":"137","1":"138","2":"139","3":"140","4":"141","5":"142","6":"143","7":"144","8":"145","9":"146"}