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

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

 

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

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

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

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

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

Скрипт работает, корректно обрабатывает ситуацию, когда файл отсутсвует. Не понравилось хранение даты в форматированном виде вместо UNIXSTAMP и отсутствуие выпадающих списков. Читаемость и компактность скрипта выше всяких похвал.

   
 
 автор: PantiL   (06.02.2006 в 00:06)   письмо автору
 
   для: cheops   (06.02.2006 в 00:04)
 

Спасибо!!! За похвалу.Выпадающие списки не делал, чтоб код покороче был. Замечания приму к сведению.

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

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

1. Компакто, гуд.
2. unlink("data.txt");
Не считаю это нужным, режим "w" перезапишет файл, а в случае ошибки резоно оставить струю запись.
3. Не учитываются случайные пробелы, и вся форма будет "неверной"

   
 
 автор: PantiL   (06.02.2006 в 09:36)   письмо автору
 
   для: Artem S.   (06.02.2006 в 09:18)
 

Файл индекс по разному действует при наличии и отсутвии файла data.txt поэтому его удаление в случае ошибки необходимо

   
Rambler's Top100
вверх

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