[РЕШЕНО]Помогите дописать редирект с проверкой логина.

Главные вкладки

Аватар пользователя derron116 derron116 13 февраля 2012 в 15:49

Пытаюсь сделать редирект пользователей с проверкой.

Мне нужно, что бы когда Аномимы заходили по адресу site.ru/user их перебрасывало на site.ru/user/start
и наоборот для авторизованных, если зайдут на site.ru/user/start их отправило на site.ru/user

я в php вообще не бум-бум:) Вот что я насобирал за 2 дня поисков в интернете... не работает, я совсем уже отчаялся:(

<?php
function custom_url_rewrite_login() {
  global 
$user;
  if (
$user) {
    if (
$path == 'user' && $user->uid==0) {
      
$path == 'user/start';
    }
    if(
$path == 'user/start' && $user->uid>0){
      
$path == 'user';
    }
  }
}
?>

Комментарии

Аватар пользователя derron116 derron116 13 февраля 2012 в 17:48

Не получается у меня рулесом... он вообще не реагирует... поставил условие если есть профиль и ссылка user/start, то перенаправлять на user... но как заходил на user/start так и захожу...

Аватар пользователя derron116 derron116 13 февраля 2012 в 18:26

просто страничка... на которой будет возможность логина, регистрации и восстановления пароля...

а вообще у меня такая ситуация... по ссылке site.ru/user у залогиненых пользователей открывается их профиль... а если пользователь не авторизован, ему выводит user_login (как я понял из перерытой инфы), все было бы отлично, если бы там еще была ссылка на регистрацию и восстановление.

темизация формы логина естественно не дала результатов...

Буду рад, если подскажете как дополнить user_login , что бы не использовать редиректы.

Аватар пользователя derron116 derron116 14 февраля 2012 в 11:26

Все-таки я написал этот мерзопакостный хук.... выкладываю суда, может пригодится кому-нибудь Smile

<?php
//hook_form_alter для user_login
function НАЗВАНИЕМОДУЛЯ_form_alter(&$form$form_state$form_id) {
  
//У меня еще стоит модуль email_registration, по-этому в нем нужно убрать из выборки "user_login"
  
if ('user_login' == $form_id){
    
$form['name']['#title'] = t('E-mail');
    
$form['name']['#description'] = t('Введите свой e-mail');
    
$form['pass']['#description'] = t('Введите пароль от аккаунта *******.ru');
    
$form['name']['#element_validate'][] = 'email_registration_user_login_validate';
   
//Дальнейший текст добавляет на форму 2 ссылки "Регистрация" и "Забыл пароль?" 
    
$items = array();
        if (
variable_get('user_register'1)) {
            
$items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
        }
        
$items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
        
$form['links'] = array('#value' => theme('item_list'$items));
    }
}
?>
Аватар пользователя iNFerNo iNFerNo 14 февраля 2012 в 13:54

а можно как то изменить хук и оставить там только добавление ссылок... без переписки полей логина и пароля7

Аватар пользователя glu2006 glu2006 14 февраля 2012 в 15:14

Это ж где вы уважаемый топик стартер нахватались примеров чтоб кирилицу в функцию t() писать???
Быстро исправляйте или на вашей совести будет убитый котенок, нет 2 котенка.

А вообще то решается и без форм Smile

<?php
function MYMODULE_init(){
  global 
$user;
  if(
$user->uid && $_GET['q'] == 'user/stat'drupal_goto('user'); //не трогаем админа ;)
  
if($user->uid == && $_GET['q'] == 'user'drupal_goto('user/stat');
}
?>

Вроде все Smile

Аватар пользователя derron116 derron116 19 февраля 2012 в 1:43

glu2006 wrote:
Это ж где вы уважаемый топик стартер нахватались примеров чтоб кирилицу в функцию t() писать???
Быстро исправляйте или на вашей совести будет убитый котенок, нет 2 котенка.

А вообще то решается и без форм Smile

<?php
function MYMODULE_init(){
  global 
$user;
  if(
$user->uid && $_GET['q'] == 'user/stat'drupal_goto('user'); //не трогаем админа ;)
  
if($user->uid == && $_GET['q'] == 'user'drupal_goto('user/stat');
}
?>

Вроде все :)

Идеальное решение:) спасибо вам огромное:)