[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод КАПЧИ в браузерах IE и Ghrome
madison21
Ребята!
Прошу помощь в решении такой интересной проблемы.

Организовал форму обратной связи с момощью следующего скрипта WR-Sendmail
Вот этот код
<? // WR-sendmail v 1.4  //  27.09.09 г.  //  Miha-ingener@yandex.ru

$myemail="madison21@mail.ru"; // Ваш электронный адрес
$refreshpage="/companies/talks"; // Страница, куда возвращается человек после отправки сообщения
$antispam="1"; // 1/0 - вкл/выкл АНТИСПАМ
$maxkey=4; // Колличество символов в коде ЦИФРОЗАЩИТЫ (от 1 до 9)
$maxname="30"; // Максимальное кол-во символов в имени
$maxtema="50"; // максимум символов в теме
$maxmsg="2000"; // Максимальное количество символов в сообщении

// Далее настраивается цвет таблицы и текста: цвет таблицы и цвет текста в заголовке таблицы
// Для Выбора схемы - раскоментируйте её и закоментируйте текущую символами //
//$bdcolor="#79BBEF"; $fcolor="#00293E"; // Светлоголубой
//$bdcolor="#FF9A00"; $fcolor="#833C07"; // Оранжевый
//$bdcolor="#FFE51A"; $fcolor="#FF8000"; // Жёлто-оранжевый
//$bdcolor="#00E900"; $fcolor="#005300"; // Светло-зеленый
//$bdcolor="#FB5037"; $fcolor="#620000"; // Красный
//$bdcolor="#800080"; $fcolor="#350035"; // Сиреневенький
//$bdcolor="#007800"; $fcolor="#000000"; // Темно зеленый
//$bdcolor="#D2A500"; $fcolor="#4A3406"; // Золотой

$bdcolor="#BCC0C0"; $fcolor="#646464"; // Серый
//$bdcolor="#FFA8FF"; $fcolor="#800080"; // Розовый


$date=date("d.m.y"); // число.месяц.год
$time=date("H:i"); // часы:минуты:секунды

// ТАБЛИЦА стилей зарыта ЗДЕСЬ !!!

$shapka="<html>
<head>
<META http-equiv=Content-Type content='text/html; charset=utf-8'>
<style>
BODY,TD {FONT-FAMILY: verdana,arial,helvetica; FONT-SIZE: 13px;}
.pismo {BORDER-BOTTOM:
$bdcolor 1px solid;}
.pismo2 {BORDER-LEFT:
$bdcolor 1px solid; BORDER-BOTTOM:$bdcolor 1px solid;}
.remtop {font-weight: bold; color:
$fcolor; font-size:1.1em; padding:5px; border-top: 1px solid $fcolor; border-bottom: 1px solid $fcolor; background-color: $bdcolor;}
.remdata {font-weight: bold; margin:0; display:inline; font-size:0.9em; color:
$fcolor; float:right;}
input,textarea {font-family: Verdana; font-size: 12px; text-decoration: none; color: #000000; cursor: default; background-color: #FFFFFF; border-style: solid; border-width: 1px; border-color:
$bdcolor;}
</style>
</head>
<BODY leftMargin=0 topMargin=0 rightMargin=0 bottomMargin=0 marginheight=0 marginwidth=0>"
;

$back="<br><br><center>Вернитесь <a href='javascript:history.back(1)'><B>назад</B></a>."; // Удобная строка

function replacer ($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=preg_replace("/\\\/",'\',$text);
$text=str_replace("\r\n","<br> ",$text);
$text=str_replace("\n\n",'
<p>',$text);
$text=str_replace("\n",'
<br> ',$text);
$text=str_replace("\t",'',$text);
$text=str_replace("\r",'',$text);
$text=str_replace(' ',' ',$text);
do {$text=str_replace("<br><br><br>","<br>",$text);} while (preg_match("/<br><br><br><br>/i",$text));
do {$text=str_replace(" "," ",$text);} while (preg_match("/ /i",$text));
$text=str_replace("\t",' ',$text);
$text=str_replace("\r",' ',$text);
$text=str_replace(' ',' ',$text);
$text=rtrim($text);
return $text; }


// Для цифрозащиты антиспам:
$absrand="82321";// Случайное число. Используется для цифрозащиты.
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 (isset($_GET['
event'])) {

//sleep(1); // мелкая защита от БОТОВ

if ($antispam==TRUE) {
$bada="$shapka $back <font color=red>Введённый вами код НЕ верен</font>!";
if (isset($_POST['
usernum'])) {$usernum=$_POST['usernum'];} else {exit("$bada");}
if (isset($_POST['
xkey'])) {$xkey=$_POST['xkey'];} else {exit("$bada");}
$userkey=md5("$usernum+$absrand");
if ($userkey!=$xkey) {exit("$bada");}}

// обрабатываем REPLACER'
ом все данные
if (!isset($_POST['name'])) {exit("$shapka $back Вы не ввели имя!");} else {$name=replacer($_POST['name']);}
if (!isset($_POST['email'])) {exit("$shapka $back Вы не ввели емайл!");} else {$email=replacer($_POST['email']);}
if (!isset($_POST['tema'])) {exit("$shapka $back Вы не ввели тему!");} else {$tema=replacer($_POST['tema']);}
if (!isset($_POST['msg'])) {exit("$shapka $back Вы не ввели сообщение!");} else {$msg=replacer($_POST['msg']);}

// Если тема обязательна, разкоментируйте строчку ниже
if ($tema=="" || strlen($tema)>$maxtema) {exit("$shapka $back Вы не ввели тему!</B></center>");}

if ($name=="" || strlen($name)>$maxname) {exit("$shapka $back Вы не ввели имя, или вввели слишком длинное имя!</B></center>");}
if ($msg=="" || strlen($msg)>$maxmsg) {exit("$shapka $back Ваше сообщение или пустое или превышает $maxmsg символов.</B></center>");}
if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $_POST['email']) or $_POST['email']=="") {exit("$shapka $back и введите корректный E-mail адрес!</B></center>");}

$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $smailurl="http://$host$self";

// Настройки для отправки писем
$headers=null;
$headers.="From: <$email>\n";
$headers.="X-Mailer: PHP/".phpversion()."\n";
$headers.="Content-Type: text/html; charset=utf-8";

// Собираем всю информацию в теле письма
$allmsg="$shapka
<center>
<table cellpadding=5 cellspacing=0>
<TR><TD colspan=2><div class=remtop align=center>Сообщение c сайта
\"<a href='http://www.quantum-int.com/'>Quantum International</a>\"</div></TD></TR>
<TR><TD class=pismo><P class=remdata>Имя</P></TD><TD class=pismo2><B>
$name<B></TD></TR>
<TR><TD class=pismo><P class=remdata>E-mail</P></TD><TD class=pismo2><a href='mailto:
$email'>$email</a></td></tr>
<TR><TD class=pismo><P class=remdata>Тема</P></TD><TD class=pismo2><B>
$tema<B></td></tr>
<TR><TD class=pismo><P class=remdata>Дата отправки:</P></TD><TD class=pismo2>
$date г. в $time</td></tr>
<TR><TD class=pismo><P class=remdata>Сообщение</P></TD><TD class=pismo2>
$msg</td></tr>
</table>"
;

$printmsg="$shapka
<center><BR><BR>Ваше сообщение <B><font color=green>успешно отправлено</font></B><BR><BR>
Сейчас вы автоматически будете перемещены на предыдущую страницу.<BR>
Если ваш браузер не поддерживает автоматическую переадресацию, <a href='
$refreshpage'>Вернуться <B>назад</B></a>

</body></html>"
;
$allmsg.="<BR><BR><BR>* Это сообщение отправлено с формы обратной связи.</body></html>";

// Отправляем письмо майлеру на съедение ;-)
mail("$myemail", "Quantum International", $allmsg, $headers);

// Пишем пользователю "Спасибо" и обновляем страницу через JavaScript
print "<script language='Javascript'>function reload() {location = \"$refreshpage\"}; setTimeout('reload()', 5000);</script>$printmsg"; exit;


} else { // Типо главной страницы



print "$shapka
<center>
<form action=/sendmail.php?event=add method=post name=REPLIER><table>
<TR><TD colspan=2><div class=remtop align=center>Форма обратной связи</div></TD></TR>
<TR><TD><P class=remdata>Имя</P></TD><TD><input type=text value='' maxlength=
$maxname name=name size=57></TD></TR>
<TR><TD><P class=remdata>E-mail</P></TD><TD><input type=text value='' maxlength=
$maxname name=email size=57></td></tr>
<TR><TD><P class=remdata>Тема</P></TD><TD><input type=text value='' maxlength=
$maxtema name=tema size=57></td></tr>
<TR><TD><P class=remdata>Сообщение</P></TD><TD>
<textarea cols=57 rows=10 size=500 name=msg></textarea>"
;



if ($antispam==TRUE) { // если АНТИСПАМ АКТИВИРОВАН
if (array_key_exists("image", $_REQUEST)) { $num=replacer($_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"<TR><TD><P class=remdata>Защитный код</P></TD><TD>";
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=8><input name=xkey type=hidden value='$xkey'>   <P class=remdata><small>(введите число, указанное на картинке)</small></P></TD></TR>";
}



print"<TR><TD colspan=2 align=center><br><input type=submit value='Отправить'></td></tr></table></form>";
}

?>

<BR><center><small>
Powered by <a href='http://www.wr-script.ru/'>WR-Sendmail</a> © 1.4</small></body></html>


При этом в инструкции к применению было написано, что если будем инклюдить (вставлять) скрипт в страницу, то вывод вот этого участка коды (капчи)
// Для цифрозащиты антиспам:
$absrand="82321";// Случайное число. Используется для цифрозащиты.
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;}

//******************* Ниже лучше ничего не трогать ************************//


надо вставить в самый верх страницы, в которую вставляю скрипт.
Вот таким образом я его вставил
<?php // Для цифрозащиты антиспам:
$absrand="82321";// Случайное число. Используется для цифрозащиты.
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;}

//******************* Ниже лучше ничего не трогать ************************//
?>


И тут начинается самое интересное!
В браузерах Opera и Firefox цифры капчи отображаются. А вот в браузерах IE и Google Chrome не отображаются.
При том, что если выводить скрипт напрямую (не вставляя в страницу), то во всех браузерах цифры отображаются, и всё работает.

А вот при моём варианте (вставляю в страницу) и вывожу капчу в начале страницы работает не во всех браузерах.

Отсюда вопрос - Что необходимо учесть (для всех браузеров) при вставке скрипта в страницу?

Вот эта страница с формой обратной связи
http://www.quantum-int.com/ru/companies/talks



Спустя 2 минуты, 33 секунды (18.01.2012 - 16:47) Семён написал(а):
Прокрутил до:
Цитата
И тут начинается самое интересное!

Закрыл
99% кривая вёрстка

Спустя 3 минуты, 45 секунд (18.01.2012 - 16:51) Winston написал(а):
Посмотри на посветку синтаксиса, здесь, на форуме.., уже видно ошибку, ты экранировл апострроф, потому вместо одного \ поставь 2 \\

Спустя 13 минут, 57 секунд (18.01.2012 - 17:05) madison21 написал(а):
Цитата (Winston @ 18.01.2012 - 13:51)
Посмотри на посветку синтаксиса, здесь, на форуме.., уже видно ошибку, ты экранировл апострроф, потому вместо одного \ поставь 2 \\

Дело в том, что у меня в скрипте (и вставлял я так) вместо этого апострофа идёт комбинация & # 0 9 2 ; (только всё слитно, иначе снова превращается в апостроф)
А здесь он эту комбинацию отобразил как апостроф..

Что же это может быть? Может и браузер его как то не так понимает?

Спустя 9 минут, 48 секунд (18.01.2012 - 17:15) Семён написал(а):
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
-------------------
В исходном коде покажите код сгененированного img для капчи

Спустя 1 минута, 1 секунда (18.01.2012 - 17:16) Winston написал(а):
biggrin.gif laugh.gif

Спустя 16 минут, 47 секунд (18.01.2012 - 17:33) madison21 написал(а):
Цитата (Семён @ 18.01.2012 - 14:15)
В исходном коде покажите код сгененированного img для капчи

Вот 4 цифры для капчи генерируются таким образом
<img src=/index.php?image=b4305516f375b673c2ac9c6c74fdaa62 border='0' alt=''>
<img
src=/index.php?image=cc5f81c3330b253376b5a8b989ed967d border='0' alt=''>
<img
src=/index.php?image=bb7cd041c33ebe865c2e6d980484a482 border='0' alt=''>
<img
src=/index.php?image=cc5f81c3330b253376b5a8b989ed967d border='0' alt=''>


Просто непонятно почему для одного браузера всё годится, а другого нет.

Спустя 59 секунд (18.01.2012 - 17:34) Семён написал(а):
Где кавычки
Где кавычки
Где кавычки
Где кавычки
Где кавычки
Где кавычки
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Правьте вёрстку
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML
Изучайте основы HTML

Спустя 2 минуты, 42 секунды (18.01.2012 - 17:36) Семён написал(а):
Один браузер вашу говно-вёрстку переваривает, другие unmanners людей к себе не подпускают

Спустя 6 минут, 10 секунд (18.01.2012 - 17:43) Winston написал(а):
madison21
Значение всех атрибутов в тегах нужно брать в кавычки !

Спустя 2 минуты, 15 секунд (18.01.2012 - 17:45) m4a1fox написал(а):
ОФФТОП
Свернутый текст
Как по мне так проще свою написать. ИМХО

Спустя 12 минут, 28 секунд (18.01.2012 - 17:57) madison21 написал(а):
Я перепробовал множество различных скриптов, но у меня почему то этой защитой постоянно траблы.
При вводе цифр или букв (которые отображаются на капче) постоянно выпадает, что неправильно введены цифры (или буквы).
И это только на этом сайте у меня так.
На других работает хорошо.

А этот скрипт капчу отображает тоже нормально.
Но при вставке его в страницу работает не на всех браузерах..

Спустя 4 минуты, 8 секунд (18.01.2012 - 18:01) Winston написал(а):
madison21
Ты все значения атрибутов тегов взял в кавычки?

Спустя 18 минут, 27 секунд (18.01.2012 - 18:20) madison21 написал(а):
Цитата (Winston @ 18.01.2012 - 15:01)
madison21
Ты все значения атрибутов тегов взял в кавычки?

Подскажи пожалуйста, что именно взять в кавычки?
Какие значения атрибутов?
Просто пример дай.. я по аналогии сделаю..

Спустя 4 минуты, 24 секунды (18.01.2012 - 18:24) Winston написал(а):
<img src="/index.php?image=b4305516f375b673c2ac9c6c74fdaa62" border='0' alt=''>
img - это тег
src, border, alt - это атрибуты тега, и их значения (то, что после =) должно находиться в ' или " кавичках

Спустя 33 минуты, 52 секунды (18.01.2012 - 18:58) madison21 написал(а):
в кавычки поставил, однако не помогло..

Спустя 23 часа, 50 минут, 46 секунд (19.01.2012 - 18:49) madison21 написал(а):
Вопрос помог решить знакомый специалист.
Всего то навсего при формировании картинки защиты (капчи) был неточно указанный путь.
Именно поэтому некоторые браузеры и спотыкались.
Надо было в путь генерации картинки капчи просто добавить /ru/
А скрипт рабочий на 100%.

Спустя 40 минут, 9 секунд (19.01.2012 - 19:29) Семён написал(а):
Почему я ему не верю?

Спустя 6 минут, 3 секунды (19.01.2012 - 19:35) killer8080 написал(а):
Цитата (Семён @ 19.01.2012 - 18:29)
Почему я ему не верю?

Как? Ты разве не знал что опера и ФФ умеют сами угадывать пути к картинкам laugh.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.