[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: домашний рецепт капчи
lawbreaker
Всем привет.
Я написал капчу, сам.
вот тут http://allday.ho.ua/bla.php
на етой ссылки всё работае, картинка показует и так дале.


вот вот когда я её вывожу в http://allday.ho.ua/add.php?act=1 то выводитсо не картинка а карляки и коды


зайдите сюда
http://allday.ho.ua/add.php?act=1

кликните три раза по кнопкам и увидите капчу

bla.php
PHP
<?php
session_start
();
$_SESSION['za'] = rand(100000,999999);
$z $_SESSION['za'];
// create a blank image
$image imagecreate(10075);

for (
$i=$a=80;$i<$a;$i++)
{

imageline($image$i+$i+$i+$i+$i 200 $i+$i+$i+$i+$i 255);

}
for (
$i=1,$a 100;$i<$a;$i++)
{

imageline($image,  $i+$i+$i+$i+$i 100  $i+$i+$i+$i+$i 0   255);

}

$o rand(10,50);
$u rand(5,40);

// write the string at the top left
 
imagestring($image5$o$u$z100);


// fill the background color
$bg imagecolorallocate($image200200220);

// output the picture
header("Content-type: image/png");
imagepng($image);



add.php
PHP
}elseif (!$_POST['1'] AND !$_POST['2'] AND $_POST['3'])
{
header("Content-type: image/png");
include(
"bla.php"); // для сессий ето

echo "<img href=bla.php>";
}




Спустя 19 минут, 44 секунды (16.05.2009 - 00:56) jetistyum написал(а):
на странице add.php у тебя уже вышел первоначально header ....
Content-Type: text/html; charset=windows-1251
а ты потом посреди кода пытаешься еще один вывести.....
наверное еще и отображение ошибок отключено wink.gif
тебе нужно в то место, где должна быть картинка просто вставить
PHP
echo '<img src="bla.php?'.time().'">';//трюк с time() - простой способ избежать кэширования ресурса


и нииикаких include и никаких header у тебя каптча должна быть отдельным php-файлом.... вобщем она у тебя правильно работает...
только вот у <img аттрибут - ресурс не href а src
стыдно должно быть!!! smile.gif

Спустя 6 минут, 30 секунд (16.05.2009 - 01:03) lawbreaker написал(а):
спасибо biggrin.gif

я уже больше месяца не кодил, всё с БД работал

Спустя 10 минут, 39 секунд (16.05.2009 - 01:13) jetistyum написал(а):
И еще ....

ЗАчем
PHP
$_SESSION['za'] = rand(100000,999999);
$z $_SESSION['za'];

когда можно ..
PHP
$z $_SESSION['za'] = rand(100000,999999);



зачем
PHP
for ($i=$a=80;$i<$a;$i++)
{

imageline($image$i+$i+$i+$i+$i 200 $i+$i+$i+$i+$i 255);

}


когда можно
PHP
for ($i=1$i<80$i++){
imageline($image$i*200 $i*255);
}

и вообще.. зачем ты рисуешь 80 х 100 линий.. у тебя они всеравно не помещаются на маленьком изображении.. да и расстояния нужно побольше делать между линиями...

Спустя 9 минут, 48 секунд (16.05.2009 - 01:23) lawbreaker написал(а):
add.php
PHP
}elseif (!$_POST['1'] AND !$_POST['2'] AND $_POST['3'])
{
include (
'bla.php');
$_SESSIO['zaa'] = $_SESSION['za'];
echo 
$_SESSION['za'];
 
// для сессий ето
echo "<b>Bitte geben Sie die Zahl, die auf dem Bild abgebildet ist, in das Feld ein.</b><br>";
echo 
'<img src="bla.php?'.time().'">';
echo 
"<form action=add.php?act=2 method=POST>
<input type=text name=ca size=8>
<input type=hidden name=cat value='"
.$_POST['cat']."'>
<input type=hidden name=ucat value='"
.$_POST['ucat']."'>
<input type=hidden name=uucat value='"
.$_POST['uucat']."'>
<input type=submit name=4>
"
;
}

я хочу чтобы сессия из bla.php передалась в add.php?act=1
и сохранилася до add.php?act=2 - тут я сравню сессию с цыфрами которые ввел юзер.

но изза include('bla.php');
выходить в начале кряко зябри
HTML
‰PNG  ��� IHDR���d���K���јЦ°ф���PLTEИИЬґЂ9›���kIDAT8Ќc`h@ ґзэGЁgГјщ ‡?юеmЮШxмЩfмц=hl;іaуЁКwн=З><ће}nњqxГ†(пaГэf xЋl�Э·ЎбШіЌ3ђmрЃ†юГЙµoФ>љШ�Ф† BашR����IEND®B`‚ 634935

в конце(634935) ето
PHP
$_SESSIO['zaa'] = $_SESSION['za'];
echo 
$_SESSION['za'];

Спустя 35 минут, 35 секунд (16.05.2009 - 01:59) jetistyum написал(а):
блин... не нужно ничего никуда инклюдить, сессии для того и существуют, чтобы данные можно было обрабатывать между разными скриптами.


я немного побаловался с кодом,так интереснее получается

PHP
session_start();
$z $_SESSION['za'] = strtoupper(substr(md5(microtime().'dfadasdasda'),0));
// create a blank image
$image imagecreate(10025);
$bg imagecolorallocate($image200200220);
for (
$i=7$i<18$i+=7){
    
$c imagecolorallocate($image100255-$i*2145);
    
imageline($image$i 100 $i $c);
}
for (
$i=7$i<93$i+=7){
    
$c imagecolorallocate($image25550+$i*20);
    
imageline($image,  $i 0  $i100$c);
}

$o rand(0,30);
$u rand(0,10);

// write the string at the top left
 
$textcolor imagecolorallocate($image, ($o*5+$u*10), 30+$o*2$u*20);
imagestring($image10$o$u$z$textcolor);

// fill the background color

// output the picture
header("Content-type: image/png");
imagepng($image);

Спустя 1 минута, 48 секунд (16.05.2009 - 02:01) FatCat написал(а):
Цитата (jetistyum @ 16.05.2009 - 00:56)
трюк с time() - простой способ избежать кэширования ресурса

И приобрести проблемы с индексацией поисковками. rolleyes.gif

Спустя 1 минута (16.05.2009 - 02:02) jetistyum написал(а):
так так.. поподробнее, что за проблемы???

Спустя 1 минута, 9 секунд (16.05.2009 - 02:03) jetistyum написал(а):
может ты не обратил внимания - это всего лишь путь к картинке с каптчей....
или может я чего-то не знаю.. колись!

Спустя 4 минуты, 55 секунд (16.05.2009 - 02:08) FatCat написал(а):
Боты поисковок индексируют такие URL как разные адреса, и со временем, пересканируя страницу, количество таких адресов замеченных поисковками будет накапливаться.
Если забудешь отрубить их в robots.txt, с точки зрения поисковок у тебя на сайте много одинаковых и малоинформативных страниц, что не способствует успешному продвижению информативных страниц. Принцип "еще с сайта" вроде бы используется всеми поисковками.

Спустя 3 минуты, 11 секунд (16.05.2009 - 02:11) FatCat написал(а):
Кстати, про отрубание через robots.txt...
По моим наблюдениям, поисковки выполняют эти инструкции, и не включают в индекс запрещенные страницы, но... бот их, гадина, сканирует даже охотнее, чем разрешенные. И в своих молчаливых оценках рейтинга твоего сайта учитывает, мерзавец...

Спустя 7 минут, 17 секунд (16.05.2009 - 02:18) jetistyum написал(а):
это все понятно smile.gif
но картинка есть картинка, ее нечего сканировать... ссылка на ресурс картинки может меняться ..... но думаю это никак не скажется на поисковиках....
единственное почему это плохо - перегенерируется каждый раз контент странички, которая в ином случае могла бы быть закэшированной..... и я тоже предпочитаю использовать хедеры, запрещающие кэширование..
но всетаки думаю что это не проблема для поисковиков, когда урл картинки будет меняться... но я не эксперт, спорить не буду.. ты, думаю, СЕО-шник с большим стажем чем я smile.gif)

Спустя 5 часов, 20 минут, 54 секунды (16.05.2009 - 07:39) twin написал(а):
Тааак... Приплыли. Я этот трюк давно использую, а тут вона чё...
А можно поточнее, таки влияют на индексацию разные пути именно к картинкам, не в href ссылок, а именно в src?
Блин, чует моё сердце, все придется переделывать sad.gif

Спустя 2 часа, 55 минут, 13 секунд (16.05.2009 - 10:34) jetistyum написал(а):
Держись, Твин, мне кажется всё обойдется smile.gif

Спустя 3 часа, 24 минуты, 24 секунды (16.05.2009 - 13:59) twin написал(а):
Вот сижу - молюсь.
FatCat, приди! Развей сомнения...


Спустя 6 часов, 16 минут, 2 секунды (16.05.2009 - 20:15) lawbreaker написал(а):
bla.php
PHP
<?php
session_start
();
$_SESSION['za'] = rand(100000,999999);
$z $_SESSION['za'];
// create a blank image
$image imagecreate(10075);

for (
$i=$a=80;$i<$a;$i++)
{

imageline($image$i*8200 $i*255);

}
for (
$i=1,$a 100;$i<$a;$i++)
{

imageline($image,  $i*100  $i*0   255);

}

$o rand(10,50);
$u rand(5,40);

// write the string at the top left
 
imagestring($image5$o$u$z100);


// fill the background color
$bg imagecolorallocate($image200200220);

// output the picture
header("Content-type: image/png");
imagepng($image);


add.php
PHP
elseif (!$_POST['1'] AND !$_POST['2'] AND $_POST['3'])
{

session_start();
echo 
$_SESSION['za'];
 
// для сессий ето
echo "<b>Bitte geben Sie die Zahl, die auf dem Bild abgebildet ist, in das Feld ein.</b><br>";
echo 
'<img src="bla.php?'.time().'">';
echo 
"<form action=add.php?act=2 method=POST>
<input type=text name=ca size=8>
<input type=hidden name=cat value='"
.$_POST['cat']."'>
<input type=hidden name=ucat value='"
.$_POST['ucat']."'>
<input type=hidden name=uucat value='"
.$_POST['uucat']."'>
<input type=submit name=4>
"
;
}


$_SESSION['za'] выводит число, но не такое как на картинке

Спустя 22 часа, 13 минут, 10 секунд (17.05.2009 - 18:28) lawbreaker написал(а):
поможыте?

Спустя 3 месяца, 1 день, 6 часов, 1 минута, 41 секунда (19.08.2009 - 00:30) Владимр написал(а):
Цитата (twin @ 16.05.2009 - 04:39)
Тааак... Приплыли. Я этот трюк давно использую, а тут вона чё...
А можно поточнее, таки влияют на индексацию разные пути именно к картинкам, не в href ссылок, а именно в src?
Блин, чует моё сердце, все придется переделывать sad.gif

Да влияют, особенно если с каждым заходом разный путь.
Просто закройте картинку от поисковика noindex nofollow и будет он вас любить.


_____________
Я Андрей и мне 14 лет :)
И ни как не дождусь когда HardWoman меня удалит
Быстрый ответ:

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