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

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Друзья, подскажите, пожалуйста, по какому принципу происходит переадресация с дальнейшей автоматической авторизацией (создание сессии)?
Моя система регистрации:
после нажатия на submit, идёт проверка по ajax - если всё ок, данные заносятся в БД и всплывает окно - Вы успешно зарегистрированы.
Хочу сделать сразу же после надписи об успешной регистрации - автоматическую авторизацию с перенаправлением в профиль пользователя.
Не понимаю, как присвоить переменные.. Подскажите, пожалуйста?
 
А как авторизация происходит?
-Какие-то cookie присваиваются или иначе?
 
Если пользователь вводит правильную пару email-пароль - идёт запрос в БД на получение нескольких данных (логин, id и т.п.). Их прикрепляю к сессиям (напр: $_SESSION['login']=$myrow['login'];)
 
Обычно делаю так. Все 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.ключ используйте в скрипте
 
Моя система регистрации:
после нажатия на submit, идёт проверка по ajax - если всё ок, данные заносятся в БД и всплывает окно - Вы успешно зарегистрированы.
после записи данных в БД вызывай функцию авторизации, потом просто после всплывающего окна, редирект на главную страницу
Код:
document.location.href = '/';
 
Если пользователь вводит правильную пару email-пароль - идёт запрос в БД на получение нескольких данных (логин, id и т.п.). Их прикрепляю к сессиям (напр: $_SESSION['login']=$myrow['login'];)
значит, сразу после регистрации присваивай эти значения, и запусти такой js-скрипт:

у тебя какой стилизованное окно или обычное?
 
в php для переадесации юзай header

в javascript как и посоветовали
Код:
document.location
 
PHP:
header('Location: index.php');
 
Вам не с помощью php надо делать это, а с помощью яваскрипта.

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

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

:)
 
Назад
Сверху