4
<?php 1. if (isset($_SESSION['username'])) { header('Location: log.php'); } 2. if (session_id() != '') { header('Location: log.php'); } 3. if(isset($_SESSION['username'])) { header("Location: log.php"); exit; } 4. if (session_status() != PHP_SESSION_NONE) { header("Location: log.php"); } ?> 

I want my php to redirect to from main.php to log.php if the session is live. I want to achieve an effect where logged on users cannot access a page and once they try to do it via a url they get automatically redirected to a different page. Above are the attempts I did and did not work for me.

2
  • 1
    I think you forgot to use (or mention) session_start(); Commented Jan 3, 2014 at 23:20
  • 1
    Did you make sure to use session_start()? There will never be a session in any subsequent pages as long as session_start hasn't been declared. Use the presence of $_SESSION variables in combination with a previously declared session_start to take care of this properly. Commented Jan 3, 2014 at 23:21

3 Answers 3

5

You need session_start.

session_start(); if(!isset($_SESSION['username'])) { header("Location: log.php"); exit; } 
Sign up to request clarification or add additional context in comments.

Comments

2

I think that you miss the call to php session_start(). Try this:

<?php session_start(); if (isset($_SESSION['username'])) { header('Location: log.php'); } ?> 

And be sure that your use logged account.

Comments

0

although it's 4 years later,I solve this problem just now.

Please make sure all these matter: 1. All the pages have to set the below parameter in the beginning if (session_status() == PHP_SESSION_NONE) {session_start();}

  1. Adding the session variable must use $_SESSION in order to set the session as globally

  2. exit(); must be added after header("location: $URL ");

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.