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

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

 

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

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

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

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

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

Очень компактно и хорошо всё оформлено, печалит использование global без жёсткой необходимости. Отсутствуют выпадающие списки и используется оригинальный формат вместо UNIXSTAMP. Скрипт хитро работает - с трудом въехал :) - это недостаток, код должен читаться как по маслу.

   
 
 автор: Axxil   (06.02.2006 в 16:35)   письмо автору
 
   для: cheops   (06.02.2006 в 00:10)
 

1. global это временное помутнение рассудка :)

2.Тут ситуация какая... Скрипт будет работать с файлом, доступ к которому запрещён для всех кроме него самого. Коли так то ИМХО абсолютно фиолетово какой формат даты используется

Хотя на самом деле каюсь, мне это вообще в голову не пришло :).
А так я любитель стандартов.
И если бы скрипт работал с БД то естественно формат был бы именно UNIXTIMESTAM.

3. Интересно было бы разобраться в чём хитрость и где непонятно?

   
 
 автор: cheops   (06.02.2006 в 21:15)   письмо автору
 
   для: Axxil   (06.02.2006 в 16:35)
 

Хэш непонятный в файле - очень смущает.

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

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

Мудрено :)
Что есть:
1. header('location: '.$_SERVER['HTTP_REFERER']);
Часть пользователей будет страдать, так как не у всех передается реферер (бывает firefall его блокирует)
2. implode(" ",$_REQUEST)
через чурь. Я об этом уже писал, да и не этично так делать
3. В целом компактно и ничего лишнего нет.

   
 
 автор: Axxil   (06.02.2006 в 16:30)   письмо автору
 
   для: Artem S.   (06.02.2006 в 09:11)
 

1. Я тоже не любитель таких финтов. Но на скорую руку так сделал. Это в принципе к задаче отношения не имеет.
2. А в чём неэтичность?

   
 
 автор: Artem S.   (06.02.2006 в 18:30)   письмо автору
 
   для: Axxil   (06.02.2006 в 16:30)
 

>> 2. А в чём неэтичность?
Если скрипт будут дорабатывать, не сразу будет понятно что он "собирает", могут вмешаться cookie и т.д.

   
 
 автор: Axxil   (06.02.2006 в 18:39)   письмо автору
 
   для: Artem S.   (06.02.2006 в 18:30)
 

Точно блин, я забыл что REQUEST всем массивам массив :)
Конечно логичнее было бы $_POST

   
 
 автор: PantiL   (06.02.2006 в 22:09)   письмо автору
 
   для: Axxil   (06.02.2006 в 18:39)
 

Ответ 005
Пишет весь мусор в файл - даже буквы пропускает
Не никаких проверок

   
Rambler's Top100
вверх

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