|
|
|
| Я отправил письмо вовремя и уехал отдыхать на выходные и вот только сейчас я обнаружил что надо еще добавлять свой ответ по ссылке из другого форума сюда
Пожалуйста очените мой код
<?php
// скрипт index.php к задаче N3
// <b>udaf</b>
//проверка существует ли файл даты а также не пуст ли он
if((filesize("data.txt")==0)||!file_exists("data.txt"))
{
//формирование фремени
$year=date("Y");
$mounth=date("m");
$day=date("d");
$hour=date("H");
$minit=date("i");
//форма, куда подставляеся значение текущего времени
echo("<form action=script2.php>");
echo("год<input type=text name=year value=".$year."><br>");
echo("месяц<input type=text name=mounth value=".$mounth."><br>");
echo("день<input type=text name=day value=".$day."><br>");
echo("час(ы)<input type=text name=hour value=".$hour."><br>");
echo("минуты<input type=text name=minit value=".$minit."><br>");
echo("<input type=submit>");
echo("</form>");
}
//если файла не существует
else
{
//открытие фацла
$data_file=fopen("data.txt","r");
//чтение строки из файла
$file_string=fgets($data_file );
//поиск с помощью рег выражения в ней
preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2})/i", $file_string, $dates);
//в эту форму заносятся результаты поиска в рег выражении
echo("<form action=script2.php>");
echo("год<input type=text name=year value=".$dates[1]."><br>");
echo("месяц<input type=text name=mounth value=".$dates[2]."><br>");
echo("день<input type=text name=day value=".$dates[3]."><br>");
echo("час(ы)<input type=text name=hour value=".$dates[4]."><br>");
echo("минуты<input type=text name=minit value=".$dates[5]."><br>");
echo("<input type=submit>");
echo("</form>");
//закрываем файл
fclose($data_file);
}
//end
?>
|
<?php
// скрипт script2.php к задаче N3
//простая проверка существования всех переменных
if($year && $mounth && $day && $hour && $minit)
{
//еще одна простая проверка, но уже проверяет чтобы переменные лежали в допустимом диапазоне(мщй др)
if(!preg_match("/([0-9]{4})/",$year)) $year="1987";
if(!preg_match("/([0-9]{1,2})/",$mounth)) $mounth="06";
if(!preg_match("/([0-9]{1,2})/",$day)) $day="18";
if(!preg_match("/([0-9]{1,2})/",$hour)) $hour="17";
if(!preg_match("/([0-9]{1,2})/",$minit)) $minit="37";
//удаление файла с датой(так проше)
unlink("data.txt");
$data_file=fopen("data.txt","a");
//формирование строки для записи(я думаю никакая фильтрация тут не нужна)
$string_to_write=$year."-".$mounth."-".$day." ".$hour.":".$minit;
//при успешной записи
if(fwrite($data_file, $string_to_write))
{
//закрываем файл
fclose($data_file);
//заголовок на ридерект
header("Location: index.php");
}
else fclose($data_file);
}
else header("Location: index.php");
?>
|
| |
|
|
|
|
|
|
|
для: udaf
(06.02.2006 в 01:18)
| | Нет проверки на существование файла date.txt и если файл не существует - запись производится не корректно и выводит предупреждение
Warning: filesize() [function.filesize]: stat failed for data.txt in d:\main\test2\index.php on line 5
|
К достоинствам следует отнести компактность, особенно код проверки. | |
|
|
|
|
|
|
|
для: udaf
(06.02.2006 в 01:18)
| | 1. if((filesize("data.txt")==0)||!file_exists("data.txt"))
Логичнее все же
if (!file_exists("data.txt")||(filesize("data.txt")==0))
2. Лишние "телодвижения" с формой. Это увеличивает код. Все же ее нужно выводить в одном месте.
3.
unlink("data.txt");
$data_file=fopen("data.txt","a");
заменяется за
$data_file=fopen("data.txt","w");
4. В целом достаточно компактно. | |
|
|
|
|
|
|
|
для: Artem S.
(06.02.2006 в 18:36)
| | Ответ 013
Нет проверки на существование файла
Warning: filesize() [function.filesize]: stat failed for data.txt in x:\home\uch.ru\www\index.php on line 5
И еще
Notice: Undefined variable: year in x:\home\uch.ru\www\script2.php on line 4
У меня регистр глобалс=офф :( скрипт не работает
|
| |
|
|
|
|
|
|
|
для: PantiL
(06.02.2006 в 22:11)
| | Я считаю что тут и должны использоватся глобальные переменные т. к.
1) скрипт написан в целях обучения
2) от использование суперглобальных массивов код не приобретет ни капли безопастности | |
|
|
|
|
|
|
|
для: udaf
(07.02.2006 в 00:56)
| | Безопасноти нет, зато сколько универсальности :) | |
|
|
|
|
|
|
|
для: udaf
(07.02.2006 в 00:56)
| | > 2) от использование суперглобальных массивов код не приобретет ни капли безопастности
1) как раз наоборот. Безопасность повышается.
2) понятно будет что данные пришли из формы, а не из другого файла (который нужно еще найти). Т.е. повышается прозрачность кода. | |
|
|
|
|
|
|
|
для: Artem S.
(07.02.2006 в 13:44)
| | >> 2) от использование суперглобальных массивов код не
>приобретет ни капли безопастности
>1) как раз наоборот. Безопасность повышается.
>2) понятно будет что данные пришли из формы, а не из другого
>файла (который нужно еще найти). Т.е. повышается
>прозрачность кода.
тут я не совсем понял ведь можно же создать у себя на компютере форму с методом передачи post и передовать что вздумается или просто передовать серверу заголовки вручную | |
|
|
|
|
|
|
|
для: udaf
(08.02.2006 в 01:09)
| | Зато из cookie вы уже перезаписать $_POST не сможете и можно не проверять сунули что-нибудь в cookie или нет. | |
|
|
|