Есть сервис коротких ссылок, в нем есть форма :
<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 написал(а):
ну в файле обработки тоже желательно сессию включить
а картинка не грузится потому что путь к картинке надо выставить правильный наверняка
а картинка не грузится потому что путь к картинке надо выставить правильный наверняка
Спустя 1 день, 23 часа, 8 минут, 46 секунд (26.05.2011 - 20:21) mav1 написал(а):
silius, спасибо, сделал как вы написали. Теперь картинка грузится, но осталось две проблемы :
1) игнорится проверка ссылки на правильность, то есть все что угодно туда можно писать и укоротится
2) капча работает, но её результат игнорится опять же. То есть, если ввести символы неправильно, предупреждение появится о том что символы введены неправильно, но ссылка все равно укоротится.
Плиз кто-нибудь посмотрите ещё, так хочется добить этот скриптик
1) игнорится проверка ссылки на правильность, то есть все что угодно туда можно писать и укоротится
2) капча работает, но её результат игнорится опять же. То есть, если ввести символы неправильно, предупреждение появится о том что символы введены неправильно, но ссылка все равно укоротится.
Плиз кто-нибудь посмотрите ещё, так хочется добить этот скриптик