Заголовок PHP (Местоположение:…): Принудительное изменение URL-адреса в адресной строке

В настоящее время я работаю над мобильным сайтом с аутентификацией с использованием сеансов PHP с базой данных. У меня есть страница входа в систему с формой, которая ведет к server_login .php при отправке. Затем файл php создает некоторые данные сеанса (хранятся в $ _SESSION) и перенаправляет пользователя обратно на страницу индекса:

header("location:../../index.php");

Новая веб-страница (index.php) загружается правильно; однако, когда заголовок перенаправляет страницу, URL-адрес в адресной строке не изменяется; он остается на * http: //localhost/php/server/server_login.php* вместо http: //localhost/index.php , и поэтому все мои другие ресурсы, использующие относительный путь, не могут быть загружен. Это как если бы веб-страница все еще думала, что находится в / php / server вместо /.

Как ни странно, другое использование мной заголовка ("location: ...") в logout.php работает и успешно перенаправляет страницу с изменением URL.

Я убедился, что в моем * server_login.php * нет выходных данных до перенаправления заголовка (выше это просто вызовы mysql для проверки), и я также использовал ob_start () и ob_end_flush ().

Существуют ли какие-либо методы принудительного изменения URL-адреса в адресной строке (и, надеюсь, решения проблемы относительного пути)? Или я что-то не так делаю?

P / S: Я использую jQuery Mobile.

РЕДАКТИРОВАТЬ: Вот мой код для перенаправления, которое не меняет URL:

// some other stuff not shown


$sql = "SELECT * FROM $user_table WHERE email = '$myemail' AND password = '$mypassword'";
$login_result = mysql_query($sql, $connection);

$count = mysql_num_rows($login_result);

if ($count == 1) {

    // Successfully verified login information

    session_start();

    if (!isset($_SESSION['is_logged_in'])) {
        $_SESSION['is_logged_in'] = 1;
    }

    if (!isset($_SESSION['email'])) {
        $_SESSION['email'] = $myemail;
    }
    if (!isset($_SESSION['password'])) {
        $_SESSION['password'] = $mypassword;
    }

    // Register user's name and ID
    if ((!isset($_SESSION['name'])) && (!isset($_SESSION['user_id'])))  {
        $row = mysql_fetch_assoc($login_result);
        $_SESSION['name'] = $row['name'];
        $_SESSION['user_id'] = $row['user_id'];
    }

    header("Location: http://localhost:8080/meet2eat/index.php");

} else {
    // Not logged in. Redirect back to login page
    header("Location: http://localhost:8080/meet2eat/php/login.php?err=1");

}
59
задан vemoxy 19 September 2011 в 12:45
поделиться