$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(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');
}
А сейчас у меня 2 проблемы :
1) игнорится проверка ссылки на правильность, то есть все что угодно туда можно писать и укоротится
2) капча работает, но её результат игнорится опять же. То есть, если ввести символы неправильно, предупреждение появится о том что символы введены неправильно, но ссылка все равно укоротится.
То есть что-то напутано в вложенных друг в друга условиях. Посмотрите плиз кто-нибудь, что не так...
Спустя 10 часов, 52 минуты, 45 секунд (27.05.2011 - 09:03) mav1 написал(а):
ну парни ))
Спустя 3 минуты, 56 секунд (27.05.2011 - 09:07) XCross написал(а):
Код в BB код оформи!
Спустя 3 минуты, 30 секунд (27.05.2011 - 09:10) mav1 написал(а):
Цитата (kmaks @ 27.05.2011 - 06:07) |
Код в BB код оформи! |
в смысле ? Код в тегах "CODE"
Спустя 3 минуты, 57 секунд (27.05.2011 - 09:14) XCross написал(а):
Нужно PHP
Спустя 3 минуты, 56 секунд (27.05.2011 - 09:18) mav1 написал(а):
Цитата (kmaks @ 27.05.2011 - 06:14) |
Нужно PHP |
сделано
Спустя 50 минут, 39 секунд (27.05.2011 - 10:09) tatti написал(а):
может регэкспа кириллицу не любит? порпобуй слать ей utf-8 и добавь соответственно модификатор u попробуй
Спустя 6 часов, 33 минуты (27.05.2011 - 16:42) mav1 написал(а):
с кириллицей все отлично, проверял. Дело в условиях..
Спустя 5 часов, 21 минута, 4 секунды (27.05.2011 - 22:03) Pirat_BillY написал(а):
Перед unset добавь }
Спустя 2 минуты, 9 секунд (27.05.2011 - 22:05) Pirat_BillY написал(а):
Лучше юзай phpDesigner - там подсвечиваются ошибки, поэтому можно очень быстро найти синтаксическую и не только ошибку
Спустя 1 день, 19 часов, 3 минуты, 21 секунда (29.05.2011 - 17:09) mav1 написал(а):
Цитата (Pirat_BillY @ 27.05.2011 - 19:03) |
Перед unset добавь } |
нет, так не работает.
Вот весь код, чтобы не вводить в заблуждение :
<?php
session_start();
?>
<?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;
?>
Спустя 19 минут, 3 секунды (29.05.2011 - 17:28) inpost написал(а):
mav1
После каждого условия добавляй echo 1; 2 3 4 5, то есть запустил скрипт, посмотрел, какие цифрвывелись, нашел ущербное место.
В конце ещё добавил exit(); чтобы запросы в БД пока не добавлялись никакие.
И внимательно смотришь, входящие данные и поведение скрипта с ними, например эта регулярка пропустила такой текст, если не знаешь почему, пишешь сюда текст и регулярку
Читаем текст: Если не рабочая капча, срабатывает этот отрезок:
else{ echo "Код с картинки ввёден неверно. Попробуйте ещё раз"; }
Вопрос, где тут $er , которая отмечает, что ошибка существует хотя бы одна?
if(!empty($_POST['ОК'])) { if(count($_POST)>0)
Как думаешь, если $_POST['ok'] не пустая, считается ли, что $_POST уже как минимум количество - 1? То есть false никогда не вернёт второе условие, а значит оно лишнее.
В регулярке отсутствует начало и конец строки, а значит ищем лишь в середине совпадение, а не во всей строке.
После каждого условия добавляй echo 1; 2 3 4 5, то есть запустил скрипт, посмотрел, какие цифрвывелись, нашел ущербное место.
В конце ещё добавил exit(); чтобы запросы в БД пока не добавлялись никакие.
И внимательно смотришь, входящие данные и поведение скрипта с ними, например эта регулярка пропустила такой текст, если не знаешь почему, пишешь сюда текст и регулярку
Читаем текст: Если не рабочая капча, срабатывает этот отрезок:
else{ echo "Код с картинки ввёден неверно. Попробуйте ещё раз"; }
Вопрос, где тут $er , которая отмечает, что ошибка существует хотя бы одна?
if(!empty($_POST['ОК'])) { if(count($_POST)>0)
Как думаешь, если $_POST['ok'] не пустая, считается ли, что $_POST уже как минимум количество - 1? То есть false никогда не вернёт второе условие, а значит оно лишнее.
В регулярке отсутствует начало и конец строки, а значит ищем лишь в середине совпадение, а не во всей строке.
Спустя 27 минут, 51 секунда (29.05.2011 - 17:55) mav1 написал(а):
вот! спасибо за совет! Дело было в самом простейшем - в том, что не фиксиорвалась ошибка)) это ж надо было такое прое....хм...
СПАСИБО!
СПАСИБО!