[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Система регистрации (IRBIS-team)
walters
Доброе время суток..
у меня вот такой вопрос...
В уроке модуля регистрации показано как защитить всю страницу... а как нашет только некоторых элементов?

вот например есть коментарии можно ли сделать чтобы для зарегистрированных появлялась форма для добавления и была активна... а для незарегистрированных ELSE (Зарегистрируйтесь или зайдите в свою учетную запись)

user posted image



Спустя 46 минут, 4 секунды (19.11.2010 - 15:39) twin написал(а):
Ну переставить условие с роутера внутрь модуля... Не пойму, что вызывает сложность.

Спустя 2 дня, 1 час, 44 минуты, 34 секунды (21.11.2010 - 17:24) walters написал(а):
Утонавливаю модуль и не пойму по какой причине выводит ошибку


Notice: Undefined variable: ok in W:\home\site.loc\ww/......... on line 34
Notice: Undefined variable: POST in W:\home\site.loc\ww........ on line 31

Спустя 6 дней, 1 час, 46 минут, 16 секунд (27.11.2010 - 19:10) walters написал(а):
Возникла проблемка, в гостевую пускает и без активации... делал по инструкции

убрал TRUE из enter_cotr.....

Спустя 14 минут, 49 секунд (27.11.2010 - 19:25) twin написал(а):
Гадина... Чё творит.
Как найдешь косяк, отпишись. smile.gif
Меня зараза не пускает.

Спустя 37 минут, 12 секунд (27.11.2010 - 20:02) walters написал(а):
enter_controller
 if(!$ok && isset($_COOKIE['hash'])) 
{
include './modules/register/functions.php';
$_SESSION['user_data'] = getLogin($_COOKIE['hash']);
}
elseif($ok)
{
$res = mysqlQuery("SELECT *
FROM `"
. IRB_DBPREFIX ."user`
WHERE `login` = '"
. escapeString($POST['value1']) ."'
AND `password` = '"
. md5($POST['value2'] . IRB_SALT) ."'
"
);

if(mysql_num_rows($res) > 0)
{
$_SESSION['user_data'] = mysql_fetch_assoc($res);

if($POST['value4'])
{
include './modules/register/functions.php';
setAutologin($_SESSION['user_data']['id']);
}
}
}


if(isset($_SESSION['user_data']))
$info[] = "Здорово, <b>". htmlspecialchars($_SESSION['user_data']['login']) ."</b>! Где шлялся?";
else
$info[] = 'Стой, стрелять буду!';



fucntions.php
<?php

/**
* The module of registration (functions)
* Модуль регистрации (функции)
*
@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'));
}
//////////////////////////////////////////////////////////

/**
* Function of generation of a casual line
* Функция генерации случайной строки
*
@param integr
* return string
*/

function randStr($num = 10)
{
$a = range('!', '@');
$b = range('a','z');
$c = range('A', 'Z');

$arr = array_merge($a, $b);
$arr = array_merge($arr, $a);
$arr = array_merge($arr, $c);

$key = '';
$rand = microtime(true);

for($i = 0; $i < $num; $i++)
{
shuffle($a);
$key .= $arr[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
$rand = microtime(true);
}

return $key;
}

/**
* Function of installation of an autologin
* Функция установки автологина
*
@param integr
* return void
*/

function setAutologin($id)
{
$hash = md5(randStr() . $id);

setcookie('hash', $hash, time() + 3600 * 24 * 30, '/');

$res = mysqlQuery("UPDATE `". IRB_DBPREFIX ."user`
SET `hash` = '"
. $hash ."'
WHERE `id` = "
. (int)$id
);

}


/**
* Function of an autologin
* Функция автологина
*
@param integr
* return void
*/

function getLogin($hash, $activate = false)
{
$and = '';
if(!$activate)
$and = 'AND `activate` = 1';

$res = mysqlQuery("SELECT *
FROM `"
. IRB_DBPREFIX ."user`
WHERE `hash` = '"
. escapeString($hash) ."'
"
. $and );

if(mysql_num_rows($res) > 0)
return mysql_fetch_assoc($res);
else
return
false;
}

Спустя 9 минут, 21 секунда (27.11.2010 - 20:12) twin написал(а):
Так а в чем вопрос? Ты при регистрации галочку "запомнить" ставил? Это автологин. Вполне логичное поведение.

Спустя 6 минут, 25 секунд (27.11.2010 - 20:18) walters написал(а):
а что имеет активация с авто логином? по идее юзеры которые не прошли активацию не должны иметь право читать и писать в гостевой?...

я об етом имел введу...и всё сделал по инструкции... там нужно было просто убрать (true)


было так

if(!$ok && isset($_COOKIE['hash']))
{
include './modules/register/functions.php';
$user_data = getLogin($_COOKIE['hash'], true);
}
elseif($ok)
{


стало так


if(!$ok && isset($_COOKIE['hash']))
{
include './modules/register/functions.php';
$user_data = getLogin($_COOKIE['hash']);
}
elseif($ok)
{



но всё равно пускает и без активации

Спустя 2 минуты, 4 секунды (27.11.2010 - 20:20) twin написал(а):
упс... завтра позябаем.

Спустя 3 минуты, 24 секунды (27.11.2010 - 20:23) walters написал(а):
нет времени?? или уходиш?

Спустя 16 часов, 36 минут, 11 секунд (28.11.2010 - 13:00) walters написал(а):
twin
так в чем может быть проблема? помоги пожалуйста

Спустя 51 минута, 22 секунды (28.11.2010 - 13:51) twin написал(а):
Так. давай по порядку. Ты регистрируешься, на мыло отправляется код, ты его не вводишь, а все равно пускает?

Спустя 7 часов, 21 минута, 20 секунд (28.11.2010 - 21:12) gidrosoldat написал(а):
Итак. С удовольствием просмотрел ваши курсы и у меня появились некоторые вопросы.

1). Шаг 2. (Аккаунт) Дата в irbis_user с параметром “on update CURRENT_TIMESTAMP” после любого обновление приравнивается к реальному времени? С какой целью это делается ?

2). Там же, в формах в поле логина опция
value="<?php echo $POST['value1']; ?>"
для того, что бы при неправильном заполнении логин оставался ?

3). Шаг 4. Автологин. Вопрос по поводу автологина ... что это за зверь такой ?
include './modules/register/functions.php'; 
setAutologin($_SESSION['user_data']['id']);
Я понимаю, что этот код генерит случайную величину, записывает ее в куку и в поле “hash”. Но что нам это дает? Я думал, эта опция нужна для того, что бы, закрыв окно, при следующем открытии окна браузера не пришлось логиниться. Увы, у меня так не срабатывает – ни в эксплорее, ни в файрфоксе. Работает только если закрыть/открыть вкладку, а браузер оставлять работать. На всех остальных сайтах автологин работает.

4). Шаг 6. Защита страниц. Или опечатка или я чего то не понял.
Во вьюшке:
case 'enter': 
include './skins/tpl/register/form_autorize.tpl';
В тоже время в index.tpl:
<li><a href="<?php echo href('page=register', 'rem=read'); ?>">Вход</a></li>
Rem с аргументами enter и read. Получается должно быть два файла enter_controller и read_controller. Может следовало бы придти к одному названию?

