Вход / Регистрация
Вход
Задачи по PHP, MySQL, JavaScript
Ответов нет, их и не должно быть. Каждый делает их исключительно для себя и умение проверить собственный код на качество будет огромным плюсом.
Часть задач были в домашке, кое-что раскрывается в трюках, а всё остальное - собственная тренировка перед профессиональным программированием. Желаю удачи :)
ЗАДАЧА 1: ФОРМЫ ДЛЯ АВТОРИЗАЦИИ И ВЫХОДА
php уровень 1: Необходимо сделать форму для авторизации на сайте, для этого делаются 3 обязательных поля: login, password, email. Если верно ввели - записываем в куки специальный ключ, при наличии которого выводим человеку кнопку "выйти из сайта". В момент выхода - удалить созданную куку..
ЗАДАЧА 2: РАЗДЕЛ УПРАВЛЕНИЯ КУКАМИ, СЕССИЯМИ И Т.Д.
php уровень 1: Создаём скрытую страницу "module=control" , в ней выводим весь массив куки и сессии. Добавляем 2 кнопки: "очистить куки" и "очистить сессию", которая должна выполнять указанные действия по нажатию. Кроме главного подраздела по управлению куки и сессией добавляем ещё 2: страницу с выводом phpinfo и страницу с выводом $_SERVER. Данный раздел защищаем паролем. Можно воспользоваться отдельной формой для входа, можно дать доступ админу сайта..
ЗАДАЧА 3: ИГРА НА СЕССИЯХ (БИТВА АЛКОГОЛИКОВ)
php уровень 1: Мини-игра, цель которой показать, что алкоголизм - это плохо. Мы создаём страничку /index.php?page=game1 под игру. Создаются 2 персонажа, у обоих по 10хп (2 сессионных переменных), создаётся форма, где пользователь вводит число от 1 до 3 и отправляет запрос на сервер. На сервере запустить rand(1,3), и если значение человека с значением случайным совпадает, то снимаются ХП с персонажа человека (клиента), если не совпадают - с серверного персонажа. Отнимать надо от 1 до 4хп, случайным образом). То есть вероятность 33%, что отнимутся у клиента, и 66%, что у серверного персонажа.
В момент, когда у одного из персонажей ХП становится 0 и ниже, - перебрасывать на другую страницу при помощи переадресации (header) на страницу index.php?module=games&page=game1over , и выводить текст, победил ли игрок, или система. Не забываем, что для удобства пользователя необходимо выводить всю известную информацию, то есть какой урон был нанесён, кто кому нанёс, сколько сейчас хп осталось у каждого игрока. Так же возможность начать игру заново. Желательно для корректировки системы использовать переменные-свойства, то есть 10hp - это $basehp , то есть изменив эту переменную скрипт будет иным.
ЗАДАЧА 4: ФАЙЛОВЫЙ МЕНЕДЖЕР
php уровень 2: Создать чистый файловый менеджер на сервере с использованием PHP + JS. Менеджер должен работать без перезагрузки страницы и должен уметь: выводить файлы и каталоги на странице, указывать нынешний путь посетителя, передвигаться по дереву выше и ниже благодаря двойному нажатию на папку, или "..", если надо вернуться на каталог назад. По двойному нажатию на файлы открывать их для редактирования в правом окне. В процессе редактирования можно исправить код и нажать сохранить, тем самым заменить старый файл на новый. Если у нас открывается картинка, то должна быть возможность изменить размеры картинки или добавить WaterMark на картинку. Кроме этого менеджер должен уметь копировать файлы из одной папки в другую, удалять файлы, создавать копии файлов и переименовывать имеющиеся файлы..
ЗАДАЧА 5: СОРТИРОВКА МНОГОМЕРНОГО МАССИВА
php уровень 1: Имеется многомерный массив, необходимо его отсортировать. Для первого уровня достаточно отсортировать по полю `age`, для продвинутого пользователя - по двум полям, при этом должна быть возможность сортировать в обратном порядке, то есть для первого уровня: ORDER BY `age` ASC, и для высокого уровня: ORDER BY `age` ASC,`gender` DESC. Сам массив: [code]$array = array(
'a1' => array('id'=>'1', 'age'=>'16', 'gender'=>'m', 'login'=>'Вася'),
'a2' => array('id'=>'2', 'age'=>'18', 'gender'=>'m', 'login'=>'Петя'),
'a3' => array('id'=>'3', 'age'=>'20', 'gender'=>'g', 'login'=>'Катя'),
'a4' => array('id'=>'4', 'age'=>'20', 'gender'=>'m', 'login'=>'Стас'),
'a5' => array('id'=>'5', 'age'=>'12', 'gender'=>'g', 'login'=>'Маша'),
'a6' => array('id'=>'6', 'age'=>'44', 'gender'=>'g', 'login'=>'Галя'),
'a7' => array('id'=>'7', 'age'=>'45', 'gender'=>'m', 'login'=>'Макс'),
'a8' => array('id'=>'8', 'age'=>'20', 'gender'=>'m', 'login'=>'Илья'),
'a9' => array('id'=>'9', 'age'=>'20', 'gender'=>'g', 'login'=>'Даша'),
);[/code] Верный порядок: Для первого уровня: Маша, Вася, Петя, (Катя,Стас,Илья,Даша), Галя, Макс. Для среднего уровня: Маша, Вася, Петя, (Стас,Илья),(Катя,Даша),Галя,Макс. Обратите внимание, что в скобки взял те имена, которые местами могут не совпадать то той причине, что поля для сортировки в любом случае у них одинаковые..
ЗАДАЧА 6: АБСОЛЮТНО ВЕРНАЯ ОБРАБОТКА ДАННЫХ
php уровень 1: Создать безопасную форму регистрации пользователя и вывод всех зарегистрированных пользователей. Не должно быть SQL-inj или XSS-inj. Перечень тестовых логинов без кавычек: "<b>inpost</b>","O'Henr''y", "Vo"va", "Правда 1%", "ОбычныйUserId#1","x&*5!@#$%^*&?"," \ \ YE / / ","%%%%","\\","////".
ЗАДАЧА 7: ПОИСК ПУТИ
php уровень 2: Создаем массив координат 10х10, для этого подойдет любой многомерный массив по виду $array[y][x] = status , где status - доступность ячейки (если 1 - значит существует преграда и её необходимо обойти, 0 - можно проходить). Необходимо составить путь, как добраться из точки А в точку Б обходя преграды. Точки А и Б задаются произвольные: А ($a = array("x"=>2,"y"=>3);), Б ($b = array("x"=>9,"y"=>1);). Важное примечание, необходимо генерировать поле (10х10 или иное) при первом запуске скрипта, после массив сохраняется в БД или в ФАЙЛ для дальнейшей работы с ним. Цель - найти самый короткий путь. Возможно ли двигаться на искосок - по желанию..
ЗАДАЧА 8: ДАТА БЛИЖАЙШЕЙ ДОСТАВКИ
php уровень 1: Необходимо вывести дату ближайшей доставки в формате: "30 ноября".
Алгоритм следующий: если сегодня времени меньше, чем 20-00, то доставка завтра, если более 20-00, то послезавтра! Если день доставки попадает на праздничный день, то доставка переносится на следующий день после праздника.
Праздники записываются в массиве в формате: "месяц-день": '01-01' - 1 января..
ЗАДАЧА 9: НЕ ЛЮБЛЮ ДЛИННЫЕ СЛОВА
php уровень 1: Дан длинный текст, в нём встречаются слова длиннее 7 символов! Если слово длиннее 7 символов, то необходимо: оставить первые 6 символа и добавить звёздочку. Остальные символы вырезаются. Шаблон:
"я купил бронетранспортер вчера" . Результат: "я купил бронет* вчера"..
ЗАДАЧА 10: БЫСТРОЕ РИСОВАНИЕ
php уровень 2: За 20 минут создать 3 кнопки с именами: круг, квадрат, треугольник. По клику на кнопку без перезагрузки страницы прям тут (над кнопками) выводить нужную картинку: зеленый круг, желтый квадрат, синий треугольник. При этом следующая картинка должна сменяться предыдущий. То есть если мы нажали на круг - появился круг. Если нажали на квадрат - пропадает круг, и на его месте появляется квадрат!.
ЗАДАЧА 11: СКОЛЬКО РАЗ ПОКАЗАЛИ КАРТИНКУ
php уровень 2: Обычно используется в двух вариантах, сколько раз была показана картинка или размещается пиксель, который фиксирует показ конкретной картинки с определённым идентификатором. Необходимо сделать: выставить на странице
<img src="/banner.php">
, где banner.php - наш скрипт, который ведёт подсчёт показов и в конце выдаёт картинку.ЗАДАЧА 12: ПЕРЕХОДЫ ПО ССЫЛКАМ
php уровень 2: Выставить ссылку на другой сайт. Считать, сколько раз была нажата ссылка. Задача предлагает показать оба варианта: чистый PHP, и, отдельно, JS + PHP.
ЗАДАЧА 13: ВЫВЕСТИ ПОПУЛЯРНЫХ АКТЕРОВ
mysql уровень 1: Составить связку многие ко многим, где хранить будем фильмы и их актеров. Вывести только тех актеров, у которых фильмов более двух..
ЗАДАЧА 14: БЛОКИРОВАТЬ IP ОПРЕДЕЛЁННЫХ СТРАН
php уровень 1: Есть диапазон IP: 49.05.0.0/20 , надо сравнить имеющийся ip: 49.05.100.152 с данным диапазоном, результат: true\false.
Если усложнить, то имеем сразу несколько диапазонов, которые вот в таком виде лежат в файле india.txt:
49.12.0.0/14
49.32.0.0/12
49.50.64.0/18
49.128.108.0/22
49.128.160.0/20
49.136.0.0/14
..
ЗАДАЧА 15: ПОПУЛЯРНАЯ ЗАДАЧА ДЛЯ ТРУДОУСТРОЙСТВА
php уровень 2.5: Есть строка: {Пожалуйста,|Просто|Если сможете,} сделайте так, чтобы это {удивительное|крутое|простое|важное|бесполезное} тестовое предложение {изменялось {быстро|мгновенно|оперативно|правильно} случайным образом|менялось каждый раз}. Необходимо раскрыть фигурные скобки и получить строку. | значит, что допустимо одно из указанных значений, то есть {крутое|простое} значит, что выведется ТОЛЬКО крутое или ТОЛЬКО простое. Вложенные фигурные скобки так же должны раскрываться, значит: {простое|очень {сложное|удачное}} в итоге получим на выходе один из трёх вариантов: "простое", "очень сложное", "очень удачное". Важно, что вложенность может быть бесконечной. Сюда же добавлю, что есть вторая интерпретация этой задачи, необходимо составить массив со всеми возможными вариантами строки, то есть не случайное раскрытие, а все допустимые варианты..
ЗАДАЧА 16: ДВА ОБНОВЛЕНИЯ В ОДНОМ
mysql уровень 2: Задача одним запросом изменить 2 записи из:
ID=1,ORDER=1 и ID=2,ORDER=2
в
ID=1,ORDER=2 и ID=2,ORDER=1
, ORDER - это порядок расположения. По условию известно у нас лишь 1 запись, ID=1, ORDER=1, надо поменять с ближайшей записью местами ORDER.
При этом не обязательно, что вторая запись будет иметь ORDER=2 или ID=2, там может быть ID=5,ORDER=17..
ЗАДАЧА 17: ПОДСВЕТКА КЛЮЧЕВЫХ СЛОВ
php уровень 2.5: Есть длинный текст и есть форма поиска по этому тексту. При вводе слова в форму поиска необходимо найти все упоминания этого слова в тексте и выделить (подсветить) цветом, жирным или другим настраивающим способом. В случае, если указываются 2 слова, то каждое должно искаться индивидуально, если словосочетание указывается в кавычках,то ищется как единое словосочетание. Помимо грубого поиска так же должно находить слова с разными окончаниями: пиво, пива, пивом..
ЗАДАЧА 18: АНТИ-БОТ
php уровень 2: Создать 2 собственных капчи, первая - текстовая, вторая - графическая..
ЗАДАЧА 19: ИГРА В ГОРОДА
php+mysql уровень 1: Создать базу городов. Далее участвуют человек и компьютер. Необходимо назвать город, дальше получаем ответ от компьютера с вероятностью в 97.4% название города, чьё название начинается на последнюю букву названного игроком города. Далее ситуация повторяется, игрок должен назвать город у которого название начинается с последней буквы названным опонентом города. Имена не могут повторяться..
ЗАДАЧА 20: НЕ ВЫВОДИТЬ ДУБЛИ
php уровень 1: У нас есть массив $array = array(1,1,1,2,2,2,2,3), необходимо вывести 1,2,3, то есть вывести без дублей при помощи лишь одного цикла foreach без использования функций группировки элементов массива и не нарушая данный массив..