|
когда перешел на другой хост гостевой там небыло, пришлось делать самому, точней переделывать, гостевая почти сделана, но остались кой -какие проблемы
проверка формы производится путём отправки на страницу с текстом, что было сделано не так, знающие люди посоветовали сделать вот такие вставки от java скрипта
PHP код:
{?php
echo "<script>alert('blablabla');</script>";
?}
чтоб он показывал окошки с кнопкой "окей", всё работает, но новая страница так и загружается, а уж потом это окошко с кнопкой "окей" что делать, как отменить открывание в новом окне?
PHP код:
<?php
// LiteGuestBook v 1.0 - 06d.10m.09y.
#error_reporting (E_ALL);
include "config.php";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$shapka="
<!--шапка для всех рабочих окон-->
<html>
<head>
<META content='text/html; charset=windows-1251' http-equiv=Content-Type>
<title>Тенториум г.Выкса | Книга для гостей</title>
<!--стиль-->
<link rel=stylesheet type='text/css' href='../style.css'>
</head>
<body>
";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (isset($_GET['image'])) {
// Функция с цифрами защиты
$st="R0lGODlhCgAMAIABAFNTU////yH5BAEAAAEALAAAAAAKAAwAAAI"; // общая часть для всех рисунков
function imgwr($st,$num){
if ($num=="0") {$len="63"; $number=$st."WjIFgi6e+QpMP0jin1bfv2nFaBlJaAQA7";}
if ($num=="1") {$len="61"; $number=$st."UjA1wG8noXlJsUnlrXhE/+DXb0RUAOw==";}
if ($num=="2") {$len="64"; $number=$st."XjIFgi6e+QpMPRlbjvFtnfFnchyVJUAAAOw==";}
if ($num=="3") {$len="64"; $number=$st."XjIFgi6e+Qovs0RkTzXbj+3yTJnUlVgAAOw==";}
if ($num=="4") {$len="64"; $number=$st."XjA9wG8mWFIty0amczbVJDVHg9oSlZxQAOw==";}
if ($num=="5") {$len="63"; $number=$st."WTIAJdsuPHovSKGoprhs67mzaJypMAQA7";}
if ($num=="6") {$len="63"; $number=$st."WjIFoB6vxmFw0pfpihI3jOW1at3FRAQA7";}
if ($num=="7") {$len="61"; $number=$st."UDI4Xy6vtAIzTyPpg1ndu9oEdNxUAOw==";}
if ($num=="8") {$len="63"; $number=$st."WjIFgi6e+QpMP2slSpJbn7mFeWDlYAQA7";}
if ($num=="9") {$len="64"; $number=$st."XjIFgi6e+QpMP0jinvbT2FGGPxmlkohUAOw==";}
header("Content-type: image/gif");
header("Content-length: $len");
echo base64_decode($number); }
// Вывод изображений на экран (все кодированы - робот не пройдёт)
if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"];
for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} }
exit;}
// Событие добавления сообщения if $event=add
if (isset($_GET['event'])) { if ($_GET['event']=="add") {
// возвращаем значения данных из формы и присваиваем их переменным
if (isset ($_POST['name']) & isset ($_POST['msg']) & isset ($_POST['email'])& isset ($_POST['ur'])) {$name=$_POST['name']; $msg=$_POST['msg']; $email=$_POST['email']; $ur=$_POST['ur'];} else {exit;}
sleep(1); // мелкая защита от БОТОВ. Человеку секунда не время - а прога по подбору ключа - будет работать долго и не загружать сервер
if ($antispam!="0") {
$bada="
$shapka
<table border=1 width=100% height=100%>
<tr>
<td>
$back
<font size=5>Введённый вами код НЕ верен!</font>
</td>
</tr>
</table>
";
if (isset($_POST['usernum'])) {$usernum=$_POST['usernum'];} else {print"$bada"; exit;}
if (isset($_POST['xkey'])) {$xkey=$_POST['xkey'];} else {print"$bada"; exit;}
$userkey=md5("$usernum+$absrand");
if ($userkey!=$xkey) {print"$bada"; exit;}
}
if ($name == "" || strlen($name) > $maxname) {print "
$shapka
<table border=1 width=100% height=100%>
<tr>
<td>
$back
<font size=5>ваше имя или пустое, или превышает $maxname символов!</font></B></center>
</td>
</tr>
</table>
"; exit;}
if ($msg == "" || strlen($msg) > $maxmsg) {print "
$shapka
<table border=1 width=100% height=100%>
<tr>
<td>
$back
<font size=5>ваше сообщение или пустое или превышает $maxmsg символов.</font></B></center>
</td>
</tr>
</table>
"; exit;}
if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $email) and $email != "") {print "
$shapka
<table border=1 width=100% height=100%>
<tr>
<td >
$back и введите корректный E-mail адрес!</B></center>
</td>
</tr>
</table>
"; exit;}
$msg=str_replace("|","I",$msg);
$name=wordwrap($name,24,' ',1); // разрываем слишком длинные строки
$msg=wordwrap($msg,75,' ',1);
$today=mktime();
// производим запись данных в файл по шаблону: собщение|имя|емайл|сайт|дата|время|МКТАЙМ|сайт|
$text="$msg|$name|$email|$date|$time|$today|$ur|";
$text=str_replace(" ",' ',$text);
$text=str_replace("&",'&',$text);
$text=str_replace(">",'>',$text);
$text=str_replace("<",'<',$text);
$text=str_replace("\"",'"',$text);
$text=preg_replace("/\n\n/",'<p>',$text);
$text=preg_replace("/\n/",'<br>',$text);
$text=preg_replace("/\\\$/",'$',$text);
$text=preg_replace("/\r/",'',$text);
$text=stripslashes($text);
$text=preg_replace("/\\\/",'\',$text);
$text=str_replace("\r\n","<br> ",$text);
$text=str_replace("\n\n",'<p>',$text);
$text=str_replace("\n",'<br> ',$text);
// Вырезаем 3 и более ентеров
do {$text=str_replace("<br><br><br>","<br>",$text);} while (preg_match("/<br><br><br><br>/i",$text));
// Вырезаем 3 и более пробелов подряд
do {$text=str_replace(" "," ",$text);} while (preg_match("/ /i",$text));
$text=str_replace("\t",' ',$text);
$text=str_replace("\r",' ',$text);
$text=str_replace(' ',' ',$text);
if ($antiflud=="1") { // функция АНТИФЛУД здесь!
$linesn = file("guest.dat"); $in=count($linesn);
if ($in > 0) {
$lines=file("guest.dat"); $i=count($lines)-1; $itogo=$i; $dtf=explode("|",$lines[$i]);
$txtback="$dtf[0]|$dtf[1]|$dtf[2]|$dtf[6]|$dtf[3]|"; $lastmsg=$dtf[5];
$dtb=explode("|",$text);
$txtflud="$dtb[0]|$dtb[1]|$dtb[2]|$dtb[6]|$dtb[3]|";
$today=mktime();
if (($lastmsg+30)>$today) {
$eshe=($lastmsg+30)-$today; print"
$shapka
<table border=1 width=100% height=100%>
<tr>
<td>
$back Чаще 30 секунд запрещено размещать сообщения. Подождите ещё $eshe секунд!
</td>
</tr>
</table>
"; exit;}
if ($txtflud==$txtback) {print"
$shapka
<table border=1 width=100% height=100%>
<tr>
<td>
$back Данное сообщение уже размещено. Флудить в гостевой запрещено!
</td>
</tr>
</table>
"; exit;} }
}
$fp=fopen("guest.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("guest.dat", 0644);
if ($sendmail=="1") { // отправка сообщения админу на мыло
$headers=null;
$headers.="Content-Type: text/plain; charset=windows-1251\r\n";
$headers.="From: ".$name." <".$email.">\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";
// Собираем всю информацию в теле письма
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
$allmsg = $gname.chr(13).chr(10).'Новое сообщение в гостевой: http://'.$host.$self.chr(13).chr(10).'Имя: '.$name.chr(13).chr(10).'E-mail: '.$email.chr(13).chr(10).'Сайт: '.$ur.chr(13).chr(10).'Сообщение: '.$msg.chr(13).chr(10);
mail("$adminemail", "$gname (сообщение)", $allmsg, $headers); // Отправляем письмо майлеру на съедение ;-)
}
//скрипт для добавления сообщений
print "$shapka <script language='Javascript'>function reload() {location = 'index.php'}; setTimeout('reload()', 0);</script>";
exit;
}
}
// Типо главной страницы
if (!isset($_GET['page'])) {$page=1;} else {$page=$_GET['page'];}
//вставки для стиля
include ("../ver-niz/ver.htm");
print "
<!--страница гостевой-->
<html>
<head>
<title>Тенториум г.Выкса | Книга для гостей</title>
<META HTTP-EQUIV='Pragma' CONTENT='no-cache'>
<META HTTP-EQUIV='Cache-Control' CONTENT='no-cache'>
<META content='text/html; charset=windows-1251' http-equiv=Content-Type>
<!--скрип для гостевой-->
<SCRIPT language=JavaScript>
function x () {return;}
function FocusText() {
document.REPLIER.msg.focus();
document.REPLIER.msg.select();
return true; }
function DoSmilie(addSmilie) {
var revisedmsgage;
var currentmsgage = document.REPLIER.msg.value;
revisedmsgage = currentmsgage+addSmilie;
document.REPLIER.msg.value=revisedmsgage;
document.REPLIER.msg.focus();
return;
}
function DoPrompt(action) { var revisedmsgage; var currentmsgage = document.REPLIER.qmsgage.value; }
</SCRIPT>
<!--таблица надписи добавить собщение-->
<TABLE border=0 align=center cellPadding=5 cellSpacing=0>
<TBODY>
<TR>
<TD align=center><a href='index.php?event=new&page=$page'><b> Добавить сообщение </b></a></TD>
</TR>
</TD>
</TR>
</TBODY>
</TABLE>
<br>
";
if (isset($_GET['event'])) { if ($_GET['event']=="new") {
print "
<!--таблица формы для сообщения-->
<TABLE border=0 align=center cellPadding=5 cellSpacing=0 >
<TBODY>
<TR>
<TD>
<center>
<table>
<tr>
<td>
<form action=index.php?event=add method=post name=REPLIER>
Ваше имя:<br>
<input type=text value='' name=name size=26 class=bgform>
<p>
Адрес (e-mail):<img border='0' width='114' height='1'>Ваш сайт:<br>
<input type=text value='' name=email size=26 class=bgform>
<img border='0' width='20' height='1'>
<input type=text value='' name=ur size=26 class=bgform>
<p>
<table >
<tr>
<td valign=top>
";
if ($smile!="0") { print"
<A href='javascript:%20x()' onclick=\"DoSmilie(' :)');\">$s1</a>
<a href='javascript:%20x()' onclick=\"DoSmilie(' :D');\">$s2</a>
<a href='javascript:%20x()' onclick=\"DoSmilie(' :P');\">$s3</a>
<a href='javascript:%20x()' onclick=\"DoSmilie(' 8)');\">$s4</a>
<a href='javascript:%20x()' onclick=\"DoSmilie(' ]:(');\">$s5</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' :[');\">$s6</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' drink');\">$s7</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' rose');\">$s8</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' :-/');\">$s9</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' ;o');\">$s10</a>
<A href='javascript:%20x()' onclick=\"DoSmilie(' :(');\">$s11</a>
<br>
";}
print"
<A href='javascript:%20x()' onclick=\"DoSmilie('[RB] [/RB] ');\"><font color=red><B> выделитель</b></font></a>
</td>
</tr>
</table>
<center>
<textarea cols=65 rows=10 size=500 name=msg class=bgform></textarea><br>
<p>
";
// АНТИСПАМ----
if ($antispam!="0") {
if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"];
for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} }
$xkey=""; mt_srand(time()+(double)microtime()*1000000);
print"Код Защиты: ";
for ($i=0; $i<$maxkey; $i++) {
$snum[$i]=mt_rand(0,9); $psnum=md5($snum[$i]+$absrand);
$phpself=$_SERVER["PHP_SELF"];
echo "<img src=$phpself?image=$psnum border='0' alt=''>\n";
$xkey=$xkey.$snum[$i];
}
$xkey=md5("$xkey+$absrand");
print"
<input name='usernum' type='text' maxlength=$maxkey size=6 class=bgform> (введите число, указанное на картинке)
<input name=xkey type=hidden value='$xkey'>";}
print"
<p>
<input type='submit' value=' добавить ' class=knopki>
<img border='0' width='60' height='1'>
<input type='reset' value=' отмена ' class=knopki>
</center>
</td>
</tr>
</table>
</TD>
</TR>
</TBODY>
</TABLE>
<p>
";
} }
// считываем данные в память
$lines = file("guest.dat");
$maxi = count($lines)-1;
// выводим СПИСОК доступных номеров СТРАНИЦ ВВЕРХУ
if (isset($_GET['page'])) {$page=$_GET['page'];} else {$page="1";}
if ($page==0) {$page="1";} else {$page=abs($page);}
print "
<!--номера страниц-->
<center>
<font size=2>Страницы:</font>
";
for($i=0; $i<$maxi+1;) {$ip=$i/$qq+1;
if ($page==$ip) {print "<B>[ $ip ]</B> ";} else {print "<a href=\"index.php?page=$ip\">$ip</a> ";}
$i=$i+$qq;}
// Выводим qq сообщений на текущей странице
$maxpage=ceil(($maxi+1)/$qq); if ($page>$maxpage) {$page=$maxpage;}
if ($msginout=="1")
{ $fm=$qq*($page-1); if ($fm>$maxi) {$fm=$maxi-$qq;}
$lm=$fm+$qq; if ($lm>$maxi) {$lm=$maxi+1;} }
else
{ $fm=$maxi-$qq*($page-1); if ($fm<"0") {$fm=$qq;}
$lm=$fm-$qq; if ($lm<"0") {$lm="-1";} }
do { $dt = explode("|", $lines[$fm]);
if ($msginout=="1") {$fm++; $num=$maxi-$fm+2;} else {$fm--; $num=$fm+2;}
if ($smile!="0") { // заменяем текстовые смайлики на графические если разрешено
$dt[0]=str_replace(":)",$s1,$dt[0]);
$dt[0]=str_replace(":D",$s2,$dt[0]);
$dt[0]=str_replace(":P",$s3,$dt[0]);
$dt[0]=str_replace("8)",$s4,$dt[0]);
$dt[0]=str_replace("]:(",$s5,$dt[0]);
$dt[0]=str_replace(":[",$s6,$dt[0]);
$dt[0]=str_replace("drink",$s7,$dt[0]);
$dt[0]=str_replace("rose",$s8,$dt[0]);
$dt[0]=str_replace(":-/",$s9,$dt[0]);
$dt[0]=str_replace(";o",$s10,$dt[0]);
$dt[0]=str_replace(":(",$s11,$dt[0]);}
$dt[0]=str_replace("[RB]","<B><font color=red>", $dt[0]);
$dt[0]=str_replace("[/RB]","</font></B>", $dt[0]);
$dt[0]=str_replace("&#124;","|",$dt[0]);
if ($liteurl=="1") {$dt[0]=eregi_replace("((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/~%]*(\\?[[:alnum:]?+&;_=/%]*)?)?)", "<a href='\\1' target='_blank'>\\1</a>", $dt[0]);}
print"
<!--таблица всех сообщений-->
<TABLE width=100% border=0 align=center cellPadding=5 cellSpacing=0 >
<TR>
<TD>
<!--шаблон письма-->
<TABLE border=0 width=100%>
<tr>
<td width='200'>
<!--авттор и почта автора-->
<B><a href='mailto:$dt[2]'>$dt[1]</a></B>
</td>
<td>
<!--адрес сайта автора письма-->
<i><a href='$dt[6]'>$dt[6]</a></i>
</td>
<td align='right'>
<!--дата письма-->
<font size=1>
$dt[3] | $dt[4]
</font>
</td>
</tr>
</table>
<br>
<!--письмо узера-->
$dt[0]
<p>
<!--ответ-->
<i><font color=#006C00>$dt[7]</font></i>
<br>
<hr style='border-style: dotted; border-width: 3px; ' color='#C0C0C0'>
</TD>
</TR>
</TABLE>
";
if ($msginout=="1") {$whm=$fm; $whe=$lm;} else {$whm=$lm; $whe=$fm;}
} while($whm < $whe);
// выводим СПИСОК СТРАНИЦ ВНИЗУ
print "
<!--номера страниц-->
<p><font size=2>Страницы:</font>
";
for($i=0; $i<$maxi+1;) {$ip=$i/$qq+1;
if ($page==$ip) {print "<B>[ $ip ]</B> ";} else {print "<a href=\"index.php?page=$ip\">$ip</a> ";}
$i=$i+$qq;}
//вставки для стиля
include ("../ver-niz/cer.htm");
include ("../ver-niz/bok.htm");
include ("../ver-niz/niz.htm");
?>
гостевая в действии
http://beekeep.hut1.ru/guestbook/index.php
|