5). Зачем в form_activate.tpl при вводе активационного кода пункт
<?php echo returnCheck(1, $POST['value2']); ?>> Запомнить Вас?<br>
?

6). В form_activate.tpl (Шаг 8. Восстановление пароля) заполняемые поля с именами form[value1] и form[value2], а в activate_controller.php (Шаг 9. Активация аккаунта) обрабатываются $POST['value3'] и $POST['value4']. Надо бы поправить.

7). В Шаг 9. Активация аккаунта, есть такая запись
...
Теперь носталось изменить вызов функции в контроллере входа, просто убрав от туда true. Что бы она выдавала только активированных пользователей: ...
Можно поподробнее тут? Я убрал из этого места аргумент true, но система входа все равно позволяет залогиниться учетные записи с 'activate=0'. Проблему решила одна дополнительная строчка в read_controller'e:

$res = mysqlQuery("SELECT *    
FROM `"
. IRB_DBPREFIX ."user`
WHERE `login` = '"
. escapeString($POST['value1']) ."'
AND `password` = '"
. md5($POST['value2'] . IRB_SALT) ."'
AND `activate` = '1' - вот эта строка!
"
);
Правильно ли я сделал?

8). Последняя проблема, не работает активация логина через форму form_activate.tpl в случае востановления пароля. Когда делаю востановление по ссылке в письме – все работает. Если пробую скопировать код в поле ввода (хэш проверял, соответствует записи в базе) и нажать “Войти”, получаю форму form_restoration.tpl с $info „Такой Е-майл не числится в нашей базе данных”, в поле Логина вижу хэш. С этим так и не разобрался, надеюсь на вашу помощь!

