|
|
|
| Ответ 006 на задачу N 3.
С условиями задачи можно ознакомится по ссылке.
Решение задачи Номер 3
Репетунов Алексей aka PantiL
Файл index.php
>>
<!-- ЗАДАЧА №3-->
<!-- Репетунов Алексей aka PantiL-->
<?
//Если файла с записью нет, покажем сегодняшнюю дату
if(!file_exists("data.txt"))
{
$year = date("Y");
$month = date("m");
$date = date("d");
$hour = date("H");
$minute = date("i");
}
else
{
//Если файл есть считаем из него данные и с помощью рег. выражения разобьем строку на составляющие
$f = file("data.txt");
ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2})$", $f[0], $arr);
$year = $arr[1];
$month = $arr[2];
$date = $arr[3];
$hour = $arr[4];
$minute = $arr[5];
}
?>
<!-- Форма , значения в нее записываются либо из файла если он есть , либо сегодняшняя дата-->
Если хоть одно тектовое поле будет заполненно не корректно, запись не будет произведена<br>
<form action="script3.php" method="post">
Год:<input type="text" name="year" value="<?=$year;?>"><br>
Месяц:<input type="text" name="month" value="<?=$month;?>"><br>
Число:<input type="text" name="date" value="<?=$date;?>"><br>
Час:<input type="text" name="hour" value="<?=$hour;?>"><br>
Минуты:<input type="text" name="minute" value="<?=$minute;?>"><br>
<input type="submit" value="Go!">
|
>>
Файл scrip3.php
>>
<?
///////////////////////////////
// ЗАДАЧА 3
//Репетунов Алексей aka PantiL
//////////////////////////////
//Удалили файл. Если данные пришли верные, то файл создастся
//Если данные пришли не правильные - файла так и не будет
@unlink("data.txt");
//проверка рег. выражениями, корректности данных - чтобы месяц был не больше 12 а дата не более 31 ....
if((ereg("(^[1-9])([0-9]{1,3}$)", $_POST['year']))&&
(ereg("(^0)([1-9]$)|(^1)([0-2]$)|(^[1-9]$)", $_POST['month']))&&
(ereg("(^[1-9]$)|(^0)([1-9]$)|(^[1-2])([0-9]$)|(^31$)", $_POST['date']))&&
(ereg("(^[0-9]$)|(^[0-1])([0-9]$)|(^2)([0-4]$)", $_POST['hour']))&&
(ereg("(^[0-9]$)|(^[0-5])([0-9]$)", $_POST['minute'])))
{
//Все впорядке - проверки прошли удачно - пишемся в файл
//Формируем строку для записи в файл
$str = $_POST['year']."-".
$_POST['month']."-".
$_POST['date']." ".
$_POST['hour'].":".
$_POST['minute'];
$f = fopen("data.txt", "w");
fputs($f, $str);
fclose($f);
}
header("Location: index.php");
?>
|
>>
--
С уважением,
Алексей
http://www.softtime.ru/info/task.php?id_article=73 | |
|
|
|
|
|
|
|
для: SoftTime
(05.02.2006 в 00:30)
| | Скрипт работает, корректно обрабатывает ситуацию, когда файл отсутсвует. Не понравилось хранение даты в форматированном виде вместо UNIXSTAMP и отсутствуие выпадающих списков. Читаемость и компактность скрипта выше всяких похвал. | |
|
|
|
|
|
|
|
для: cheops
(06.02.2006 в 00:04)
| | Спасибо!!! За похвалу.Выпадающие списки не делал, чтоб код покороче был. Замечания приму к сведению. | |
|
|
|
|
|
|
|
для: SoftTime
(05.02.2006 в 00:30)
| | Ничего личного, это только мое скромное мнение. Вы вправе не согласится с ним, и я тоже могу ошибаться.
1. Компакто, гуд.
2. unlink("data.txt");
Не считаю это нужным, режим "w" перезапишет файл, а в случае ошибки резоно оставить струю запись.
3. Не учитываются случайные пробелы, и вся форма будет "неверной" | |
|
|
|
|
|
|
|
для: Artem S.
(06.02.2006 в 09:18)
| | Файл индекс по разному действует при наличии и отсутвии файла data.txt поэтому его удаление в случае ошибки необходимо | |
|
|
|