|
|
|
| Ответ 009 на задачу N 3.
С условиями задачи можно ознакомится по ссылке.
<?
// скрипт index.php к задаче N3
// Ник Коляка
// пытаемся открыть файл data.txt
$file = file("data.txt");
if(!$file) // если файла data.txt нет или он есть, но пустой, выводим текущее дату и время
{
$year=date("Y");
$moth=date("m");
$day=date("d");
$hour=date("H");
$min=date("i");
}
else //Если файл data.txt есть, то делаем из его данных массив
{
foreach($file as $qk)
{
// разделяем ::
list($paah1,$paah2,$paah3,$paah4,$paah5) = explode("::", $qk);
//присваеваем переменным значение
$year=$paah1;
$moth=$paah2;
$day=$paah3;
$hour=$paah4;
$min=$paah5;
}
}
// выводим данные
?>
<form action=handler.php method=post>
<table>
<tr>
<td>
<input type=text name=year value=<? echo nl2br(htmlspecialchars(StripSlashes($year))) ?>><br>
<input type=text name=moth value=<? echo nl2br(htmlspecialchars(StripSlashes($moth))) ?>><br>
<input type=text name=day value=<? echo nl2br(htmlspecialchars(StripSlashes($day))) ?>><br>
<input type=text name=hour value=<? echo nl2br(htmlspecialchars(StripSlashes($hour))) ?>><br>
<input type=text name=min value=<? echo nl2br(htmlspecialchars(StripSlashes($min))) ?>><br>
</td>
<td>
Год <br>
Месяц <br>
День <br>
Час(ов) <br>
Минут(а)<br>
</td>
</tr>
<tr><td>
<input type=submit value="Записать">
</td></tr>
</table>
|
=====================================================
<?php
//скрипт handler.php ( обработчик ) к задаче N3
// Ник Коляка
// считываем переданные данные
$pah1 = substr($_POST['year'],0,4);
$pah2 = substr($_POST['moth'],0,2);
$pah3 = substr($_POST['day'],0,2);
$pah4 = substr($_POST['hour'],0,2);
$pah5 = substr($_POST['min'],0,2);
// проверяем на наличие данных, и на правельность ввода (частичную)
if(!empty($pah1) & !empty($pah2) & !empty($pah3) & !empty($pah4) & !empty($pah5)
& !preg_match("/[a-zA-Zа-яА-Я]/",$pah1) & !preg_match("/[a-zA-Zа-яА-Я]/",$pah2)
& !preg_match("/[a-zA-Zа-яА-Я]/",$pah3) & !preg_match("/[a-zA-Zа-яА-Я]/",$pah4)
& !preg_match("/[a-zA-Zа-яА-Я]/",$pah5))
//если все в наличии и правельно то открываем файл для записи если его нет то создаем
{
$file = fopen("data.txt", "w");
// записываем данные в начало файла
fwrite($file, "$pah1::$pah2::$pah3::$pah4::$pah5");
// переходим на index.php
header("location: index.php");
}
//если пользователь не ввел данные или ввел не правельно то выводим сообщение об ошибке
else
{
echo "Вы не ввели данные или ввели их неправельно";
exit();
}
?>
|
http://www.softtime.ru/info/task.php?id_article=73 | |
|
|
|
|
|
|
|
для: SoftTime
(04.02.2006 в 22:56)
| | Очень компактный код, однако при не осущетсвляется проверка существования файла - мне выдал предупреждение
Warning: file(data.txt) [function.file]: failed to open stream: No such file or directory in d:\main\test2\index.php on line 6
|
Недостатки заключаются в том, что не используются выпадающие списки, дата хранится в оригинальном формате, вместо промышленного стандарта UNIXSTAMP - числа секунд прошедших с 1 января 1970 года. | |
|
|
|
|
|
|
|
для: SoftTime
(04.02.2006 в 22:56)
| | Ничего личного, это только мое скромное мнение. Вы вправе не согласится с ним, и я тоже могу ошибаться.
1.
// разделяем ::
list($paah1,$paah2,$paah3,$paah4,$paah5) = explode("::", $qk);
//присваеваем переменным значение
$year=$paah1;
$moth=$paah2;
$day=$paah3;
$hour=$paah4;
$min=$paah5;
Не понятно использование "левых" переменных.
2. nl2br(htmlspecialchars(StripSlashes($year)))
Мда... а ведь это просто число, и оно пришло не от пользователя а из файла.
3. !preg_match("/[a-zA-Zа-яА-Я]/"
Не очень понял, у нас же число? Кроме букв можно и другую гадость повводить.
4. & - это битовая операция, && логическая
5. И снова, файл не закрывается, это не обязательно но рекомендуется. | |
|
|
|
|
|
|
|
для: Artem S.
(06.02.2006 в 09:37)
| | Ответ 009
Работает с ошибками - нет проверки существования файла
Если при вводе в начале каждой строки поставить пробелы то получим файл
вот такого вида | |
|
|
|