Спустя 2 часа, 26 минут, 26 секунд (28.11.2010 - 23:39) walters написал(а):
да, там мелких ошибок не мало... но это не проблема, там есть функциональные проблемы.. в них труднее разобратся

Спустя 10 часов, 11 минут, 47 секунд (29.11.2010 - 09:51) gidrosoldat написал(а):
Цитата (walters @ 27.11.2010 - 17:18)
но всё равно пускает и без активации


walters, проверь таблицу пользователей mysql. Если там есть логины с пустым хешом, то будет пускать без регистрации. У меня так и было, стер пару левых логинов и защита заработала.

Спустя 3 часа, 44 минуты, 5 секунд (29.11.2010 - 13:35) walters написал(а):
всё уже настроил...
а ты не знаешь как можно закрыть только одну часть...а не всю страницу... я замутил коментарии к новостям.. но вот хочу сделать чтобы для залогининых поевлялась окно ввода коментария, а для незалогененых чтобы выводило сообщение
(Зерегистрируйтесь или зайдите в свою учетную запись)

если не знаешь, давай совместно попробуем что то сотворить ?

Спустя 1 час, 38 минут, 47 секунд (29.11.2010 - 15:13) twin написал(а):
gidrosoldat
Цитата
1). Шаг 2. (Аккаунт) Дата в irbis_user с параметром “on update CURRENT_TIMESTAMP” после любого обновление приравнивается к реальному времени? С какой целью это делается ?
Чтобы удалять просроченные аккаунты. неактивированные. Можно потом по ней смотреть последний вход.
Цитата
2). Там же, в формах в поле логина опция
для того, что бы при неправильном заполнении логин оставался ?

точно так.
Цитата
Увы, у меня так не срабатывает – ни в эксплорее, ни в файрфоксе.
Специально еще раз проверил - все норм. Что то ты напутал.
Цитата
4). Шаг 6. Защита страниц. Или опечатка или я чего то не понял.
ага, она самая.
Цитата
5). Зачем в form_activate.tpl при вводе активационного кода пункт
Вот эту галочку и надо отметить, чтобы автологин заработал
Цитата
6). В form_activate.tpl (Шаг 8. Восстановление пароля) заполняемые поля с именами form[value1] и form[value2], а в activate_controller.php (Шаг 9. Активация аккаунта) обрабатываются $POST['value3'] и $POST['value4']. Надо бы поправить.
угу, сеньк.
Цитата
Проблему решила одна дополнительная строчка в read_controller'e:
Правильно ли я сделал?
Нет. Если функция такая:
/**   
* Function of an autologin
* Функция автологина
*
@param integr
* return void
*/

function getLogin($hash, $activate = false)
{
$and = '';
if(!$activate)
$and = 'AND `activate` = 1';

$res = mysqlQuery("SELECT *
FROM `"
. IRB_DBPREFIX ."user`
WHERE `hash` = '"
. escapeString($hash) ."'
"
. $and );

if(mysql_num_rows($res) > 0)
return mysql_fetch_assoc($res);
else
return
false;
}
то должно работать нормально.
Цитата

8). Последняя проблема, не работает активация логина через форму form_activate.tpl в случае востановления пароля. Когда делаю востановление по ссылке в письме – все работает. Если пробую скопировать код в поле ввода (хэш проверял, соответствует записи в базе) и нажать “Войти”, получаю форму form_restoration.tpl с $info „Такой Е-майл не числится в нашей базе данных”, в поле Логина вижу хэш. С этим так и не разобрался, надеюсь на вашу помощь!

