Не работает капча при регистрации

M
На сайте с 01.10.2014
Offline
61
779

Всем привет. Делаю регистрацию на сайте и столкнулся с такой проблемой, что при любом, то есть правильном или неправильном вводе капчи, всегда выводится сообщение, что капча введена неправильно. Вообще, если я делаю форму и обработчик этой формы в двух разных файлах, то все работает хорошо, но если я соединяю их в одном файле, то капча просто не хочет работать. Вот сам код:

<?php

if(isset($_POST['submit'])) {

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
if (isset($_POST['r_password'])) { $r_password=$_POST['r_password']; if ($r_password =='') { unset($r_password);} }

if (isset($_POST['code'])) { $code = $_POST['code']; if ($code == '') { unset($code);} }

if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset($email);} }


if (empty($login) or empty($password)or empty($code) or empty($email) or ($password != $r_password ))
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");

}
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{exit ("Неверно введен е-mail!");}


function generate_code()
{

$hours = date("H");
$minuts = substr(date("H"), 0 , 1);
$mouns = date("m");
$year_day = date("z");

$str = $hours . $minuts . $mouns . $year_day;
$str = md5(md5($str));
$str = strrev($str);
$str = substr($str, 3, 6);



$array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
srand ((float)microtime()*1000000);
shuffle ($array_mix);

return implode("", $array_mix);
}

function chec_code($code)
{
$code = trim($code);

$array_mix = preg_split ('//', generate_code(), -1, PREG_SPLIT_NO_EMPTY);
$m_code = preg_split ('//', $code, -1, PREG_SPLIT_NO_EMPTY);

$result = array_intersect ($array_mix, $m_code);
if (strlen(generate_code())!=strlen($code))
{
return FALSE;
}
if (sizeof($result) == sizeof($array_mix))
{
return TRUE;
}
else
{
return FALSE;
}
}


if (!chec_code($_POST['code']))
{
exit ("Вы ввели неверно код с картинки.");
}

$login = stripslashes($login);
$login = htmlspecialchars($login);

$password = stripslashes($password);
$password = htmlspecialchars($password);

$login = trim($login);
$password = trim($password);



if (strlen($login) < 3 or strlen($login) > 15) {

exit ("Логин должен состоять не менее чем из 3 символов и не более чем из 15.");

}
if (strlen($password) < 3 or strlen($password) > 15) {

exit ("Пароль должен состоять не менее чем из 3 символов и не более чем из 15.");

}

if (empty($_FILES['fupload']['name']))
{

$avatar = "/wp-content/uploads/avatars/net-avatara.jpg";
}



$password = md5($password);

$password = strrev($password);

$password = $password."b3p6f";

include ("bd.php");


$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {

exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");

}


$result2 = mysql_query ("INSERT INTO users (login,password,avatar,email,date) VALUES('$login','$password','$avatar','$email',NOW())");

if ($result2=='TRUE')
{

$result3 = mysql_query ("SELECT id FROM users WHERE login='$login'",$db);
$myrow3 = mysql_fetch_array($result3);
$activation = md5($myrow3['id']).md5($login);

$subject = "Подтверждение регистрации";//тема сообщения
$message = "Здравствуйте! Спасибо за регистрацию на citename.ru\nВаш логин: ".$login."\n
Перейдите по ссылке, чтобы активировать ваш аккаунт:\nhttp://wp-content/themes/point/register/activation.php?login=".$login."&code=".$activation."\nС уважением,\n
Администрация citename.ru";//содержание сообщение
mail($email, $subject, $message, "Content-type:text/plane; Charset=utf-8\r\n");//отправляем сообщение

echo "Вам на E-mail выслано письмо с cсылкой, для подтверждения регистрации. Внимание! Ссылка действительна 1 час. <a href='/wp-content/themes/point/register/index.php'>Главная страница</a>"; //говорим о отправленном письме пользователю
}

else {
exit ("Ошибка! Вы не зарегистрированы.");

}

}
?>
<?php get_header(); ?>
<div id="page" class="single">
<div class="content">
<article class="ss-full-width">
<div id="content_box" >
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class('g post'); ?>>

<div class="post-content box mark-links">
<h2>Регистрация</h2>
<form class="login-form" action="" method="post" enctype="multipart/form-data">

<p>
<label><b style="padding-right: 40px;">Ваш логин </b> <input class="reg-input" name="login" type="text" size="15" maxlength="15"> </label>
<p class="reg-info">Логин должен быть не меньше 3 и не больше 15 символов.</p>
</p>

<p>
<label><b style="padding-right: 29px;">Ваш пароль</b> <input class="reg-input" name="password" type="password" size="15" maxlength="15"></label>
<p class="reg-info">В целях безопасности длина пароля не может быть меньше 8 символов.</p>
</p>
<p>
<label><b style="padding-right: 29px;margin-left: -81px;">Подтверждение пароля</b> <input class="reg-input" name="r_password" type="password" size="15" maxlength="15"></label>
<p class="reg-info">Повторите пароль</p>
</p>

<p>
<label><b style="padding-right: 39px;">Ваш E-mail </b><input class="reg-input" name="email" type="text" size="15" maxlength="100"></label>
<p class="reg-info">Нужен для подтверждения регистрации, а также на случай обратной связи.</p>
</p>
<!-- Вводим е-майл -->



<div style="margin-left: 120px;">
<p>Введите код с картинки<br>

<p><img src="/wp-content/themes/point/register/code/my_codegen.php"></p>
<p><input type="text" name="code"></p>


<p>
<input type="submit" name="submit" value="Зарегистрироваться">
</div>

</p></form>
<?php the_content(); ?>
<?php wp_link_pages(array('before' => '<div class="pagination">', 'after' => '</div>', 'link_before' => '<span class="current"><span class="currenttext">', 'link_after' => '</span></span>', 'next_or_number' => 'next_and_number', 'nextpagelink' => __('Next','mythemeshop'), 'previouspagelink' => __('Previous','mythemeshop'), 'pagelink' => '%','echo' => 1 )); ?>
</div><!--.post-content box mark-links -->
</div><!--.g post-->

<?php endwhile; ?>
</div>
</article>
<?php get_footer(); ?>

Что может быть не так?

Лучшая вап клик пп для выкупа подписок (https://mcwap.ru/?r=1153)
Ragnarok
На сайте с 25.06.2010
Offline
226
#1
mortido:

Что может быть не так?

я так понимаю, chec_code возвращает false?

так добавьте внутрь проверки (самый топорный способ:

die(VAR_DUMP($_POST));
), найдите на каком этапе коды не совпадают, потом проверяйте почему
//TODO: перестать откладывать на потом
M
На сайте с 01.10.2014
Offline
61
#2

["code"]=> string(6) "8e0210"

вот это выводит. и это вроде бы тот код, который я и ввел. так что не так может быть?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий