Добрый вечер! Я совершенно не разбираюсь в PHP, но мне задали задачу по информатике, и я не в силах ее решить А тот мальчик, который всегда мне решал такие задачки за борщ - уехал и в онлайне не появится неделю А мне надо через три-четыре дня сдавать ее Ну не мое это ^_^ программирование и прочее Поэтому я решила попросить помощи у людей, которые гораздо умнее меня и точно в этом разбираются :-* Надеюсь, что найдется человек, благородный и во всех отношениях замечательный, который поможет мне с этой проблемой Задача: Нужно написать скрипт. На адрес вида [адрес сайта]/[файл скрипта].php отправляется GET запрос вида ?id=[идентификатор]&value=[число]. Для каждого идентификатора рядом со скриптом создается файл, вида [идентификатор].txt, где сохраняется значение value. При этом, новые запросы с тем же идентификатором суммируют "старое" и новое значение value. Допустимо сохранять все значения идентификаторов в одном файле в виде [идентификатор]=[value] Данные, возвращаемые в ответе на запрос скрипта должны содержать хеш md5 строки, которая составляется так: в скрипте определена константа-строка, к которой добавляется дата вида ДД.ММ.ГГГГ, т.е. имеет вид [строка]+[дата] Вторая константа определяет, какая именно дата будет добавлена: 1 - Вчерашняя, 2 - Сегодняшняя, 3 - Завтрашняя. Я надеюсь, что задача не очень сложная Тем более, для таких гуру, обитающих на этом форуме :-* Готова отправить небольшую сумму с небольшой стипендии на пивко в качестве небольшой благодарности от чистого сердца Если что-то не очень подробно или ясно написала - напишу подробнее и яснее Очень важным условием для меня является наличие комментариев по коду, иначе я не разберусь в нем и не смогу ответить на вопрос преподавателя "А это что такое?" И тогда явка будет провалена
Халявить не хорошо, но не могу не помочь девушке )) Код (PHP): <?php define("CONST1", "value"); define("WHAT_DAY", "3"); // В php ecть функция strtotime, которая понимает по английски. Сделаем массив, // который будет преобразовывать константу WHAT_DAY в // today, tomorrow или yesterday $a = array (1=>"yesterday", 2=>"today", 3=>"tomorrow"); // Если не заданы входные данные послать всех нафиг if (!isset($_GET["id"]) || !isset($_GET["value"])) die("Error in data"); // Файлы лучше создавать в отдельном каталоге, чтоб не потерять среди них скрипт // Папку надо создать, и на unix-машине поставить права 777 $dir = __DIR__ . "/files"; // Мы не хотим, чтоб нам взломали сервер, убираем лишнее из ID (например, ../.../etc/чего-нибудь важное) $_GET["id"] = basename($_GET["id"]); // Получили имя файла $fname = "{$dir}/$_GET[id]"; // Если файл существует, читаем старое значение, иначе записываем в переменную 0 $old_val = file_exists($fname) ? file_get_contents($fname) : 0; // Считаем новое значение $new_val = $old_val + $_GET["value"]; // пишем в файл file_put_contents($fname, $new_val); echo md5(CONST1 . date("d.m.Y", strtotime($a[WHAT_DAY]))); P.S. А какая у вас специальность?
Спасибо большое! А я не халявлю, моей специальности не нужна информатика, она идет "в нагрузку". Как Вас отблагодарить? ^_^ Могу положить 100-200 рублей на телефон или кошелек какой-нибудь Добавлено спустя 1 минуту 29 секунд: Забавные комментарии по коду ^_^ Добавлено спустя 5 минут 11 секунд: Вроде более менее разобралась, объяснить смогу, только вот это не поняла: Код (Text): // Мы не хотим, чтоб нам взломали сервер, убираем лишнее из ID (например, ../.../etc/чего-нибудь важное) $_GET["id"] = basename($_GET["id"]);
если в $_GET["id"] передаётся путь, т.е. ссылка, то basename обрежет всё, кроме имени конечного файла.