Где то перепутал нумерацию полей. В примере все нормально работает.


gidrosoldat
Разобрались?







Спустя 1 минута, 4 секунды (29.11.2010 - 15:15) gidrosoldat написал(а):
walters, я не знаю как у тебя эта страница написана, но если ты делал по образу и подобию этих курсов, то ...

При условии, что у тебя уже пашет система регистрации, тебе надо найти пхп файл, который выводит tpl шаблон комментариев. Это будет либо view.php (функция include), read_controller.php (своя функция getTpl, parseTpl) либо какое то твое оригинальное название. Так вот, теоретически ты должен сделать выполнение этих функции с условием:

if(isset($_SESSION['user_data']))    
здесь строка с твоими комментами (например, include './skins/tpl/news/comments.tpl'; )
else
echo "Зерегистрируйтесь или зайдите в свою учетную запись";


Похожее условие можно сделать и для контролера, чтобы он лишних операций не делал. Увы, я сам не профессионал, точно не скажу.

Спустя 1 час, 44 минуты, 52 секунды (29.11.2010 - 16:59) walters написал(а):
я коментарии вывожу... а Панель добавления вот что мне надо, при таком раскладе сообщение (Зерегистрируйтесь или зайдите в свою учетную запись)
вылитает но не вместо панели а вместо всей страницы

Спустя 26 минут, 20 секунд (29.11.2010 - 17:26) gidrosoldat написал(а):
Так ты не всей страницы шаблон в эти условия вставляй, а только шаблон комментариев (форма ввода комментов и сами отзывы). Если у тебя одним файлом все (тпл, в котором и новость и форма и комменты), может имеет смысл их разделить на части ?

Спустя 1 час, 32 минуты, 21 секунда (29.11.2010 - 18:58) walters написал(а):
дай мне свой Icq или скайп, если ты не против

Спустя 4 часа, 6 минут, 5 секунд (29.11.2010 - 23:04) gidrosoldat написал(а):
Цитата (twin @ 29.11.2010 - 12:13)
gidrosoldat
Разобрались?

Все к тому идет!
Насчет автологина, я его не там искал (на главной странице). После добавления в главный индекс:

  if(isset($_COOKIE['hash']))  
{
include './libs/mysql.php';
include './modules/register/functions.php';
$_SESSION['user_data'] = getLogin($_COOKIE['hash']);


все заработало :)

По поводу восстановления пароля, увы так, как показано у вас на сайте, не работает. Я сделал хитрее - стер первую часть restoration_controller с условием if($ok && !empty($GET['id'])) и оставил себе вторую часть с условием if($ok), в конце поставил reDirect('rem=activate'); ибо activate_controller, работает без нареканий, во view.php случаю 'restoration' оставил единственный его form_restoration.tpl. Итого, укоротил код и починил. Может и вам в уроках надо придти к этому варианту ?

Пока вроде бы все ))

walters, стучись в скайп, имя: oblomingo_

Спустя 12 дней, 16 часов, 33 минуты, 26 секунд (12.12.2010 - 15:38) allforweb написал(а):
Ошибка в проверке электронного адреса. Если домен на котором адрес зарегистрирован имеет дефис - , то выдается сообщение "Не верный формат E-mail".
Пропускает: info@site.ru
Не пропускает: info@best-site.ru

Как поправить эту функцию? В классе irb_mailer наверное тоже такая ошибка?

Спустя 53 минуты, 45 секунд (12.12.2010 - 16:31) allforweb написал(а):
Есть еще вопрос по классу irb_mailer.

Я решил сделать регистрацию на основе урока, но со своей логикой. Я запрашиваю у юзера только электронный адрес без логина (логин он тоже может забыть) и делаю выборку всех юзеров, которые имеют аккаунты с таким электронным адресом. Далее в цикле выполняю отправку ему писем логин + хеш пароля. И вот такая проблема у меня возникает:
- $message - в теле письма не видит переменные из массива $row (я ставлю запись: Ваш логин:".$row['login']."\n) переменную не видно
- $mail -> createTo($_row['email']); - тоже переменную не видит (если ставлю $mail -> createTo($_POST['email']); - все нормально).

