[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: не работает регистрация
Гость_Людмила
Делала все как написано. анализируя, только не пойму что произошло, при регистрации выдает следующее

Цитата
Неверное перенаправление на странице
 
          Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
     
  Эта проблема может возникать при отключении или запрещении принятия кук.




Спустя 3 минуты, 10 секунд (27.09.2011 - 14:40) twin написал(а):
А кукисы включены?

Спустя 45 минут, 44 секунды (27.09.2011 - 15:26) Гость_Людмила написал(а):
Что-то не работает, я ни выключала куки - они работают
На другом сайте все работает
А здесь - нет
Что я могла сделать не так?

Спустя 1 час, 59 минут, 23 секунды (27.09.2011 - 17:25) inpost написал(а):
Где регистрация? У нас на форуме?! О_о, или на твоём сайте? Вообще ничего не понятно.

Спустя 1 минута, 17 секунд (27.09.2011 - 17:27) Игорь_Vasinsky написал(а):
Это походу её сайт и мудрёж с ЧПУ

Спустя 19 минут, 27 секунд (27.09.2011 - 17:46) Гость_Людмила написал(а):
Цитата
  /**   
* Function of formation of GET-parametres   
* Функция формирования GET-параметров   
*/   
  function href() 
  { 
      global $GET;   
      $tmp = $GET;     
      $href = ''; 
      $host = IRB_HOST; 
         
      $arg = func_get_args(); 
                 
      if(is_array($arg[0])) 
          $arg = $arg[0];     

      if(defined('IRB_ADMIN')) 
          $host .= 'admin/';       
       
      if($arg[0] == 'host') 
          return IRB_HOST . $href; 
                     
        foreach($arg as $var)     
        { 
            $param = explode('=', $var);   
             
            if(array_key_exists($param[0], $tmp)) 
                $tmp[$param[0]] = $param[1];   
            else 
                die('The variable <b>'. $param[0] .'</b> is not defined');   
        } 
       
        $cnt = array_flip(array_keys($tmp));
        $tmp = array_slice($tmp, 0, $cnt[$param[0]] + 1); 
                 
        foreach($tmp as $var => $val)   
          if(IRB_REWRITE == 'on')   
              $href .= '/'. $val;         
          elseif(!empty($val)) 
              $href .= '&'. $var .'='. $val; 
                   
             
      if(IRB_REWRITE == 'on') 
          return $host . trim($href, '/0'); 
      else 
          return $host .'?'. trim($href, '&');         
  }

/**
* Function of Redirections
* Функция перенаправления
*/   
  function reDirect()
  { 
        $arguments = func_get_args();
         
        if(count($arguments))
        {                           
            header('location: '. href($arguments));
            exit();
        }
        else
        {
            header('location: '. str_replace("/index.php", "", $_SERVER['HTTP_REFERER']));
            exit();
        }       
  }



До того как поставила функции - писал, что нет редиректа, а потом стал выдавать сообщение в начале

Спустя 5 минут, 59 секунд (27.09.2011 - 17:52) inpost написал(а):
С функциями проблем нет. Ты лучше в скрипте посмотри, где прописан редирект. У тебя проблема с условиями, из-за этого редирект вызывает редирект по кругу и не может остановиться. Где-то ошибся.
Можешь код страницы сюда выложить, за одно указать, где именно этот редирект активируется.

Спустя 29 минут, 5 секунд (27.09.2011 - 18:21) Гость_Людмила написал(а):
Цитата
<?php

/**
* Router
* Роутер 
* @author IT studio IRBIS-team
* @copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/
    if(!defined('IRB_KEY'))
    {
       header("HTTP/1.1 404 Not Found");      
       exit(file_get_contents('../../404.html'));
    } 
/////////////////////////////////////////////////////////
/** 
* Only for the registered users
* Только для зарегистрированных пользователей
*/          
   if(isset($_SESSION['user_data']))   
          $info[] = "Здравствуйте, <b>". htmlspecialchars($_SESSION['user_data']['namefirm']) ."</b>! ";
     else 
        redirect('page=register', 'rem=read');


/**
* Define the name of the current catalogue
* Определяем название текущего каталога
*/
    $modul = basename(dirname(__FILE__));

/**
* The switch of controllers
* Переключатель контроллеров
*/
    if($GET['rem'] && file_exists('./modules/'. $modul .'/'. $GET['rem'] .'_controller.php'))
        include './modules/'. $modul .'/'. $GET['rem'] .'_controller.php';
    else
{
       header("HTTP/1.1 404 Not Found");     
       exit(file_get_contents('./404.html'));
}

/**
* Подготовка к выводу
* Preparation for a conclusion
*/
include './modules/'. $modul .'/view.php';






registration_controller


<?php

/**
* Registration (the controller of creation of the accounting record)
* Регистрация (контроллер создания учетной записи)
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/

if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../../404.html'));
}
//////////////////////////////////////////////////////////

/**
* We connect a file of the MySQL functions
* Подключаем файл функций MySQL
*/

include './libs/mysql.php';

/**
* Check of the entered data
* Проверка введенных данных
*/

if($ok)
{
if(!$POST['value1'])
$info[] = 'Не введено название фирмы';
// Ограничим длину логина, чтоб не портить дизайн
elseif(mb_strlen($POST['value1']) > 30)
$info[] = 'Длина названия фирмы не должна превышать 30 символов';

// Проверим наличие пароля
if(!$POST['value2'])
$info[] = 'Не введен пароль';
elseif(mb_strlen($POST['value2']) < 8)
$info[] = 'Пароль не надежен, меньше 8-ми символов.';
elseif($POST['value2'] !== $POST['value3'])
$info[] = 'Пароли не совпадают';

// Проверим наличие БИН
if(!$POST['value4'])
$info[] = 'Не введен БИН';

// Проверим наличие Реквизитов
if(!$POST['value5'])
$info[] = 'Не введены реквизиты';

// Проверим наличие БИК
if(!$POST['value6'])
$info[] = 'Не введен БИК';

// Проверим наличие телефона
if(!$POST['value8'])
$info[] = 'Не введен телефон для связи по заказу';

// А вот и почта. Сначала наличие
if(!$POST['value7'])
$info[] = 'Нужен почтовый адрес для активации аккаунта.';

// А потом правильность
elseif(!preg_match("/^[a-z0-9_.-]+@([a-z0-9]+\.)+[a-z]{2,6}$/i", $POST['value7']))
$info[] = 'Не верный формат E-mail';


$res = mysqlQuery("SELECT COUNT(*) AS `cnt`
FROM `"
. IRB_DBPREFIX ."client`
WHERE `namefirm` = '"
. escapeString($POST['value1']) ."'"
);


if(mysql_result($res, 0) > 0)
$info[] = 'В базе уже содержится такое название <b>'. htmlspecialchars($POST['value1'])
.
'</b>. Введите другое';

/**
* Registration of the new user
* Регистрация нового пользователя
*/


if(!count($info))
{
include './modules/register/functions.php';

mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."client`
SET
`namefirm` = '"
. escapeString($POST['value1']) ."',
`bin` = '"
. escapeString($POST['value4']) ."',
`rekvizity` = '"
. escapeString($POST['value5']) ."',
`bic` = '"
. escapeString($POST['value6']) ."',
`email` = '"
. escapeString($POST['value7']) ."',
`telefon` = '"
. escapeString($POST['value8']) ."',
`data` = '"
. date() ."',
`hash` = '"
. md5($POST['value2'] . IRB_SALT) ."'"
);

$id = mysql_insert_id();
$hash = md5(randStr() . $id);

mysqlQuery("UPDATE `". IRB_DBPREFIX ."client`
SET `hash` = '"
. $hash ."'
WHERE `idclient` = '"
. $id ."'
"
) ;

$_SESSION['email'] = $POST['value7'];

$subject = "Активация учетной записи";
$message = "С Вашего электронного почтового адреса поступила заявка на
aктивацию учетной записи на сайте <b>"
. $_SERVER['HTTP_HOST'] ."</b><br>\n
Для доступа в аккаунт пройдите по <a href=\"".
href('rem=activate', 'id='. $hash) ."\" >этой ссылке</a><br />
и введите в поле активации этот код: <b>"
. $hash ."</b><br>\n
Код действителен до ". date('d.m.Y', time() + 60 * 60 * 24 * 10);

include './libs/irb_mailer.php';
$mail = new IRB_Mailer($message);

$mail -> createTo($POST['value7']);
$mail -> createSubject($subject);
$mail -> createFrom(IRB_SUPPORT_EMAIL, IRB_SUPPORT_EMAIL);
$mail -> setHtml();
$error = $mail -> sendMail();

reDirect('rem=activate','id=0');
}
}



