Переадресация после регистрации

Тема в разделе "PHP", создана пользователем yeaahhh, 21 апр 2011.

Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Друзья, подскажите, пожалуйста, по какому принципу происходит переадресация с дальнейшей автоматической авторизацией (создание сессии)?
    Моя система регистрации:
    после нажатия на submit, идёт проверка по ajax - если всё ок, данные заносятся в БД и всплывает окно - Вы успешно зарегистрированы.
    Хочу сделать сразу же после надписи об успешной регистрации - автоматическую авторизацию с перенаправлением в профиль пользователя.
    Не понимаю, как присвоить переменные.. Подскажите, пожалуйста?
     
  2. CnecHa3

    CnecHa3 Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    105
    Симпатии:
    20
    А как авторизация происходит?
    -Какие-то cookie присваиваются или иначе?
     
  3. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Если пользователь вводит правильную пару email-пароль - идёт запрос в БД на получение нескольких данных (логин, id и т.п.). Их прикрепляю к сессиям (напр: $_SESSION['login']=$myrow['login'];)
     
  4. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    200
    Симпатии:
    55
    Обычно делаю так. Все AJAX запросы адресуются следующему файлу ajaxresponder.php. В качестве JS-фреймворка использую JQuery, приведу пример на нем.
    Запрос имет вид:
    Код:
    var params=$("#form").serialize(); //тут мы получаем содержимое формы с id=form
          $.post('http://HOST/path/ajaxresponder.php?m=reg', params, //тут идет пост на скрипт-обработчик
          function(data){ //функция-обработчик ответа
              if(data.status){
                 window.location=data.text; //тут редирект на новый УРЛ redirectURL
              }else{
                alert('Не верный логин или пароль');// а тут ругань на неправильные данные.
              }
               
          },
          "json" //формат возвращаемых данных. Я предпочитаю его, хотя есть еще text.
          );
    
    Теперь собственно файл обработчик ajaxresponder.php. Я предполагаю, что проверять и заносить данные из отправленной формы в БД Вы умеете, поэтому опишу в общем виде.

    PHP:
    session_start(); //обязательно
    .....
    $m=isset($_GET['m']) ? $_GET['m'] : ""//обратите внимание, что скрипт вызвался с GET-параметром m=reg, который определяет функцию обработчик запроса.
    switch($m){
    case 
    'reg'register(); break; //
    ......
    }
    function 
    register{
    $status=0;
    $redirecturl="";
    $checked=проверка_формы();
    if(
    $checked){
      
    вставка_данных_в_БД();
      
    $_SESSION['auth']=1//собственно признак авторизованности, у вас мб. другой
      
    $status=1;
      
    $redirecturl='УРЛ для редиректа';
    }
      die(
    json_encode(array('status'=>$status,"text"=>iconv('cp1251','utf-8',$redirecturl))));  
    }

    Относительно функции json_encode - она появилась с версии 5.2.0 вроде, и если версия PHP не удовлетворяе - поищите ее аналог в интернете. Ключи массива такие-же как у объекта data из нашего JS: data.status, data.text, значит и JSONить нужно массив с такими ключами. Я специально для текстовой строки применил функцию iconv, поскольку такие запросы принимаются в UTF-8 кодировке, и может понадобиться конвертация. В ответе мб не адрес, а например, статус операции.

    ИТОГО:
    вызов ajaxresponder?m=идентификатор_обработчика.
    ответ status=0/1 (неудача/успех), text=словесное пояснение операции. Требуется больше данных - карты в руки, добавляйте в выходной массив данные с новыми ключами, data.ключ используйте в скрипте
     
    yeaahhh нравится это.
  5. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    после записи данных в БД вызывай функцию авторизации, потом просто после всплывающего окна, редирект на главную страницу
    Код:
    document.location.href = '/';
    
     
  6. CnecHa3

    CnecHa3 Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    105
    Симпатии:
    20
    значит, сразу после регистрации присваивай эти значения, и запусти такой js-скрипт:

    у тебя какой стилизованное окно или обычное?
     
  7. docus000

    docus000 Создатель

    Регистр.:
    28 окт 2007
    Сообщения:
    11
    Симпатии:
    0
  8. Fontum

    Fontum Писатель

    Регистр.:
    6 сен 2009
    Сообщения:
    9
    Симпатии:
    0
    PHP:
    header('Location: index.php');
     
  9. Nauly

    Nauly Писатель

    Регистр.:
    10 окт 2007
    Сообщения:
    4
    Симпатии:
    0
    Вам не с помощью php надо делать это, а с помощью яваскрипта.

    document.location.href = "http://www.ya.ru";

    А если хотите, чтобы даже в истории не осталось адреса регистрации, то document.location.replace("http://www.ya.ru");

    :)