|
|
|
| Ответ 004 на задачу N 3.
С условиями задачи можно ознакомится по ссылке.
<?php
// <!-- index.php -->
// <!-- Задача N3 -->
// <!-- Дмитрий Перов, method && Guestos -->
// заводим переменную с именем файла
$target_file = "data.txt";
// если файл не существует, создаём его,
// и записываем в него дату
if(!file_exists($target_file)){
$_time = date('Y:m:d:H:i');
$write = fopen($target_file, "w");
fputs($write, $_time);
fclose($write);
}
// читаем файл в массив
$read_file = file($target_file);
// обжимаем первую ([0]) строку
$_line = trim($read_file[0]);
// разбиваем строку на переменные
list($year, $mes, $day, $hour, $min) = explode(':', $_line);
?>
<html>
<head>
<title>Задача N3</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head><body><br><br><br><br><br><br><br><br><br><br><br><br><br>
<div align="center">Редактирование даты:</div>
<table width="30%" align="center" border="0">
<form name="save_date" action="handler.php" method="post">
<tr align="center">
<td width="20%">год</td><td width="20%">месяц</td><td width="20%">число</td><td width="20%">часы</td><td width="20%">минуты</td>
</tr>
<tr align="center">
<td width="40%"><input name="year" type="text" size="4" maxlength="4" value="<?php echo $year;?>"> </td>
<td width="15%"><input name="mes" type="text" size="2" maxlength="2" value="<?php echo $mes;?>"> </td>
<td width="15%"><input name="day" type="text" size="2" maxlength="2" value="<?php echo $day;?>"> </td>
<td width="15%"><input name="hour" type="text" size="2" maxlength="2" value="<?php echo $hour;?>"> </td>
<td width="15%"><input name="min" type="text" size="2" maxlength="2" value="<?php echo $min;?>"> </td>
</tr>
<tr align="center"><td width="30%" colspan="5"><input type="submit" name="save" value="сохранить"></td></tr>
</form>
</table>
</body>
</html>
<!-- end file index.php -->
|
<?php
###### zadacha N3 :: softtime ######
###### file handler.php ######
// проверяем на наличие в пост данных переменной 'save'
if(isset($_POST['save'])){
// объявляем переменные и присваиваем им значения
$target_file = "data.txt";
// 'обжимаем' значения
$year = trim($_POST['year']);
$mes = trim($_POST['mes']);
$day = trim($_POST['day']);
$hour = trim($_POST['hour']);
$min = trim($_POST['min']);
// проверяем на пустоту
if(empty($year)){ $_exit_ = true; }
elseif(empty($mes)){ $_exit_ = true; }
elseif(empty($day)){ $_exit_ = true; }
elseif(empty($hour)){ $_exit_ = true; }
elseif(empty($min)){ $_exit_ = true; }
// проверяем чтоб данные были цифрами, и ограничиваем длинну
elseif(!ereg('^([0-9]{4})+$', $year)){ $_exit_ = true; }
elseif(!ereg('^([0-9]{2})+$', $mes)){ $_exit_ = true; }
elseif(!ereg('^([0-9]{2})+$', $day)){ $_exit_ = true; }
elseif(!ereg('^([0-9]{2})+$', $hour)){ $_exit_ = true; }
elseif(!ereg('^([0-9]{2})+$', $min)){ $_exit_ = true; }
// если флаг $_exit_ был выставлен в труе при проверках - выходим
if($_exit_){ header("Location: index.php"); exit; }
else{
// или если все ОК - записываем данные в файл
$format = $year.":".$mes.":".$day.":".$hour.":".$min;
$rec_date = fopen($target_file, "w");
flock($rec_date,LOCK_EX);
fputs($rec_date, $format);
flock($rec_date,LOCK_UN);
fclose($rec_date);
header("Location: index.php"); exit;
}
}
// если переменной 'save' нет в пост данных выходим
else { header("Location: index.php"); exit; }
###### end file handler.php ######
###### end zadacha N3 :: softtime ######
?>
|
http://www.softtime.ru/info/task.php?id_article=73 | |
|
|
|
|
|
|
|
для: SoftTime
(05.02.2006 в 02:35)
| | Скрипт читаемый, колебался между 3 и 4 (из 5), но поставил в конечном итоге 4. Коректно работатет, к недостаткам следует отнести использование оригинального формата вместо UNIXSTAMP и отсутствие выпадающих списков, облегающих жизнь пользователям. | |
|
|
|
|
|
|
|
для: SoftTime
(05.02.2006 в 02:35)
| | Ничего личного, это только мое скромное мнение. Вы вправе не согласится с ним, и я тоже могу ошибаться.
1. Блокировка - хорошо =)
2. Нет никаких сообщений об ошибках, можно ввести в заблуждение что все правильно.
3. elseif(empty($day)){ $_exit_ = true; } ...
Лишнее, в рег. выр. это проверяется повторно.
4. В случае отсутвия файла онный создается. Трудно сказать на сколько это правильно \ не правильно, из условий задачи не ясно, но за идею ++ =) | |
|
|
|
|
|
|
|
для: Artem S.
(06.02.2006 в 00:32)
| | Ответ 004
Notice: Undefined variable: _exit_ in x:\home\uch.ru\www\handler.php on line 27
Warning: Cannot modify header information - headers already sent by (output started at x:\home\uch.ru\www\handler.php:27) in x:\home\uch.ru\www\handler.php on line 36
|
Не работает - хотя в файл дату записал | |
|
|
|
|
|
|
|
для: PantiL
(06.02.2006 в 22:15)
| | Ну отладка под Notice - это на любителя, в реальной практике сервер с таким высоким уровнем тревожности почти невозможно встретить... | |
|
|
|