activate_controller



<?php
/**
* The controller of activation of the accounting record
* Контроллер активации учетной записи.
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/

if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../../404.html'));
}
//////////////////////////////////////////////////////////

/**
* We connect a file of the MySQL functions
* Подключаем файл функций MySQL
*/

include './libs/mysql.php';

///////////////////////////////////////////////////////////
$error = true;

// Активация. Если код набран верно, берем по нему данные
if($ok && !empty($POST['value3']))
{

include './modules/register/functions.php';

if($user_data = getLogin($POST['value3'], true))
{

mysqlQuery("UPDATE `". IRB_DBPREFIX ."client`
SET `activate` = 1
WHERE `idclient` = '"
. $user_data['idclient'] ."'
"
) ;

$_SESSION['user_data'] = $user_data;


if($POST['value7'])
setAutologin($_SESSION['user_data']['idclient']);

// Удаляем устаревшие записи
$res = mysql_query("DELETE FROM `". IRB_DBPREFIX ."client`
WHERE `activate` != 1
AND `date` < NOW() - INTERVAL 10 DAY
"
);

reDirect('rem=office', 'id=0');
}
else
$info[] = IRB_LANG_INVLID_CODE;

}


$info[] = IRB_LANG_MAIL_FOR . (isset($_SESSION['email'])?$_SESSION['email']:'')
.
IRB_LANG_MAIL_END;



