Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ответ 004 на задачу N 3
 
 автор: SoftTime   (05.02.2006 в 02:35)   письмо автору
 
 

Ответ 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

   
 
 автор: cheops   (06.02.2006 в 00:14)   письмо автору
 
   для: SoftTime   (05.02.2006 в 02:35)
 

Скрипт читаемый, колебался между 3 и 4 (из 5), но поставил в конечном итоге 4. Коректно работатет, к недостаткам следует отнести использование оригинального формата вместо UNIXSTAMP и отсутствие выпадающих списков, облегающих жизнь пользователям.

   
 
 автор: Artem S.   (06.02.2006 в 00:32)   письмо автору
 
   для: SoftTime   (05.02.2006 в 02:35)
 

Ничего личного, это только мое скромное мнение. Вы вправе не согласится с ним, и я тоже могу ошибаться.

1. Блокировка - хорошо =)
2. Нет никаких сообщений об ошибках, можно ввести в заблуждение что все правильно.
3. elseif(empty($day)){ $_exit_ = true; } ...
Лишнее, в рег. выр. это проверяется повторно.
4. В случае отсутвия файла онный создается. Трудно сказать на сколько это правильно \ не правильно, из условий задачи не ясно, но за идею ++ =)

   
 
 автор: PantiL   (06.02.2006 в 22:15)   письмо автору
 
   для: 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

Не работает - хотя в файл дату записал

   
 
 автор: cheops   (07.02.2006 в 03:02)   письмо автору
 
   для: PantiL   (06.02.2006 в 22:15)
 

Ну отладка под Notice - это на любителя, в реальной практике сервер с таким высоким уровнем тревожности почти невозможно встретить...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования