PHP header(Location: ...): la Force de changement d'URL dans la barre d'adresse

Je suis actuellement en train de travailler sur un site mobile avec l'authentification à l'aide de sessions PHP avec une base de données.
J'ai une page de login avec un formulaire qui va à server_login.php sur "soumettre". Le fichier php puis crée certaines données de session (stocker dans $_SESSION), et redirige l'utilisateur vers la page d'index:

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

La nouvelle page web (index.php) se charge correctement; toutefois, lorsque l'en-tête redirige la page, l'URL dans la barre d'adresse n'est pas modifié; il reste à *http://localhost/php/server/server_login.php* au lieu de http://localhost/index.php et ainsi, tous mes autres ressources qui rend l'utilisation de relative cheminement n'a pas pu être chargé. C'est comme si la page web continue à penser qu'il réside à l' /php/serveur à la place de /.

Étrangement, mon autre utilisation de header("location: ...") à logout.php les œuvres et les redirige la page avec succès avec un changement d'URL.

Je me suis assuré qu'il n'y a pas de sorties dans mon *server_login.php* avant le header de redirection (ci-dessus sont tout simplement mysql appels à vérifier) et je l'ai utilisé ob_start() et ob_end_flush() aussi.

Existe-il des méthodes de forcer l'URL dans la barre d'adresse pour changer (et donc, espérons-le, résoudre le problème de chemin relatif)? Ou suis-je en train de faire quelque chose de mal?

P/S: je suis à l'aide de jQuery Mobile.

EDIT: Voici mon code pour la redirection de ne pas modifier l'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");

}
  • pouvez-vous montrer le code de la façon dont vous affichez les données?
InformationsquelleAutor vemoxy | 2011-09-19