еще есть редирект в файле: exit_controller

Спустя 22 минуты, 30 секунд (27.09.2011 - 18:44) inpost написал(а):
Ты найди тот редирект, который вызывается(!). Перед каждый редиректом пропиши DIE('это тот редирект!');

Спустя 2 минуты, 24 секунды (27.09.2011 - 18:46) inpost написал(а):
Вверху у тебя есть (в первом файле)
/**  
* Only for the registered users
* Только для зарегистрированных пользователей
*/

if(isset($_SESSION['user_data']))
$info[] = "Здравствуйте, <b>". htmlspecialchars($_SESSION['user_data']['namefirm']) ."</b>! ";
else
redirect('page=register', 'rem=read');


Это в каком роутере? В роутере на странице регистрации? Если да, то в виду отсутствия СЕССИИ у тебя будет постоянно вызываться else, и редирект сам на себя.

Спустя 19 минут, 11 секунд (27.09.2011 - 19:05) Гость_Людмила написал(а):
Это у меня в index.php

<?php
/**
* The main router
* Главный маршрутизатор (роутер)
* @author IT studio IRBIS-team
* @copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);

ob_start();
session_start();

define('IRB_TRACE', true);
include './debug.php';
define('IRB_KEY', true);
include './config.php';
include './language/'. IRB_LANGUAGE .'.php';
include './variables.php';
include './libs/default.php';
include './libs/view.php';
$page = $GET['page'];

switch($GET['page'])
{
case 'main':
include './modules/main/router.php';
$page = $GET['id'];
break;


case 'register':
include './modules/register/router.php';
break;

case 'prom':
include './modules/prom/router.php';
break;
case 'miner':
include './modules/miner/router.php';
break;
case 'himrea':
include './modules/himrea/router.php';
break;
case 'dezinf':
include './modules/dezinf/router.php';
break;
case 'labpos':
include './modules/labpos/router.php';
break;
case 'obazs':
include './modules/obazs/router.php';
break;
case 'zakaz':
include './modules/zakaz/router.php';
break;

default:
include './modules/main/router.php';
break;
}

$content = ob_get_contents();
ob_end_clean();


//////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////

/**
* Формируем мета-теги
*/
$title = getMeta('title', $page);
$keywords = getMeta('keywords', $page);
$description = getMeta('description', $page);

/**
* Ссылка вход-выход
*/
if(!isset($_SESSION['user_data']))
$link_registr = '<a href="'.href('page=register', 'rem=read') .'">'. IRB_ENTER .'</a>';
elseif(isset($_SESSION['user_data']) == true)
$link_registr = '<a href="'.href('page=register', 'rem=office') .'">'. IRB_OFICE .'</a>&nbsp';
else
$link_registr = '<a href="'.href('page=register', 'rem=exit') .'">'. IRB_EXIT .'</a>';

include './skins/tpl/index.tpl';

Спустя 5 минут, 58 секунд (27.09.2011 - 19:11) Гость_Людмила написал(а):
Сессия открывается в главном индексе

