Fix for issue #291
[openemr.git] / library / pid.inc
blob5e758fa4be6e4bbdca7aacd9191c6ca770860b9d
1 <?php
2 // This program is free software; you can redistribute it and/or
3 // modify it under the terms of the GNU General Public License
4 // as published by the Free Software Foundation; either version 2
5 // of the License, or (at your option) any later version.
7 require_once("$srcdir/../interface/globals.php");
8 require_once("$srcdir/log.inc");
10 // Function called to set the global session variable for patient id (pid) number.
11 function setpid($new_pid) {
12   global $pid, $encounter;
14   // Escape $new_pid by forcing it to an integer to protect from sql injection
15   $new_pid_int = intval($new_pid);
16   // If the $new_pid was not an integer, then send an error to error log
17   if (!is_numeric($new_pid)) {
18     error_log("Critical OpenEMR Error: Attempt to set pid to following non-integer value was denied: ".$new_pid,0);
19     error_log("Requested pid ".$new_pid,0);
20     error_log("Returned pid ".$new_pid_int,0);
21   }
23   // Be careful not to clear the encounter unless the pid is really changing.
24   if (!isset($_SESSION['pid']) || $pid != $new_pid_int || $pid != $_SESSION['pid']) {
25     $_SESSION['encounter'] = $encounter = 0;
26   }
28   // Set pid to the escaped pid
29   $_SESSION['pid'] = $new_pid_int;
30   $pid = $new_pid_int;
32   newEvent("view", $_SESSION["authUser"], $_SESSION["authProvider"], 1, $pid);