[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Привязать капчу к сервису
kav1
Всем привет.

Есть сервис коротких ссылок, в нем есть форма :

            <center><h2 id="h2">
Сервис коротких ссылок {site_url}
</h2></center>

<div
id="body_form">
<div
class="d18">
<div
class="d19">
<div
class="d20">
<div
class="form">
<form
action="/" method="post" id="form">
<div
id="submit">
<input
name="ОК" type="submit" value="Сократить...">
</div>
<div
class="input">
<input
type="text" name="URL" value="http://" id="text"/>
</div>
</form>
</div>
</div>
</div>
</div>
</div>

<center><br>
<p>
{ERROR}</p>
<p>
{SHORT}</p>


{ERROR} - это тут выводится ошибка, если урла была введена неверно
{SHORT} - тут выводится короткая ссылка, если всё прошло удачно

В самом скрипте сервиса есть такая проверка :

  if((!$url) || !preg_match('|[a-zа-я0-9^]+\.[a-zа-я]{1,4}|is', $url))
{

$er[] = 'error';
$error = showBlock('error');
}


это тут проверяется формат ссылки, если он неверен, то выводится сообщение об ошибке и ссылка не будет укорочена.

Вопросик - как бы сюда прикрутить капчу, пример вывода которой такой :

<?php
session_start();
?>
<form
action="" method="post">
<p>
Enter text shown below:</p>
<p><img
src="./?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<p><input
type="text" name="keystring"></p>
<p><input
type="submit" value="Check"></p>
</form>
<?php

if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
echo "Всё верно";
}else{
echo "Код с картинки ввёден неверно. Попробуйте ещё раз";
}
}

unset($_SESSION['captcha_keystring']);
?>


Как изменить этот код, и главное, как его привязать к кнопочке "сократить" ? Весь день с утра голову ломаю...



Спустя 20 часов, 17 минут, 43 секунды (24.05.2011 - 09:35) mav1 написал(а):
хехе, неужто никто не подскажет )

Спустя 1 час, 58 минут, 26 секунд (24.05.2011 - 11:34) silius написал(а):
А поразмыслить самому никак?

<!-- В самом начале файла открыть сессию-->
<form action="/" method="post" id="form">
<div
class="input">
<input
type="text" name="URL" value="http://" id="text"/>
</div>
<img
src="./?<?php echo session_name()?>=<?php echo session_id()?>"><br>
<input
type="text" name="keystring">
<div
id="submit">
<input
name="ОК" type="submit" value="Сократить...">
</div>
</form>



В файле обработки:

if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){

if((!$url) || !preg_match('|[a-zа-я0-9^]+\.[a-zа-я]{1,4}|is', $url))
{
$er[] = 'error';
$error = showBlock('error');
}

}
else{
echo "Код с картинки ввёден неверно. Попробуйте ещё раз";
}
}

unset($_SESSION['captcha_keystring']);

Спустя 1 минута, 13 секунд (24.05.2011 - 11:35) Игорь_Vasinsky написал(а):
У тя есть форма.
В неё вставляй капчу.
Ты знаешь где проверяется форма - вставляй туды проверку капчи.

Спустя 39 минут, 25 секунд (24.05.2011 - 12:14) mav1 написал(а):
silius, спасибо, однако пок что не работает. Теперь мои файлы имеют такой вид :

<?php
$start_time = microtime(true);

include_once './conf.php';
include_once './data/db.php';
$surl = SITE_URL;

if (file_exists('install.php')) { die(""); }

include_once './data/show_block.php';
$er = array();

$url = !empty($_POST['URL']) ? trim($_POST['URL']) : null;
$url = htmlspecialchars($url);

if(!empty($_POST['ОК']))
{

if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){

if((!$url) || !preg_match('|[a-zа-я0-9^]+\.[a-zа-я]{1,4}|is', $url))
{
$er[] = 'error';
$error = showBlock('error');
}

}
else{
echo "Код с картинки ввёден неверно. Попробуйте ещё раз";
}
}

unset($_SESSION['captcha_keystring']);

if(count($er) == 0)
{
include_once './data/model.php';
$short = getNameUrl(4);

if(searchUrl($url) == false)
{

if(searchShort($short) == true)
{
$short = searchShort($short);
}
addUrl($url, $short);

$shortUrl = showUrl();
$s = showBlock('short');
$t = str_replace("{url}","$url",$s);
$d = str_replace("{shorturl}","$shortUrl",$t);
$short = $d;
}
else
{
$shortUrl = searchUrl($url);
$s = showBlock('short');
$t = str_replace("{url}","$url",$s);
$d = str_replace("{shorturl}","$shortUrl",$t);
$short = $d;
}


}
}


if(!isset($error))unset($error);
if(!isset($short))unset($short);

$rcount = mysql_query("SELECT COUNT(*) AS `id` FROM `urls`") or die(mysql_error());
$rc = mysql_fetch_assoc($rcount);

include_once './data/class.template.php';
$parse->get_tpl('template/index.template.php');
$parse->set_tpl('{ERROR}',$error);
$parse->set_tpl('{SHORT}',$short);
$parse->set_tpl('{site_url}',$surl);
$parse->set_tpl('{count}',$rc['id']);
$exec_time = microtime(true) - $start_time;
$exec_time = round($exec_time, 3);
$parse->set_tpl('{time}',$exec_time);
$parse->tpl_parse();
print $parse->template;

?>



Это был исполнительный, а вот вывод формы :

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>
Сервис коротких ссылок.</title>
</head>
<body>

<center><h2
id="h2">
Сервис коротких ссылок
</h2></center>

<div
id="body_form">
<div
class="d18">
<div
class="d19">
<div
class="d20">
<div
class="form">
<form
action="/" method="post" id="form">
<div
class="input">
<input
type="text" name="URL" value="http://" id="text"/>
</div>
<img
src="./?<?php echo session_name()?>=<?php echo session_id()?>"><br>
<input
type="text" name="keystring">
<div
id="submit">
<input
name="ОК" type="submit" value="Сократить...">
</div>
</form>
</div>
</div>
</div>
</div>
</div>

<center><br>
<p>
{ERROR}</p>
<p>
{SHORT}</p>

<br></center>

</body>
</html>



Теперь не работает проверка на формат ссылки (даже пустая сокращается, или например с пробелами), и картинка капчи не грузится(((

Спустя 8 часов, 58 минут, 16 секунд (24.05.2011 - 21:12) silius написал(а):
ну в файле обработки тоже желательно сессию включить wink.gif
а картинка не грузится потому что путь к картинке надо выставить правильный наверняка

Спустя 1 день, 23 часа, 8 минут, 46 секунд (26.05.2011 - 20:21) mav1 написал(а):
silius, спасибо, сделал как вы написали. Теперь картинка грузится, но осталось две проблемы :

1) игнорится проверка ссылки на правильность, то есть все что угодно туда можно писать и укоротится

2) капча работает, но её результат игнорится опять же. То есть, если ввести символы неправильно, предупреждение появится о том что символы введены неправильно, но ссылка все равно укоротится.

Плиз кто-нибудь посмотрите ещё, так хочется добить этот скриптик
Быстрый ответ:

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