|
|
|
| Ответ 005 на задачу N 3.
С условиями задачи можно ознакомится по ссылке.
<?php
// скрипт index.php к задаче N3
// <b>Axxil</b>
// был бы конфигурационный файл эти переменне были бы там
$filename = 'date.txt';
$mask = 'd F Y H i';
// Функция строит форму и заполняет её значениями в зависимости от ситуации
function makeForm(){
global $filename,$mask;
// выбор ситуции заполнения формы
if(file_exists($filename)){
$file=file($filename);
$date=array_shift($file);
}else{
$date=date($mask);
}
list($keys['d'],$keys['m'],$keys['y'],$keys['H'],$keys['i'])=explode(" ",$date);
$keys=array_reverse($keys);
// строим форму
$ret='<form action="handler.php" method="post">';
foreach($keys as $key=>$value){
$ret.='<input type="text" name="'.$key.'" value="'.$value.'">';
}
$ret.="<input type='submit' value='Отправить'>";
$ret.='</form>';
// выводим построенное
return $ret;
}
?>
<html>
<title>Форма</title>
<body>
<?=makeForm()?>
</body>
</html>
|
<?php
// скрипт handler.php к задаче N2
$filename = 'date.txt';
$handler = fopen($filename,'w+');
if(fwrite($handler,implode(" ",$_REQUEST))===false){
echo "Ошибка записи файла ".$filename;
exit;
}
// непонятно из условия должен ли обработчик возвращаться обратно к форме если да:
header('location: '.$_SERVER['HTTP_REFERER']);
// если нет, то выводим надпись что всё ОК :
// echo "Дата обновлена"
fclose($handler);
?>
|
http://www.softtime.ru/info/task.php?id_article=73 | |
|
|
|
|
|
|
|
для: SoftTime
(05.02.2006 в 01:22)
| | Очень компактно и хорошо всё оформлено, печалит использование global без жёсткой необходимости. Отсутствуют выпадающие списки и используется оригинальный формат вместо UNIXSTAMP. Скрипт хитро работает - с трудом въехал :) - это недостаток, код должен читаться как по маслу. | |
|
|
|
|
|
|
|
для: cheops
(06.02.2006 в 00:10)
| | 1. global это временное помутнение рассудка :)
2.Тут ситуация какая... Скрипт будет работать с файлом, доступ к которому запрещён для всех кроме него самого. Коли так то ИМХО абсолютно фиолетово какой формат даты используется
Хотя на самом деле каюсь, мне это вообще в голову не пришло :).
А так я любитель стандартов.
И если бы скрипт работал с БД то естественно формат был бы именно UNIXTIMESTAM.
3. Интересно было бы разобраться в чём хитрость и где непонятно? | |
|
|
|
|
|
|
|
для: Axxil
(06.02.2006 в 16:35)
| | Хэш непонятный в файле - очень смущает. | |
|
|
|
|
|
|
|
для: SoftTime
(05.02.2006 в 01:22)
| | Ничего личного, это только мое скромное мнение. Вы вправе не согласится с ним, и я тоже могу ошибаться.
Мудрено :)
Что есть:
1. header('location: '.$_SERVER['HTTP_REFERER']);
Часть пользователей будет страдать, так как не у всех передается реферер (бывает firefall его блокирует)
2. implode(" ",$_REQUEST)
через чурь. Я об этом уже писал, да и не этично так делать
3. В целом компактно и ничего лишнего нет. | |
|
|
|
|
|
|
|
для: Artem S.
(06.02.2006 в 09:11)
| | 1. Я тоже не любитель таких финтов. Но на скорую руку так сделал. Это в принципе к задаче отношения не имеет.
2. А в чём неэтичность? | |
|
|
|
|
|
|
|
для: Axxil
(06.02.2006 в 16:30)
| | >> 2. А в чём неэтичность?
Если скрипт будут дорабатывать, не сразу будет понятно что он "собирает", могут вмешаться cookie и т.д. | |
|
|
|
|
|
|
|
для: Artem S.
(06.02.2006 в 18:30)
| | Точно блин, я забыл что REQUEST всем массивам массив :)
Конечно логичнее было бы $_POST | |
|
|
|
|
|
|
|
для: Axxil
(06.02.2006 в 18:39)
| | Ответ 005
Пишет весь мусор в файл - даже буквы пропускает
Не никаких проверок | |
|
|
|