Спустя 30 минут, 47 секунд (12.12.2010 - 17:02) twin написал(а):
$_row['email']
черточка зачем?

Спустя 1 час, 27 минут, 22 секунды (12.12.2010 - 18:29) allforweb написал(а):
Цитата (twin @ 12.12.2010 - 14:02)
$_row['email']
черточка зачем?

Опечатка. Вот код:
$mail -> createTo($row['email']);// не работает
$mail -> createTo($_POST['email']);// работает


Спустя 38 минут, 54 секунды (12.12.2010 - 19:08) twin написал(а):
echo $row['email'];
что скажет?

Спустя 1 час, 44 минуты, 47 секунд (12.12.2010 - 20:53) allforweb написал(а):
Цитата (twin @ 12.12.2010 - 16:08)
echo $row['email'];
что скажет?

Ничего не скажет, я проверял уже.

Спустя 3 минуты, 47 секунд (12.12.2010 - 20:57) twin написал(а):
Ну а если ничего, то куда письмо?
Надо смотреть откуда берется.

Спустя 53 минуты, 10 секунд (12.12.2010 - 21:50) allforweb написал(а):
Цитата (twin @ 12.12.2010 - 17:57)
Ну а если ничего, то куда письмо?
Надо смотреть откуда берется.

Вот до начала цикла массив выводится,
 
if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_assoc($result));

