[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: указать действие после логина
torquemada
Здравствуйте.

Есть скрипт webmail-клиента. Очень хочется, чтобы после успешной аутентификации пользователь попадал сразу на страницу создания нового сообщения, а не в папку входящие, как обычно.
В index.php есть такая история:
// allow 5 "redirects" to another action
$redirects = 0; $incstep = null;
while ($redirects < 5) {
$stepfile = !empty($action_map[$RCMAIL->task][$RCMAIL->action]) ?
$action_map[$RCMAIL->task][$RCMAIL->action] : strtr($RCMAIL->action, '-', '_') . '.inc';

Здесь вроде бы можно сделать эти изменения?
Первая "страница" после логина:?_task=mail; при переходе в создание нового письма адрес выглядит так: ?_task=mail&_id=1456378134c2834de8d19d&_action=compose
Представляю насколько неприятно отвечать на вопрос человека, который не представляет даже элементарных азов php, но, может, все-таки кто-то поможет? Не хватает времени, учиться приходится по ходу работы.

Спасибо.



Спустя 40 минут, 9 секунд (28.06.2010 - 09:20) vagrand написал(а):
делай редирект куда тебе нужно

Спустя 2 минуты, 43 секунды (28.06.2010 - 09:22) torquemada написал(а):
vagrand, основная проблема как раз в том, что я не знаю как это сделать.

Спустя 5 минут, 32 секунды (28.06.2010 - 09:28) mad/crs написал(а):
разве можно делать простой редирект? там же из массива берётся .inc фаил:
$action_map[$RCMAIL->task][$RCMAIL->action] : strtr($RCMAIL->action, '-', '_') . '.inc';

может "подсмотреть" где делается логин-успешный и там "добавить" в соответствии с содержимым $action_map[task][action]+_id это наверное "ид" письма. сорри ступил smile.gif

Спустя 21 минута, 42 секунды (28.06.2010 - 09:50) torquemada написал(а):
Спасибо, mad/crs .
Вот вроде место

// try to log in
if ($RCMAIL->action=='login' && $RCMAIL->task=='mail') {


как-то после этого написать редирект в формате

$action_map[$RCMAIL->task][$RCMAIL->action] : strtr($RCMAIL->action, '-', '_') . '.inc';


редирект это strtr($RCMAIL->action, '-', '_'), наверное? А вот это: '-', '_' как понимать? Почему два значения? Не знаю синтаксиса sad.gif

Спустя 3 часа, 2 секунды (28.06.2010 - 12:50) mad/crs написал(а):
если вам надо на новое писмь перенаправлять то этово мало, нужно найти место где генерируется _id=1456378134c2834de8d19d и добавлять редирект с генерированным "ид" новово письма. хорошо бы поподробней глянуть на код фаила.

Спустя 42 минуты, 32 секунды (28.06.2010 - 13:32) torquemada написал(а):
спасибо, mad/crs.

Вот, видимо, эта часть отвечает за получение id. Тут даже про редиректы после логина написано.

  // check if client supports cookies
if ($auth['cookiecheck'] && empty($_COOKIE)) {
$OUTPUT->show_message("cookiesdisabled", 'warning');
}
else if ($_SESSION['temp'] && !$auth['abort'] && !empty($auth['host']) &&
!
empty($auth['user']) && isset($auth['pass']) &&
$RCMAIL->login($auth['user'], $auth['pass'], $auth['host'])) {
// create new session ID
rcube_sess_unset('temp');
rcube_sess_regenerate_id();

// send auth cookie if necessary
$RCMAIL->authenticate_session();

// log successful login
if ($RCMAIL->config->get('log_logins')) {
write_log('userlogins', sprintf('Successful login for %s (id %d) from %s',
$RCMAIL->user->get_username(),
$RCMAIL->user->ID,
$_SERVER['REMOTE_ADDR']));
}

// restore original request parameters
$query = array();
if ($url = get_input_value('_url', RCUBE_INPUT_POST))
parse_str($url, $query);

// allow plugins to control the redirect url after login success
$redir = $RCMAIL->plugins->exec_hook('login_after', $query + array('task' => $RCMAIL->task));
unset($redir['abort']);

// send redirect
$OUTPUT->redirect($redir);
}
else {
$OUTPUT->show_message($IMAP->error_code < -1 ? 'imaperror' : 'loginfailed', 'warning');
$RCMAIL->plugins->exec_hook('login_failed', array('code' => $IMAP->error_code, 'host' => $auth['host'], 'user' => $auth['user']));
$RCMAIL->kill_session();
}


Всю страницу боюсь присылать - забанят, наверное.

Спустя 1 час, 17 минут, 18 секунд (28.06.2010 - 14:49) vagrand написал(а):
Хе, при чем тут код подключения инкладов к редиректу? Ты знаешь УРЛ страницы на которую нужно попвсть после логина? Если да то пиши: header('Locate: ' . $url);

Спустя 8 часов, 1 минута, 34 секунды (28.06.2010 - 22:51) torquemada написал(а):
Круто. Кажется, немного яснее становится. А куда это писать:
Цитата
header('Locate: ' . $url);
?

?_task=mail&_id=20564647734c28fc6d794b4&_action=compose
- такой вот урл, как прописать id?

Как-то так: $_SESSION['user_id'] ?
Быстрый ответ:

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