|
|
|
|
|
для: 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. Использована блокировка, это есть гуд =) | |
|
|
|
|
|
|
| Ответ 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 | |
|
|
| |
|