{
$hash = md5(randStr() . $row['id_user'])

а потом пропадает куда-то.

Спустя 1 час, 8 минут, 31 секунда (12.12.2010 - 22:59) twin написал(а):
А запрос?

Спустя 1 час, 40 минут, 34 секунды (13.12.2010 - 00:39) allforweb написал(а):
Цитата (twin @ 12.12.2010 - 19:59)
А запрос?

А запрос правильный. Весь массив выводится до начала цикла, а затем теряется.

Спустя 4 месяца, 9 дней, 2 часа, 31 минута, 18 секунд (22.04.2011 - 02:11) mxwuser написал(а):
Тут прочитал в документации(вроде), что сессии не следует запускать для всех подряд, а желательно только для пользователей, в целях снижения нагрузки на сервер. Соответственно, более правильно, получается, будет запускать сессию в 'enter_controller', только при верном вводе логина\пароля, но почему-то не получается ничего. - Из индкеса старт сесси удалил, и поставил его в контроллер входа, сразу после удачной проверки пароля. С чем это связано?

Спустя 4 дня, 10 часов, 55 минут, 59 секунд (26.04.2011 - 13:06) mxwuser написал(а):
Вроде бы ошибку нашел еще одну. (offce_controller)
    if($ok)
{
if(!empty($POST['value2']) && mb_strlen($POST['value2']) < 8)
$info[] = IRB_LANG_SHORT_PASSWORD;
elseif(!empty($POST['value2']) && $POST['value2'] !== $POST['value3'])
$info[] = IRB_LANG_INVALID_PASSWORD;

if(empty($POST['value4']))
$info[] = IRB_LANG_EMPTY_EMAIL;
elseif(!preg_match("/^[a-z0-9_.-]+@([a-z0-9]+.)+[a-z]{2,6}$/i", $POST['value4']))
$info[] = IRB_LANG_INVALID_EMAIL;

$pass = !empty($POST['value2'])?"`password` = '". md5($POST['value2'] . IRB_SALT) ."', ":NULL;

mysqlQuery("UPDATE `". IRB_DBPREFIX ."user`
SET
"
. $pass ."
`email` = '"
. $POST['value4'] ."'
WHERE `id` = "
. (int)$_SESSION['user_data']['id'] );

if(mysql_affected_rows() > 0)
$info[] = IRB_LANG_UPDATED_ACCAUNT;

}


Почему нету проверки на отсутствие ошибок перед добавлением. Получается что пароль можно сохранить и из 1 символа? Ошибку покажет, но все равно запишет.

И еще вопрос. Почему при смене названия переменной $ok, здесь и в форме, появляется ошибка о несуществующей переменной?

Спустя 4 часа, 29 секунд (26.04.2011 - 17:07) walters написал(а):
потому что у тебя в файле variables.php прописан $ok как


    $ok       = !empty($_POST['ok'])?true:false;  



прокомментируй на то что ты меняешь и не будет ошибки.

Спустя 1 день, 3 часа, 35 минут, 14 секунд (27.04.2011 - 20:42) mxwuser написал(а):
$pass = !empty($POST['value2'])?"`password` = '". md5($POST['value2'] . IRB_SALT) ."', ":NULL;

Зачем нужна эта строка? Если поле пустое, если без проверки - вылетает ошибка мускула, если есть проверка, то нету смысла делать переменную пустой.

if($ok)
{
if(!empty($POST['value2']) && mb_strlen($POST['value2']) < 8)
$info[] = IRB_LANG_SHORT_PASSWORD;
elseif(!empty($POST['value2']) && $POST['value2'] !== $POST['value3'])
$info[] = IRB_LANG_INVALID_PASSWORD;

if(empty($POST['value4']))
$info[] = IRB_LANG_EMPTY_EMAIL;
elseif(!preg_match("/^[a-z0-9_.-]+@([a-z0-9]+.)+[a-z]{2,6}$/i", $POST['value4']))
$info[] = IRB_LANG_INVALID_EMAIL;

$pass = !empty($POST['value2'])?"`password` = '". md5($POST['value2'] . IRB_SALT) ."', ":NULL;

mysqlQuery("UPDATE `". IRB_DBPREFIX ."user`
SET
"
. $pass ."
`email` = '"
. $POST['value4'] ."'
WHERE `id` = "
. (int)$_SESSION['user_data']['id'] );

if(mysql_affected_rows() > 0)
$info[] = IRB_LANG_UPDATED_ACCAUNT;

}



И еще раз - тут нету проверки на существование ошибок, и добавить можно и пароль из 1 знака, и мыло левое. - "Нипанятна".

Спустя 59 минут, 37 секунд (27.04.2011 - 21:42) twin написал(а):
Ну да, ошибка там. Нужна проверка на пустоту переменной $info, как в модуле регистрации.

Спустя 1 месяц, 29 дней, 20 часов, 55 минут, 49 секунд (27.06.2011 - 18:38) maurise написал(а):
Нашёл ошибочку в разделе Система регистрации
В файле активации modules/register/activate_controller.php
в 36-й строке в условии стоит = вместо ==
if($user_data = getLogin($POST['value3'], true))

То же самое в файле modules/register/restoration_controller.php

Спустя 31 минута, 24 секунды (27.06.2011 - 19:09) bulgakov написал(а):
А вы внимательно читали код? Ведь может быть такое что функция getLogin возвращает данные записываемы в переменную $user_data или же getLogin может вернуть false?

Спустя 17 минут, 35 секунд (27.06.2011 - 19:27) bulgakov написал(а):
Я порылся и нашел код функции getLogin()



function getLogin($hash, $activate = false)
{
$and = '';
if(!$activate)
$and = 'AND `activate` = 1';

$res = mysqlQuery("SELECT *
FROM `"
. IRB_DBPREFIX ."user`
WHERE `hash` = '"
. escapeString($hash) ."'
"
. $and );

if(mysql_num_rows($res) > 0)
return mysql_fetch_assoc($res);
else
return
false;
}
Пояснений думаю не надо...

Спустя 22 минуты, 26 секунд (27.06.2011 - 19:49) maurise написал(а):
Т.е. здесь идёт одновременно присваивание и сразу же проверка. Я правильно понял?

Спустя 5 месяцев, 4 часа, 6 минут, 57 секунд (27.11.2011 - 23:56) zeromind написал(а):
не стал создавать новую тему, решил написать суда:
незнаю мой ли это баг, но при закрытии браузера и открытии его через определенное N время, $_SESSION['user_data'] - индекс юзер_дата не удаляется!
Array
(
[
user_data] =>
)

когда выходиш через кнопку выход - сессия удаляется
в связи с этим проверка ввида
if(isset($_SESSION['user_data'])) - не корректна, вот если добавить AND !empty($_SESSION['user_data']), тогда всё отлично..
собственно вопрос, почему при закрытии браузера индекс ['user_data'] в сессии сохранился, а его содержание пустое? При нормальной авторизации ['user_data'] - полностью заполнен!
в чём мой трабл?

Спустя 1 час, 4 минуты, 39 секунд (28.11.2011 - 01:01) inpost написал(а):
В том, что где-то в скрипте у тебя он создаётся на ровном месте.
Может в проверке ты пишешь не ==, а =, вот и беда возникает.
В index.php в самой первой строчке напиши print_r($_POST); и закрой браузер. После надо ждать 24-25 минут, пока сессия уничтожится, и снова открыть.

Спустя 26 дней, 21 час, 14 минут, 43 секунды (24.12.2011 - 22:15) Guest написал(а):
Должен ли отправляться пароль на ящик если сервер локальный. Пишет что все отправленно а на ящике пусто

Спустя 41 минута, 59 секунд (24.12.2011 - 22:57) twin написал(а):
В 99% случаев нет. Если есть почтовая заглушка, то письмо нужно искать там.

Спустя 1 час, 18 минут, 51 секунда (25.12.2011 - 00:16) Guest написал(а):
первый раз про заглушку слышу, а где ее искать?

Спустя 17 часов, 28 минут, 56 секунд (25.12.2011 - 17:45) Гость_Slava написал(а):
Зарегистрировался, скопировал Хэш в базе. Вставляю в поле активации. Не активирует запись. Хотя отличий от курса нету. В чем может быть причина?

Спустя 44 минуты, 31 секунда (25.12.2011 - 18:30) Гость_Slava написал(а):
<form action="" method="post">  
Код активации <br />
<input
name="form[value1]" type="text" size="50" value="<?php echo $GET['id'] ?>"><br>


Правильно лт я понимаю, что методом пост передаеться код активации, только он же записывается в переменную $GET['id'] ???

Спустя 1 день, 2 часа, 24 минуты, 5 секунд (26.12.2011 - 20:54) Гость_Slava написал(а):
Да уж...

Спустя 4 часа, 3 минуты, 43 секунды (27.12.2011 - 00:57) zeromind написал(а):
Цитата (Гость_Slava @ 25.12.2011 - 18:30)
<form action="" method="post">  
Код активации <br />
<input
name="form[value1]" type="text" size="50" value="<?php echo $GET['id'] ?>"><br>


Правильно лт я понимаю, что методом пост передаеться код активации, только он же записывается в переменную $GET['id'] ???

это сделано для того чтобы, при клике на ссылку (полученной на почту при регистрации), сразу код вставлялся в input.. для удобство вообщем, чтобы самому код не вставлять..

Спустя 8 дней, 27 минут, 39 секунд (5.01.2012 - 01:25) Guest написал(а):
Если код востановления пароля вставлять не через ссылку, а через форму form_aktivate (для отладки к примеру) то ye;yj поменять в контр. restoration_controler в первой проверке $GET['id'] на $POST['value5']. А в самой форме form_aktivate, первое поле name="form[value1] на name="form[value5]. Если восстонавливать через ссылку с письм, то скорее эта форма (form_aktivate) вообще не нужна.

Спустя 1 день, 16 часов, 43 минуты, 59 секунд (6.01.2012 - 18:09) Гость_Слава написал(а):
Ув. Ирбис! С рождеством.

Обратите внимание на ошибку в шаг8 "востановление пароля" в этом месте

// Активация. Если код набран верно, берем по нему данные
if($ok && !empty($GET['id']))
{
include './modules/register/functions.php';

if($user_data = getLogin($GET['id'], true))
{
$_SESSION['user_data'] = $user_data;

if($POST['value2'])
setAutologin($_SESSION['user_data']['id']);

redirect('host');
}
else
$info[] = 'Не верный код';
}
elseif($ok)


Вместо $GET['id'] я прописал $POST['valueX'], X - пареметр кот. указан в форме (form_activate.tpl).

По крайней мере так заработало.
Быстрый ответ:

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