Как перенаправить пользователей на их URL-адреса/целевые страницы с идентификатором после входа в систему?

Как перенаправить пользователей на их URL-адреса/целевые страницы с идентификатором после входа в систему? Строки запроса перенаправленных URL-адресов должны отображать значения, связанные с их идентификаторами (первичный ключ), хранящиеся в базе данных Mysql.

Например,

Соответствующие значения «id» для 1-го, 2-го, 3-го и 4-го пользователей равны 1, 2, 3 и 4.

Зарегистрированные страницы / целевые страницы должны выглядеть следующим образом после того, как пользователи успешно вошли в систему.

www.anysite.com/anydirectory/user.php?id=1

www.anysite.com/anydirectory/user.php?id=2

www.anysite.com/anydirectory/user.php?id=3

www.anysite.com/anydirectory/user.php?id=4

* Сеанс входа в сценарий входа выглядит следующим образом:*

// устанавливает сеанс и регистрирует пользователя**

session_start();

//предотвращение атак с фиксацией сеанса.

   session_regenerate_id (true); 

// это устанавливает переменные в сеансе

$_SESSION['user_id']= $id;  
    $_SESSION['user_name'] = $full_name;
    $_SESSION['user_level'] = $user_level;
    $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);

    **//update the timestamp and key for cookie**
    $stamp = time();
    $ckey = GenKey();
    mysql_query("update users set `ctime`='$stamp', `ckey` = '$ckey' where id='$id'") or die(mysql_error());

//устанавливаем файл cookie

  if(isset($_POST['remember'])){
              setcookie("user_id", $_SESSION['user_id'], time()+60*60*24*COOKIE_TIME_OUT, "/");
              setcookie("user_key", sha1($ckey), time()+60*60*24*COOKIE_TIME_OUT, "/");
              setcookie("user_name",$_SESSION['user_name'], time()+60*60*24*COOKIE_TIME_OUT, "/");
               }
               header('Location: user.php');
     }
    }
    else
    {
    //$msg = urlencode("Invalid Login. Please try again with correct user email and password. ");
    $err[] = "Invalid Username Or Password.";

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

Любая помощь будет оценена по достоинству.


person Klanto Aguntuk    schedule 14.12.2011    source источник
comment
вы используете header('Location: user.php); что 1) является синтаксической ошибкой 2) даже не пытается использовать идентификатор ... также зачем вам получать идентификатор пользователя от get, если он хранится в вашем сеансе?   -  person mishu    schedule 14.12.2011
comment
Спасибо за ответ. Заголовок должен быть на самом деле ('Location: user.php'); Это была опечатка.   -  person Klanto Aguntuk    schedule 14.12.2011


Ответы (3)


Просто добавьте идентификатор пользователя из вашего $_SESSION к URL-адресу, на который вы перенаправляетесь.

header('Location: user.php?id=' . $_SESSION['user_id']);
person vindia    schedule 14.12.2011
comment
Спасибо за ответ. Это идеальное решение проблемы. Что должно быть в заголовке, если я хочу связать URL-адреса с уникальными значениями ключей пользователей? Большое спасибо еще раз. - person Klanto Aguntuk; 14.12.2011

Когда вы проверяете успешный вход в систему, возвращайте идентификатор пользователя в своем запросе. Вот небольшой псевдокод:

  • В запросе: выберите user_id, где user_name = ? а пароль=?
  • Если results.count = 1, сохраните user_id как $user_id
  • Перенаправить на "www.anysite.com/anydirectory/user.php?id=" . $User_Id
person Leopold Stotch    schedule 14.12.2011
comment
Ваше объяснение мне непонятно. Не могли бы вы уточнить? Большое спасибо. - person Klanto Aguntuk; 14.12.2011

Хотели бы вы перенаправить так же, как это: -

www.anysite.com/anydirectory/user.php?id=1

тогда только делай

header("Location: user.php?id=".$userId);
person Rajeev Roy    schedule 14.12.2011
comment
Синтаксис может получить только строковый ключ, но не значение из базы данных, сохраненное во время сеанса входа в систему, что-то вроде www.anysite.com/anydirectory/user.php?id= Большое спасибо. - person Klanto Aguntuk; 14.12.2011