Спустя 28 минут, 11 секунд (27.09.2011 - 19:39) inpost написал(а):
Вообще-то мы говорим не об сессии в целом, а конкретно о вот этой строчке:
   if(isset($_SESSION['user_data']))    
$info[] = "Здравствуйте, <b>". htmlspecialchars($_SESSION['user_data']['namefirm']) ."</b>! ";
else
redirect('page=register', 'rem=read');

Ты знаешь, что значит то условие? И так ты мне и не ответила, роутер тот для /register или для офиса?

Спустя 50 минут, 42 секунды (27.09.2011 - 20:30) Гость_Людмила написал(а):
Этот роутер для регистрации и для офиса, это вы точно подметили) только что исправлять не могу понять, т.к. он даже никакой ошибки, кроме этой не дает. Все перекрывает, а эта строчка была предназначена для заказа, я ее убрала, пока не разберусь.

Спустя 13 минут, 31 секунда (27.09.2011 - 20:44) Гость_Людмила написал(а):
Если Вы спрашиваете, про то что эта строчка предназначена для авторизации юзера, то это я знаю)), только что-то не правильно видимо работает, а где не могу понять, т.к. ошибка только эта.

Спустя 1 час, 40 минут, 38 секунд (27.09.2011 - 22:24) twin написал(а):
Эти строчки служат для защиты страниц от входа неавторизованных пользователей.
Зачем они тут? Разве можно запрещать вход неавтоизованным пользователям на страницу регистрации, а тем более авторизации?

Перенеси их в файл кабинета.

Спустя 22 минуты, 18 секунд (27.09.2011 - 22:47) inpost написал(а):
У тебя стоит защита, что если неавторизированный ПОЛЬЗОВАТЕЛЬ заходит, то его редиректит на СТРАНИЦУ РЕГИСТРАЦИИ.

Зарегистрированный юзер получает $_SESSION['user_name'], если её нет (!isset), значит пользователь не зарегистрирован.

Думаем головой, зачем на странице регистрации ставить защиту ОТ незарегистрированных пользователей? Эта защита нужна на страницах, куда могут попасть ТОЛЬКО зарегистрированные пользователи.

twin
Ты бы у себя проверил бы smile.gif Вдруг действительно в курсах такая путаница появилась smile.gif

Спустя 45 минут, 48 секунд (27.09.2011 - 23:32) twin написал(а):
Нет там такого. smile.gif

Спустя 15 часов, 41 минута, 34 секунды (28.09.2011 - 15:14) Гость_Людмила написал(а):
Большое спасибо - все сразу заработало))!!!

Спустя 1 месяц, 2 дня, 6 часов, 52 минуты, 15 секунд (30.10.2011 - 22:06) Гость_Slava написал(а):
Field 'hash' doesn't have a default value


Пишет вот такое, помогите разобраться что это означает, а пишет вот здесь:

/** 
* Подключаем файл функций MySQL
*/

include './libs/mysql.php';

/**
* Регистрация нового пользователя
*/

if($ok)
{

mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."user`
SET
`login` = '"
. escapeString($POST['value1']) ."',
`password` = '"
. escapeString($POST['value2']) ."'"
);

reDirect();
}

Спустя 3 минуты, 33 секунды (30.10.2011 - 22:10) Игорь_Vasinsky написал(а):
ну написано же:
поле hash не имеет дефалтового значения.
установи значение через PMA

Спустя 16 часов, 5 минут, 24 секунды (31.10.2011 - 14:15) Krevedko написал(а):
hash ты не вставляешь. и в базе нету по дефолту, по всей видимости. вот и матюгает.

Спустя 10 часов, 59 минут, 45 секунд (2.11.2011 - 01:15) Гость_Слава написал(а):
А как можно в базе по дефолту поставить? И сто такое ПМА?

Спустя 13 часов, 47 минут, 19 секунд (2.11.2011 - 15:02) twin написал(а):
PMA - PhpMyAdmin

А по дефолту, значит по умолчанию.

Спустя 6 минут, 15 секунд (2.11.2011 - 15:09) Игорь_Vasinsky написал(а):
Цитата
hash ты не вставляешь. и в базе нету по дефолту, по всей видимости. вот и матюгает.


и поле видимо NOT NULL
Свернутый текст
user posted image

потом
Свернутый текст
user posted image

Быстрый ответ:

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