瀏覽代碼

Added ability to return (on login) to last visited page on logout.

Nate Jones 10 年之前
父節點
當前提交
4dca8e76cb
共有 2 個文件被更改,包括 83 次插入3 次删除
  1. 77 1
      logout.php
  2. 6 2
      resources/check_auth.php

+ 77 - 1
logout.php

@@ -17,7 +17,7 @@
 
 	The Initial Developer of the Original Code is
 	Mark J Crane <[email protected]>
-	Portions created by the Initial Developer are Copyright (C) 2008-2012
+	Portions created by the Initial Developer are Copyright (C) 2008-2015
 	the Initial Developer. All Rights Reserved.
 
 	Contributor(s):
@@ -25,6 +25,82 @@
 */
 
 include "root.php";
+require_once "resources/require.php";
+
+//check for login return preference
+	if ($_SESSION['login']['destination_last']['boolean'] == 'true') {
+		if ($_SERVER['HTTP_REFERER'] != '') {
+			//convert to relative path
+				$referrer = substr($_SERVER['HTTP_REFERER'], strpos($_SERVER['HTTP_REFERER'], $_SERVER["HTTP_HOST"]) + strlen($_SERVER["HTTP_HOST"]));
+			//check if destination url already exists
+				$sql = "select count(*) as num_rows from v_user_settings ";
+				$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
+				$sql .= "and user_uuid = '".$_SESSION["user_uuid"]."' ";
+				$sql .= "and user_setting_category = 'login' ";
+				$sql .= "and user_setting_subcategory = 'destination' ";
+				$sql .= "and user_setting_name = 'url' ";
+				$prep_statement = $db->prepare($sql);
+				if ($prep_statement) {
+					$prep_statement->execute();
+					$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
+					$exists = ($row['num_rows'] > 0) ? true : false;
+				}
+				unset($sql, $prep_statement, $row);
+
+			//if exists, update
+				if ($exists) {
+					$sql = "update v_user_settings set ";
+					$sql .= "user_setting_value = '".$referrer."', ";
+					$sql .= "user_setting_enabled = 'true' ";
+					$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
+					$sql .= "and user_uuid = '".$_SESSION["user_uuid"]."' ";
+					$sql .= "and user_setting_category = 'login' ";
+					$sql .= "and user_setting_subcategory = 'destination' ";
+					$sql .= "and user_setting_name = 'url' ";
+					$db->exec(check_sql($sql));
+					unset($sql);
+				}
+			//otherwise, insert
+				else {
+					$sql = "insert into v_user_settings ";
+					$sql .= "( ";
+					$sql .= "user_setting_uuid, ";
+					$sql .= "domain_uuid, ";
+					$sql .= "user_uuid, ";
+					$sql .= "user_setting_category, ";
+					$sql .= "user_setting_subcategory, ";
+					$sql .= "user_setting_name, ";
+					$sql .= "user_setting_value, ";
+					$sql .= "user_setting_enabled ";
+					$sql .= ") ";
+					$sql .= "values ";
+					$sql .= "( ";
+					$sql .= "'".uuid()."', ";
+					$sql .= "'".$_SESSION['domain_uuid']."', ";
+					$sql .= "'".$_SESSION["user_uuid"]."', ";
+					$sql .= "'login', ";
+					$sql .= "'destination', ";
+					$sql .= "'url', ";
+					$sql .= "'".$referrer."', ";
+					$sql .= "'true' ";
+					$sql .= ") ";
+					$db->exec(check_sql($sql));
+					unset($sql);
+				}
+		}
+	}
+	else {
+		//disable if not to remember last
+			$sql = "update v_user_settings set ";
+			$sql .= "user_setting_enabled = 'false' ";
+			$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
+			$sql .= "and user_uuid = '".$_SESSION["user_uuid"]."' ";
+			$sql .= "and user_setting_category = 'login' ";
+			$sql .= "and user_setting_subcategory = 'destination' ";
+			$sql .= "and user_setting_name = 'url' ";
+			$db->exec(check_sql($sql));
+			unset($sql);
+	}
 
 //redirect the user to the index page
 	header("Location: ".PROJECT_PATH."/login.php");

+ 6 - 2
resources/check_auth.php

@@ -155,7 +155,7 @@ require_once "resources/require.php";
 							//prepare the uuids
 								$user_uuid = uuid();
 								$contact_uuid = uuid();
-							
+
 							//set the user_id
 								$_SESSION["user_uuid"] = $user_uuid;
 
@@ -379,10 +379,14 @@ require_once "resources/require.php";
 		//redirect the user
 			if (check_str($_REQUEST["rdr"]) !== 'n'){
 				$path = check_str($_POST["path"]);
-				if(isset($path) && !empty($path) && $path!="index2.php" && $path!="/install.php") {
+				if (isset($path) && !empty($path) && $path!="index2.php" && $path!="/install.php") {
 					header("Location: ".$path);
 					exit();
 				}
+				else if ($_SESSION['login']['destination']['url'] != '') {
+					header("Location: ".$_SESSION['login']['destination']['url']);
+					exit();
+				}
 			}
 	}