Делала все как написано. анализируя, только не пойму что произошло, при регистрации выдает следующее
Цитата |
Неверное перенаправление на странице Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится. Эта проблема может возникать при отключении или запрещении принятия кук. |
Цитата |
/** * 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(); } } |
Цитата |
<?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'; |
<?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;
/**
* Only for the registered users
* Только для зарегистрированных пользователей
*/
if(isset($_SESSION['user_data']))
$info[] = "Здравствуйте, <b>". htmlspecialchars($_SESSION['user_data']['namefirm']) ."</b>! ";
else
redirect('page=register', 'rem=read');
if(isset($_SESSION['user_data']))
$info[] = "Здравствуйте, <b>". htmlspecialchars($_SESSION['user_data']['namefirm']) ."</b>! ";
else
redirect('page=register', 'rem=read');
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();
}
Цитата |
hash ты не вставляешь. и в базе нету по дефолту, по всей видимости. вот и матюгает. |