мне нужно перенаправить пользователя на страницу они пришли, как только они успешно сделали один из двух вещей:. 1) Ввод их код приглашения, или 2) Записан вTrouble перенаправлять на предыдущую страницу после авторизации
Я пытаюсь применить ответ опубликован here, но, проведя несколько часов безуспешно, пытаясь заставить его работать, я понял, что пришло время обратиться за помощью.
Для того, чтобы убрать код, я включил только фрагменты, относящиеся к Варианту 1 (Пригласительный код). Кроме того, чтобы сначала заставить его работать с более простой версией (и более точно воспроизвести приведенный пример), я временно удалил iframes с этих страниц.
Код Добавление
auth_invite_launch.php
//CODE #1
header("Location:sign_in.php?location=".urlencode($_SERVER['REQUEST_URI']));
$redirect = NULL;
if ($_POST['location'] != '') {
$redirect = $_POST['location'];
}
sign_in.php
//CODE #2
echo '<input type="hidden" name="location" value="';
if (isset($_GET['location'])) {
echo htmlspecialchars($_GET['location']);
}
echo '" />';
invite_code - exec.php (sign_in.php представлен здесь)
//CODE #3
if ($redirect)) {
header("Location:".$redirect);
}
Предсуществующая Код
createaccount.php
require_once('config/auth_invite_launch.php'); // session_start & checks if authorized
is_user_auth(); // Checks if authorized
is_user_logged(); // Checks if logged in
get_logged_user_id();
if (is_user_logged() == TRUE) {
$logged_in = true;
$user_id = $_SESSION['SESS_USER_ID'];
}
auth_invite_launch.php
function is_user_auth(){
// Checks if logged in to Member Account or has valid Invite Code
if (isset($_SESSION['SESS_USER_ID']) || isset($_SESSION['TEMP_INVITE_ID'])){
return true;
}
//Replaced by CODE #1
header("location: sign_in.php"); // Redirects if not authorized user
}
// Checks if logged in to member account
function is_user_logged(){
if (isset($_SESSION['SESS_USER_ID'])){
return true;
}
return false;
}
// Retrieves ID if logged in to member account, NULL otherwise
function get_logged_user_id(){
if (is_user_logged() === TRUE){
return $_SESSION['SESS_USER_ID'];
}
return null;
}
invite_code - exec.php (sign_in.php представлен здесь)
// PRECEDED BY statement to fetch matching invite codes from db
if ($stmt - > rowCount() == 1) {
$invite = $stmt - > fetch();
$_SESSION['TEMP_INVITE_ID'] = $invite['idinvite_codes'];
$_SESSION['TEMP_INVITE_CODE'] = $invite['invitation_code'];
$invite_code = "true";
//CODE #3 Added here
} else {
$invite_code = "false";
header("location: index.php");
exit();
}
Мое первое наблюдение заключается в том, что вы иногда выполняете перенаправление «Местоположение» (например, в 'auth_invite_launch.php') без немедленного' exit() '. PHP не знает, что заголовок местоположения должен прервать скрипт, так что весело продолжайте движение, пока он не обнаружит, что удаленная сторона отключена. Поскольку между выпуском заголовка и отключением (в зависимости от скорости сетевого подключения) существует задержка между кажущейся случайной величиной скрипта после того, как заголовок может быть выполнен, и это может вызвать некоторые неудобные ошибки. Исправьте этот первый ':-)'. – halfer
@halfer Done :-) Но, как я понял из вашего поста, это не исправить полностью ;-) –
Нет, я надеялся, что это может исправить! хотя только потому, что ошибки, которые могут вызывать, кажутся очень случайными. Хорошо, поэтому нам может потребоваться более подробная информация - у вас есть два действия, в которых вы хотите, чтобы пользователь перенаправлялся обратно туда, откуда он появился, но они не работают. Можете ли вы усилить «не работает» здесь? Переадресовывают ли они, но не в нужное место? Или они не перенаправляют вообще? – halfer