title: PHP header(Location: ...): Force URL change in address bar
body: <p>I'm currently working on a mobile site with authentication using PHP sessions with a database.
  I have a login page with a form that goes to <strong>server_login.php</strong> on submit. The php file then creates some session data (store in $_SESSION), and redirects the user back to the index page:</p>
  
  <pre><code>header("location:../../index.php");
  </code></pre>
  
  <p>The new web page (index.php) loads correctly; however, when the header redirects the page, the URL at the address bar is not changed; it stays at *http://localhost/php/server/server_login.php* instead of <em>http://localhost/index.php</em> and thus all my other resources that makes use of relative pathing could not be loaded. It's as if the web page still thinks that it resides at /php/server instead of /.</p>
  
  <p>Strangely, my other use of header("location: ...") at logout.php works and redirects the page successfully with a URL change.</p>
  
  <p>I've made sure that there are no outputs in my *server_login.php* before the header redirect (above it are just mysql calls to check) and I've used ob_start() and ob_end_flush() too.</p>
  
  <p>Are there any methods of forcing the URL on the address bar to change (and thus hopefully fix the relative path problem)? Or am I doing something wrong?</p>
  
  <p>P/S: I am using jQuery Mobile.</p>
  
  <p>EDIT: Here's my code for the redirection that doesn't change the URL:</p>
  
  <pre><code>// 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'])) &amp;&amp; (!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");
  
  }
  </code></pre>