PHP: How to check if user is already logged in and otherwise redirect to login page

TaneMahuta

I am new to PHP and am struggling with the following:

I have a page where I want to check if someone is a registered user before letting them see the content of the site. So my thought was that in my header file (which is referenced on all single pages via require_once("includes/header.php");) I can check on that and redirect them to a login page (login.php) if they have not logged yet.

So here is everything that I have in my header:

<!DOCTYPE html>
<html>
    <head>
        <?php 
            define("someUnguessableVariable", "anotherUnguessableVariable");
            session_start();
            if(!(isset($_SESSION['login']) && $_SESSION['login'] != '')){
                header ("Location: login.php");
            }

            include "system/config.php";

            $pageURL = basename($_SERVER["REQUEST_URI"]);
            $pageName = pathinfo(parse_url($pageURL, PHP_URL_PATH), PATHINFO_FILENAME); 

            $selectedLang = $_GET["lang"];
                if(!isset($selectedLang)){
                    $selectedLang = "de";
                }
            $langURL = "?lang=" . $selectedLang;

            $conn = new mysqli($dbServer, $dbUser, $dbPass, $dbName);
            $conn->set_charset("utf8");
            if($conn->connect_error){
                die("Connection failed: " . $conn->connect_error);
            } 
            // fetch main translations
            $location = "%main%";
            $stmt = $conn->prepare("SELECT tID, " . $selectedLang . " FROM TranslationsMain WHERE location LIKE ? ORDER BY tID");
            $stmt->bind_param("s", $location);
            $stmt->execute();
            $result = $stmt->get_result();  
            while($arrTranslations = $result->fetch_assoc()){
                $trans[] = array("ID" => $arrTranslations["tID"], "trans" => $arrTranslations[$selectedLang]);
            }
            $conn->close();

            // get main translations by ID
            function fetchTransMain($trans, $itemID){
                foreach($trans as $key => $val){
                    if($val["ID"] == $itemID){
                        return $val["trans"];
                    }
                }
            }
        ?>

        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="author" content="Some author" />
        <meta name="description" content="Created: 2015-06" />

        <base href="http://www.myurl.de" target="_self" />

        <title>Some title</title>

        <!-- CSS -->        
        <link rel="stylesheet" type="text/css" href="includes/styles.css" />
        <!-- CSS - Font Awesome -->
        <link rel="stylesheet" type="text/css" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" />

        <!-- include favicon -->
        <link rel="shortcut icon" href="images/favicon/favicon.ico" type="image/x-icon" />
        <link rel="icon" href="images/favicon/favicon.png" type="image/png" />
        <link rel="icon" sizes="32x32" href="images/favicon/favicon-32.png" type="image/png" />
        <link rel="icon" sizes="64x64" href="images/favicon/favicon-64.png" type="image/png" />
        <link rel="icon" sizes="96x96" href="images/favicon/favicon-96.png" type="image/png" />
        <link rel="icon" sizes="196x196" href="images/favicon/favicon-196.png" type="image/png" />
        <link rel="apple-touch-icon" sizes="152x152" href="images/favicon/apple-touch-icon.png" />
        <link rel="apple-touch-icon" sizes="60x60" href="images/favicon/apple-touch-icon-60x60.png" />
        <link rel="apple-touch-icon" sizes="76x76" href="images/favicon/apple-touch-icon-76x76.png" />
        <link rel="apple-touch-icon" sizes="114x114" href="images/favicon/apple-touch-icon-114x114.png" />
        <link rel="apple-touch-icon" sizes="120x120" href="images/favicon/apple-touch-icon-120x120.png" />
        <link rel="apple-touch-icon" sizes="144x144" href="images/favicon/apple-touch-icon-144x144.png" />
        <meta name="msapplication-TileImage" content="favicon-144.png" />
        <meta name="msapplication-TileColor" content="#ffffff" />

        <script>
            var baseURL = '<?php echo $baseURL; ?>';
            var pageURL = '<?php echo $pageURL; ?>';
            var pageName = '<?php echo $pageName; ?>';
            var selectedLang = '<?php echo $selectedLang; ?>';
        </script>
    </head>   
    <body>

Now this is not working and I think I am probably missing a couple of things but I couldn't find a good tutorial or guideline on that. Also, I am not sure if there is anything else I need to do in order to start and set up the session.

Can someone help me with this ?

Note:
This is only about checking if a user is already logged in since all the actual user registration and verification is done on the separate login page and for this I already have the code working.

Update: Enabling error messages returns the following errors:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /homepages/21/d580042014/htdocs/index.php:2) in /homepages/21/d580042014/htdocs/includes/header.php on line 9

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /homepages/21/d580042014/htdocs/index.php:2) in /homepages/21/d580042014/htdocs/includes/header.php on line 9
array(0) { } 
Warning: Cannot modify header information - headers already sent by (output started at /homepages/21/d580042014/htdocs/index.php:2) in /homepages/21/d580042014/htdocs/includes/header.php on line 12

Notice: Undefined index: lang in /homepages/21/d580042014/htdocs/includes/header.php on line 18

Update:
As per the comments I now posted everything that's currently in the header.

Many thanks in advance.

Funk Forty Niner

Update: The question has been resolved in chat.


As per your edit, change this block:

<!DOCTYPE html>
<html>
    <head>
        <?php 
            define("someUnguessableVariable", "anotherUnguessableVariable");
            session_start();
            if(!(isset($_SESSION['login']) && $_SESSION['login'] != '')){
                header ("Location: login.php");
            }
        

to:

<?php 
session_start();
?>

<!DOCTYPE html>
<html>
    <head>
        <?php 
            define("someUnguessableVariable", "anotherUnguessableVariable");
            
            if(!isset($_SESSION['login']) && $_SESSION['login'] != ''){
                header ("Location: login.php");
                exit; // stop further executing, very important
            }
  • Follow the same structure for starting the session in all your files using sessions.
  • Make sure that your file does not have a byte order mark (BOM).
  • No space before <?php etc. this has already been established in comments.

Using a code editor such as Notepad++ https://notepad-plus-plus.org/ and to save it as UTF-8 without BOM which will ensure there is no byte order mark.

Also, using the new method for your sessions array check.

if(!isset($_SESSION['login']) && $_SESSION['login'] != ''){

Also check to see that none of your included/required files have the same issues, including login.php.


Footnotes:

Inside Notepad++'s dropdown menu, you will see

  • Encoding. It will show you what the present file's encoding is set to.

If it does show a byte order mark, follow these steps:

  1. Click on "Encoding".
  2. Convert to UTF-8 without BOM
  3. Save the file.
  • Do this for all your files.

Reference(s):


Sidenote:

You should change $stmt->execute(); to

if(!$stmt->execute()){
    trigger_error("there was an error....".$conn->error, E_USER_WARNING);
}
  • It's better to catch possible errors in your query.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Joomla login page, if user is already logged redirect to home page

From Dev

Joomla login page, if user is already logged redirect to home page

From Dev

How to check if a user is logged in and if not redirect to the login screen

From Dev

How do I redirect away from the login page, if the user is already logged in in Django?

From Dev

How to redirect to jsp login page, if user does not logged in already, Java servlet?

From Dev

Redirect to login page if user is not logged in

From Dev

How do I redirect a user to their home page if they are already logged in?

From Dev

How to prevent user to access login page in django when already logged in?

From Dev

How to redirect already authenticated user from login page to home page

From Dev

How to redirect already authenticated user from login page to home page

From Dev

Redirect user who already logged in PHP

From Dev

redirect to login index page if user not logged in?

From Dev

Redirect to login page unless a user is logged in

From Dev

Redirect to login page if user is not logged in wordpress?

From Dev

ActiveAdmin Gem: Redirect user to login page if not logged in

From Dev

how to redirect user to profile page if already user is logedin in php mysql

From Dev

user already logged in but it try to open login link then how to redirect specified path in laravel

From Dev

Check if user is already logged in

From Dev

How to check if user is already logged into instagram

From Dev

ZF2 redirect to login page on every page if user is not logged in

From Dev

ZF2 redirect to login page on every page if user is not logged in

From Dev

Devise Redirect if User Already Logged in

From Dev

Joomla: redirect to login page if user is not logged in and back in custom component

From Dev

Redirect to Login if user not logged in Laravel

From Dev

How to check if user is logged in at custom page in Opencart

From Dev

Worklight - How to check if a client is already logged in, then pass the login screen

From Dev

How to avoid showing login page if already logged on with angularjs?

From Dev

How I can disable login page for users who logged in already

From Dev

if user already logged in, when user refresh the page redirect to dashboard page in React js

Related Related

  1. 1

    Joomla login page, if user is already logged redirect to home page

  2. 2

    Joomla login page, if user is already logged redirect to home page

  3. 3

    How to check if a user is logged in and if not redirect to the login screen

  4. 4

    How do I redirect away from the login page, if the user is already logged in in Django?

  5. 5

    How to redirect to jsp login page, if user does not logged in already, Java servlet?

  6. 6

    Redirect to login page if user is not logged in

  7. 7

    How do I redirect a user to their home page if they are already logged in?

  8. 8

    How to prevent user to access login page in django when already logged in?

  9. 9

    How to redirect already authenticated user from login page to home page

  10. 10

    How to redirect already authenticated user from login page to home page

  11. 11

    Redirect user who already logged in PHP

  12. 12

    redirect to login index page if user not logged in?

  13. 13

    Redirect to login page unless a user is logged in

  14. 14

    Redirect to login page if user is not logged in wordpress?

  15. 15

    ActiveAdmin Gem: Redirect user to login page if not logged in

  16. 16

    how to redirect user to profile page if already user is logedin in php mysql

  17. 17

    user already logged in but it try to open login link then how to redirect specified path in laravel

  18. 18

    Check if user is already logged in

  19. 19

    How to check if user is already logged into instagram

  20. 20

    ZF2 redirect to login page on every page if user is not logged in

  21. 21

    ZF2 redirect to login page on every page if user is not logged in

  22. 22

    Devise Redirect if User Already Logged in

  23. 23

    Joomla: redirect to login page if user is not logged in and back in custom component

  24. 24

    Redirect to Login if user not logged in Laravel

  25. 25

    How to check if user is logged in at custom page in Opencart

  26. 26

    Worklight - How to check if a client is already logged in, then pass the login screen

  27. 27

    How to avoid showing login page if already logged on with angularjs?

  28. 28

    How I can disable login page for users who logged in already

  29. 29

    if user already logged in, when user refresh the page redirect to dashboard page in React js

HotTag

Archive