Здравствуйте, Дм.Григорьев, Вы писали:
Спасибо за скрипт.
Я, кажется, вкурил в сессии. Вот здесь.
http://www.phpfaq.ru/sessions
Действующий макет гостевухи (минимальный пример) приведён ниже.
А в реальности там будет, естественно, дофига проверок, запись в базу и проч, и проч.
<?
/////////
// gb.php
// сессию надо открывать перед отправкой заголовков,
// т.е. перед первым выводом html-я
session_start();
?>
<html>
<head>
<title>guest book</title>
</head>
<body>
<div>Hello!</div>
<?
// проверка - это post-запрос от моей формы, или что-то иное?
function isreply()
{
return isset($_REQUEST['posted']);
}
// получение капчи из сессии и из запроса
function getcaptcha($t)
{
if($t)
return $_SESSION['captcha'];
else if(isset($_REQUEST['captcha']))
return $_REQUEST['captcha'];
else
return;
}
// проверка капчи
function checkpost()
{
$good = getcaptcha(true);
$test = getcaptcha(false);
if(!isset($good))
return 'failed to establish the session';
if(!isset($test))
return 'failed to accept the form';
if($test != $good)
return "expected $good, accepted $test";
return;
}
// вот так я покажу форму
function showform()
{
$digit = mt_rand(0,9);
$names = array('zero','one','two','three','four','five','six','seven','eight','nine');
$test = $names[$digit];
$_SESSION['captcha'] = $digit;
?>
<form method=post action=gb.php>
<table>
<tr><td>Your name:</td><td><input type=text name=who value=''></input></td></tr>
<tr><td>Your email:</td><td><input type=text name=eml value=''></input></td></tr>
<tr><td>Your homepage:</td><td><input type=text name=url value=''></input></td></tr>
<tr><td>Your opinion:</td><td><input type=text name=msg value=''></input></td></tr>
<tr><td>Please type in the digit '<?= $test ?>':</td><td><input type=text name=captcha value=''></input></td></tr>
<tr><td> </td><td><input type=submit value='Send!'></td></tr>
</table>
<input type=hidden name=posted value=1></input>
</form>
<?
}//showform()
// вот так я покажу еггог
function showerror($err)
{
?><div><b>Error!!! <?= $err ?></b></div><?
}
// вот так я покажу результат ввода
function showresult()
{
$who = $_REQUEST['who'];
$url = $_REQUEST['url'];
$eml = $_REQUEST['eml'];
$msg = $_REQUEST['msg'];
?>
<div>You have posted:
<ul>
<li>Name = <?= htmlspecialchars($who) ?></li>
<li>URL = <?= htmlspecialchars($url) ?></li>
<li>email = <? htmlspecialchars($eml) ?></li>
<li>msg = <? htmlspecialchars($msg) ?></li>
</ul>
</div>
<?
}
// собственно, план работ:
if(isreply())
{
$err = checkpost();
if(isset($err))
{
showerror($err);
showform();
}
else
{
showresult();
}
}
else
{
showform();
}
?>
</body>
</html>
... << RSDN@Home 1.2.0 alpha rev. 655>>