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

    $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(); чтобы запросы в БД пока не добавлялись никакие.
И внимательно смотришь, входящие данные и поведение скрипта с ними, например эта регулярка пропустила такой текст, если не знаешь почему, пишешь сюда текст и регулярку smile.gif

Читаем текст: Если не рабочая капча, срабатывает этот отрезок:
else{ echo "Код с картинки ввёден неверно. Попробуйте ещё раз"; }
Вопрос, где тут $er , которая отмечает, что ошибка существует хотя бы одна?


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

Как думаешь, если $_POST['ok'] не пустая, считается ли, что $_POST уже как минимум количество - 1? То есть false никогда не вернёт второе условие, а значит оно лишнее.

В регулярке отсутствует начало и конец строки, а значит ищем лишь в середине совпадение, а не во всей строке.

Спустя 27 минут, 51 секунда (29.05.2011 - 17:55) mav1 написал(а):
вот! спасибо за совет! Дело было в самом простейшем - в том, что не фиксиорвалась ошибка)) это ж надо было такое прое....хм...


СПАСИБО!
Быстрый ответ:

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