how to redirect the user back to desired URL after login page in PHP? -
ok. have page called plans.php, inside have 3 links (plan 1, plan 2, plan 3). each link has own page , redirects login page (login.php, works fine). if user not logged in when click lets on "plan 2" force user login can see desired page, depends of "plan" user chooses.
problem: i'm having hard time redirecting user "desired plan (url)".
solution: if user chooses "plan 1 or plan 2 (whatever plan)" force user login (i have working fine), after user logs in user has redirected respective "plan page".
if familiar issue please help.
plans.php
<a href="plan-1.php">plan 1</a> <a href="plan-2.php">plan 2</a> <a href="plan-3.php">plan 3</a>
plan-2.php
<?php ob_start(); include "header.php"; if(!$current_user) { require_login(); } ob_end_flush(); ?>
html code: user going see after login page.
<p>hello, have been redirected "plan 2"</p>
login.php
<?php ob_start(); include "header.php"; if($current_user) { req_logout(); } ob_end_flush(); ?>
html code:
<form action="authenticate.php" method="post"> <label for="email">email</label><br/> <input type"text" class="input" name="username" id="username" /> <label for="password">password</label><br/> <input name="password" type="password" class="input" id="password"/> <input type="submit" value="sign in" class="submit"/> </form>
this file verifies user credentials login form submits to.
authenticate.php
<?php session_start(); require_once "db.php"; db_connect(); require_once "auth.php"; $user_id = credentials_valid($_post['username'], $_post['password']); if($user_id){ log_in($user_id); if($_session['redirect_to']){ header("location: " . $_session['redirect_to']); unset($_session['redirect_to']); }else{ // default page after user logs in. header("location: manage.php"); } }else{ header("location: login.php?error=1"); exit("you being redirected"); } ?>
i have php functions in file.
auth.php
// logs user $user function log_in($user_id){ $_session['user_id'] = $user_id; } // returns logged in user (if any) function current_user(){ static $current_user; if(!$current_user){ if($_session['user_id']){ $user_id = intval($_session['user_id']); $query = "select * `********` `id` = $user_id"; $result = mysql_query($query); if(mysql_num_rows($result)){ $current_user = mysql_fetch_assoc($result); return $current_user; } } } return $current_user; } // requires current user (restrict access page) function require_login(){ if(!$current_user){ $_session['redirect_to'] = $_server['request_uri']; header('location: signin.php'); exit("you must log in."); } }
try send parameter when user clicks on plan link. pass or save parameter , after successful login, use parameter redirect proper page.
in plan-2.php
session_start(); $_session['redirect_to']="plan-2.php";
edit: here complete solution using parameter sending via get
, post
(as have been asked for):
plans.php
<a href="plan.php?no=3">plan 1</a> <a href="plan.php?no=3">plan 2</a> <a href="plan.php?no=3">plan 3</a>
plan.php
<?php ob_start(); $getbackurlid=$_get['no']; include "header.php"; if(!$current_user) { require_login($getbackurlid); } ob_end_flush(); ?>
signin.php
<?php ob_start(); include "header.php"; if($current_user) { req_logout(); } ob_end_flush(); ?>
html code:
<form action="authenticate.php" method="post"> <label for="email">email</label><br/> <input type"text" class="input" name="username" id="username" /> <label for="password">password</label><br/> <input name="password" type="password" class="input" id="password"/> <input type"hidden" name="url" value="<?php echo $_get['url'];?>" /> <input type="submit" value="sign in" class="submit"/> </form>
authenticate.php
<?php session_start(); require_once "db.php"; db_connect(); require_once "auth.php"; $user_id = credentials_valid($_post['username'], $_post['password']); if($user_id){ log_in($user_id); if($_post['url']){ header("location: plan.php?no=".$_post['url']); unset($_session['redirect_to']); }else{ // default page after user logs in. header("location: manage.php"); } }else{ header("location: login.php?error=1"); exit("you being redirected"); } ?>
auth.php
// logs user $user function log_in($user_id){ $_session['user_id'] = $user_id; } // returns logged in user (if any) function current_user(){ static $current_user; if(!$current_user){ if($_session['user_id']){ $user_id = intval($_session['user_id']); $query = "select * `********` `id` = $user_id"; $result = mysql_query($query); if(mysql_num_rows($result)){ $current_user = mysql_fetch_assoc($result); return $current_user; } } } return $current_user; } // requires current user (restrict access page) function require_login($getbackurlid){ if(!$current_user){ $_session['redirect_to'] = $_server['request_uri']; header('location: signin.php?url=$getbackurlid'); exit("you must log in."); } }
Comments
Post a Comment