1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

1.1.2 Обнаружено нарушение безопасности

Тема в разделе "Вопросы и ответы по XenForo Framework", создана пользователем gerk, 16.07.2012.

Загрузка
  1. gerk

    gerk Местный

    Регистрация:
    12.05.12
    Сообщения:
    6
    Симпатии:
    0
    Версия XF:
    1.1.2
    Здравствуйте. Я создал новую страницу по этому уроку, подключил к ней возможность ПХП/ХТМЛ. И вставил небольшой скрипт регистрации. И когда я нажимаю "Зарегистрироваться" мне пишет: "Обнаружено нарушение безопасности. Пожалуйста, нажмите "Назад" в браузере, обновите страницу и попробуйте снова."
    Как это можно убрать?
    Вот скрипт регистрации:
    PHP:
    <?php
    define
    ('INCLUDE_CHECK',true);
    include 
    "connect.php";
        if (isset(
    $_POST['login']))
            {
            
    $login $_POST['login'];
            
    $email $_POST['email'];
            
    $pass $_POST['passwd'];
            
    $repass $_POST['repasswd'];
     
                
    $login addslashes(trim($login));
                
    $email addslashes(trim($email));
                
    $pass addslashes(trim($pass));
                
    $repass addslashes(trim($repass));
     
            if (empty(
    $login) || empty($pass) || empty($email) || empty($repass))
                {
                    echo 
    'Не все поля заполнены.';
                }
         
            elseif (
    ereg("[^0-9a-zA-Z_-]"$login$Txt))
                {
                    echo 
    "Логин введен не корректно.";
                }
             
            elseif (
    ereg("[^0-9a-zA-Z_-]"$pass$Txt))
                {
                    echo 
    "Пароль введен не корректно.";
                }
         
            elseif (
    ereg("[^0-9a-zA-Z_-]"$repass$Txt))
                {
                    echo 
    "Повтор пароля введен не корректно.";
                }
         
        else
                {
                    
    $login_proverka mysql_query("SELECT $db_columnUser FROM $db_table WHERE $db_columnUser='$login'") or ("Запрос к базе завершился ощибкой.");
     
                if (
    mysql_num_rows($login_proverka))
                {
                    echo 
    "Акаунт <b>".$login."</b> уже существует.";
                }
            elseif ((
    strlen($login) < 4) or (strlen($login) > 8))
         
                {
                    echo 
    "Логин должен содержать не меньше 4 символов и не больше 8.";
                }
            elseif ((
    strlen($pass) < 4) or (strlen($pass) > 15))
         
                {
                    echo 
    "Пароль должен содержать не меньше 4 символов и не больше 15.";
                }
             
            elseif ((
    strlen($repass) < 4) or (strlen($repass) > 15))
                {
                    echo 
    "Повтор пароля должен содержать не меньше 4 символов и не больше 15.";
                }
            elseif (
    $pass != $repass)
                {
                    echo 
    "Пароли не совпадают.";
                }
            else
                {
                    
    $cp md5($pass);
            
    mysql_query("INSERT INTO $db_table ($db_columnUser,$db_columnPass,$db_email) VALUES('$login','$cp','$email')") or die ("Запрос к базе завершился ощибкой.");
            echo 
    'Аккаунт <b>'.$login.'</b> успешно зарегестрирован.';
         
                } 
            } 
        }
    ?>
    <form action="" method="post">
                                    <p><center><br />Логин:<br /><input type=text name=login /><br /></center></p>
                                    <p><center><br />email:<br /><input type=text name=email /><br /></center></p>
                                    <p><center><br />Пароль:<br /><input  type=password name=passwd  /><br /></center></p>
                                    <p><center><br />Повторите пароль:<br /><input  type=password name=repasswd /><br /></center></p>
                                    <p><br /><center><input type="submit" name="submit" value="Отправить" /></center><br /></p>
    </form>
     
  2. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    Все формы, обрабатываемые форумом должны содержать скрытый элемент _xfToken. Без него форум выдет ошибку.
     
    Patriarh и gerk нравится это.
  3. gerk

    gerk Местный

    Регистрация:
    12.05.12
    Сообщения:
    6
    Симпатии:
    0
    Версия XF:
    1.1.2
    Нашел вот это:
    PHP:
    $visitor XenForo_Visitor::getInstance();
    $csrf $visitor->get('csrf_token_page');
    и вот это:
    PHP:
    <input type="hidden" name="_xfToken" value="'.$csrf.'" />
    но не знаю куда это все добавить
     
  4. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    В своем скрипте после строчки
    PHP:
    include "connect.php";
    вставляйте
    PHP:
    $visitor XenForo_Visitor::getInstance();
    $csrf $visitor->get('csrf_token_page');
    Потом до закрывающего тэга </form> вставляйте это:
    PHP:
    <input type="hidden" name="_xfToken" value="<?php echo $csrf?>" />
     
    Jumuro и gerk нравится это.
  5. gerk

    gerk Местный

    Регистрация:
    12.05.12
    Сообщения:
    6
    Симпатии:
    0
    Версия XF:
    1.1.2
    Спасибо все получилось
     

Поделиться этой страницей