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

Warning: Trying to access array offset on false in /home/u98739/softtime.ru/www/utils/currentforum.php on line 18

Warning: Trying to access array offset on false in /home/u98739/softtime.ru/www/utils/currentforum.php on line 19

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Ответ 003 на задачу N 3

Сообщения:  [1-2] 

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

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

1. getdate(time());
В данном случае сойдет и getdate();
2. Извлеение даты.
Здесь я бы воспользовался рег. выражением, но и у автора нет ничего крименального.
3. Дата храниться в понятной форме. Это хорошо, при случает ее можно отредактировать вручную.
4.
$date['year']=trim(substr($_POST['year'],0,4))
Логичнее было бы
$date['year']=substr(trim($_POST['year']),0,4)
5. Не совсем корректные сообщение об ошибке. "Не ввели" и "не правильно ввели" разные вещи.
6. Использована блокировка, это есть гуд =)

   
 
 автор: SoftTime   (05.02.2006 в 09:12)   письмо автору
 
 

Ответ 003 на задачу N 3.
С условиями задачи можно ознакомится по ссылке.

<?
// Скрипт index.php к задаче № 3
// <b>Сизых, Иван, SpeculAt0r</b>

$path="date.txt"; // путь к файлу с датой

if(!file_exists($path) or filesize($path)=="0"){
    $date=getdate(time()); // получаем текущую дату если файла не существует или он пустой
}
else{
    $file=file($path); // если файл существует и он не пустой  считываем его в массив
    list($ymd,$hm)=explode(" ",$file[0]); // разбиваем полученную дату на ГГГГ-ММ-ДД и ЧЧ:ММ
    list($date['year'],$date['mon'],$date['mday'])=explode("-",$ymd); // теперь год, месяц и день в отдельных переменных
    list($date['hours'],$date['minutes'])=explode(":",$hm); // часы и минуты также в  отдельных переменных
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>Задача № 3</title>
  <meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
 </head>
<body>
<center>
<table cellspacing='0' cellpadding='2' style='text-align:center;'>
 <form action='./handler.php' method='post'>
 <tr><td>Год</td><td>Месяц</td><td>День</td><td>Часы</td><td>Минуты</td></tr>
 <tr>
  <td><input type='text' name='year' maxlength='4' size='4' value='<? echo $date['year']; ?>'></td>
  <td><input type='text' name='month' maxlength='2' size='4' value='<? echo $date['mon']; ?>'></td>
  <td><input type='text' name='day' maxlength='2' size='4' value='<? echo $date['mday']; ?>'></td>
  <td><input type='text' name='hour' maxlength='2' size='4' value='<? echo $date['hours']; ?>'></td>
  <td><input type='text' name='min' maxlength='2' size='4' value='<? echo $date['minutes']; ?>'></td>
 </tr>
 <tr><td colspan='5'><input type='submit' name='write' value='Записать в файл'></td></tr>
 </form>
</table>
</center>
</body>
</html>


<?
// Скрипт handler.php к задаче № 3
// <b>Сизых, Иван, SpeculAt0r</b>

$error=""; // переменная для ошибок

// Обрабатываем данные полученные из формы
if($_POST['write']){
    // ГОД
    if($_POST['year']){
        $date['year']=trim(substr($_POST['year'],0,4)); // удаляем пробелы и обрезаем
        if(empty($date['year']) or !is_numeric($date['year'])) // если  ПУСТО или НЕ ЧИСЛО, ОШИБКА
            $error.="Вы неверно ввели ГОД!<br>
";
    }
    else $error.="Вы не ввели ГОД!<br>
";
    // МЕСЯЦ
    if($_POST['month']){
        $date['mon']=trim(substr($_POST['month'],0,2)); // удаляем пробелы и обрезаем
        if((empty($date['mon']) or !is_numeric($date['mon'])) or ($date['mon']<=0 or $date['mon']>12)) // если  ПУСТО, НЕ ЧИСЛО, <=0, >12, то ОШИБКА
            $error.="Вы неверно ввели МЕСЯЦ!<br>
";
    }
    else $error.="Вы не ввели МЕСЯЦ!<br>
";
    // ДЕНЬ
    if($_POST['day']){
        $date['mday']=trim(substr($_POST['day'],0,2)); // удаляем пробелы и обрезаем
        if((empty($date['mday']) or !is_numeric($date['mday'])) or ($date['mday']<=0 or $date['mday']>31)) // если  ПУСТО, НЕ ЧИСЛО, <=0, >31, то ОШИБКА
            $error.="Вы неверно ввели ДЕНЬ!<br>
";
    }
    else $error.="Вы не ввели ДЕНЬ!<br>
";
    // ЧАСЫ
    if($_POST['hour']){
        $date['hours']=trim(substr($_POST['hour'],0,2)); // удаляем пробелы и обрезаем
        if((empty($date['hours']) or !is_numeric($date['hours'])) or ($date['hours']<0 or $date['hours']>23)) // если  ПУСТО, НЕ ЧИСЛО, <0, >23, то ОШИБКА
            $error.="Вы неверно ввели ЧАСЫ!<br>
";
    }
    else $error.="Вы не ввели ЧАСЫ!<br>
";
    // МИНУТЫ
    if($_POST['min']){
        $date['minutes']=trim(substr($_POST['min'],0,2)); // удаляем пробелы и обрезаем
        if((empty($date['minutes']) or !is_numeric($date['minutes'])) or ($date['minutes']<0 or $date['minutes']>59)) // если  ПУСТО, НЕ ЧИСЛО, <0, >59, то ОШИБКА
            $error.="Вы неверно ввели МИНУТЫ!<br>
";
    }
    else $error.="Вы не ввели МИНУТЫ!<br>
";
    
    // проверяем переменную error
    if($error!="")
        echo "<div style='color:#ff0000'>".$error."</div><br>
<a href='index.php'>попробовать ещё раз</a>";
    else{
        $string=$date['year']."-".$date['mon']."-".$date['mday']." ".$date['hours'].":".$date['minutes']."
";
        $date_file=fopen('date.txt','w') or die("Не могу открыть файл!");
        flock($date_file,LOCK_EX);
        fputs($date_file,$string);
        flock($date_file,LOCK_UN);
        fclose($date_file);
        echo "Дата записана в файл!<br>
<a href='index.php'>редактировать</a>";
    }
}
else
    header("Location:index.php"); // Если мы пришли не с index.php, отправляем туда

?>


http://www.softtime.ru/info/task.php?id_article=73

   

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime