简体   繁体   中英

Check whether user is logged in or not

I am doing a web-application using PHP for job searching.

I have one query; when user is not logged in and wants to apply for the job given by clicking 'apply' button, he redirects to the login page. If the user is logged in when clicking, he should get directly to the application page. I'm not sure how to implement this.

I'm confused because I'm new to PHP.

您的问题非常模糊-可能从PHP中的身份验证开始

You could store a value in the Session called "Login" and set this when the user logs in. This can also be used to re-direct the user if they haven't been logged in:

<?php

  // check that the session variable does exist
  // check that the user 'LoggedIn' has been set to 1 (true)
  if (!isset($_SESSION['LoggedIn']) && $_SESSION['LoggedIn'] != 1)
  {
       // redirect to login page for user to authenticate themselves.
       // pass page location (with parameters if necessary) to redirect
       // the user on successful login.
       header("Location: Login.php?redir=ApplyForJob.php?JobID=12345");
  }
  else
  {
       // user is logged in
       // redirect the user directly to the apply for job page.
       header("Location: ApplyForJob.php?JobID=12345");
  }

?>

Well, when the user clicks on 'apply' in your application the user is redirected to the login page if he is not logged in(which you can check if user session exists or not), remember when you redirect the page send the url of the current page in parameters to your login page so that when the user logs in he can be redirected back to the previous page and click on apply for that particular job.....
This is how the logic works, if you want the php, mysql explanation it would take some time for you to understand as you yourself conceded you are new to php..

Can you, when the user logs in, assigns a $_Session variable to that user? ie, after authentication, you set the $_SESSION['user'] variable.

$_SESSION['user']='admin';

So if you want to check whether the user is already log in after that, just use this:

if(isset($_SESSION['user']))
{
  // user is login, direct to the job page
}

else
{
  // no login, go to the login page
}

On each page set a cookie or session to which page they were just on:

$expire=time()+60*60*24*30;
setcookie("wherewasi","",time() - 1000);
setcookie("wherewasi",$_SERVER['REQUEST_URI'], $expire);

Then after login redirect them:

$loc = ($_COOKIE['wherewasi'])?$_COOKIE['wherewasi']:'index.php';
header("location: ".$loc);
exit();

There are two things that you need to worry about... checking that they've logged in, and then once they've logged in, directing them to the correct page.

This is all about 'saving state' across page requests. To do this you need can use cookies or more usefully sessions (which may be done via cookies or handled by the PHP engine for you automatically).

Sessions are probably a good way to go. To use sessions, every page needs to start with a

<?php session_start(); ?>

at the very least, before any html code that writes to the browser.

Once that's done you can use your the session variable to store

<?php $_SESSION['user']='joe_blow'; ?>

(and check)

<?php
  if(isset($_SESSION['user']) && $_SESSION['user']!='' {
     // do something
  }
?>

whether the user is logged in, and which page they need to be redirected to after login.

<?php header("location: ".$_SESSION['redirect_location']));

But in order to write the any more useful code I think people would need to know what authentication method you were using... (How are you doing your login? Are you storing ID's in a database? Are you using an off-the-shelf package?)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM