Advertisement
Guest User

Untitled

a guest
Dec 8th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.95 KB | None | 0 0
  1. <?php
  2. //#########################
  3. //### GLOBALS CONSTANTS ###
  4. //#########################
  5.  
  6.   //Number of characters in a generated session key
  7.   $KEY_LENGTH = 6;
  8.  
  9.   //All possible characters to exist within session keys
  10.   $VALID_CHAR = "0123456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ";
  11.  
  12.   //Default session end time in seconds if no end time specified
  13.   $END_TIME_OFFSET = "5400";
  14.  
  15.   //DBA Creds
  16.   $SERVERNAME = "#########";
  17.   $USERNAME = "###########";
  18.   $PASSWORD = "###########";
  19.   $DATABASE = "###########";
  20.  
  21. //###############
  22. //### GLOBALS ###
  23. //###############
  24.  
  25.   $conn = 0;
  26.  
  27.  
  28.  
  29.  
  30. connect();
  31.  
  32. // Creates a new session with random session key and start time
  33. // endTime is OPTIONAL, if provided will use that as end time OTHERWISE sets end time to (startTime + END_TIME_OFFSET)
  34. // RETURNS:
  35. //    Success: Success message stating: sessionKey, startTime, and endTime;
  36. //    Failure: Error message stating what went wrong;
  37.  
  38.   function createSession($endTime) {
  39.     global $conn;
  40.     global $END_TIME_OFFSET;
  41.  
  42.     $sessionKey = "";
  43.     // start time is now
  44.     $startTime = date('Y-m-d H:i:s');
  45.  
  46.     //If no end time given, use default end time offset
  47.     if (!isset($endTime))
  48.       $endTime = date('Y-m-d H:i:s', time()+$END_TIME_OFFSET);
  49.  
  50.     //Generate Session key, if key exists on active session, repeat till good key
  51.     do {
  52.       $sessionKey = keyGen();
  53.     } while (checkSession($sessionKey));
  54.  
  55.     //Run query
  56.     $sql = "INSERT INTO session (class_key, start_time, end_time) VALUES ('$sessionKey', '$startTime', '$endTime');";
  57.     if ($conn->query($sql) === TRUE){
  58.       $insertResponse = "Session created with session_key: $sessionKey, start_time: $startTime, and end_time: $endTime";
  59.     }
  60.     else {
  61.       $insertResponse = $conn->error;
  62.     }
  63.     echo $insertResponse;
  64.     return $insertResponse;
  65.   }
  66.  
  67. // returns randomly generated session key
  68.   function keyGen() {
  69.     global $VALID_CHAR;
  70.     global $KEY_LENGTH;
  71.     for ($i = 0; $i < $KEY_LENGTH; $i++)
  72.       $sessionKey .= substr( $VALID_CHAR, rand( 0, strlen( $VALID_CHAR)-1), 1);
  73.     return $sessionKey;
  74.  
  75.   }
  76.  
  77. // INPUT sessionKey (CASE SENSITIVE)
  78. // RETURN VALUES
  79. //    valid session:           >=1
  80. //    invalid/expired session: 0
  81.   function checkSession($sessionKey) {
  82.     global $conn;
  83.  
  84.     $now = date('Y-m-d H:i:s');
  85.  
  86.     $sql = "SELECT * FROM session WHERE class_key = BINARY '$sessionKey' AND end_time > '$now';";
  87.     $result = $conn->query($sql);
  88.  
  89.     //echo $now;
  90.     //echo $sql;
  91.     //echo $result->num_rows;
  92.     return $result->num_rows;
  93.     }
  94.  
  95.   function connect() {
  96.     global $conn;
  97.     global $SERVERNAME;
  98.     global $USERNAME;
  99.     global $PASSWORD;
  100.     global $DATABASE;
  101.  
  102.     $conn = new mysqli( $SERVERNAME, $USERNAME, $PASSWORD, $DATABASE );
  103.     if ($conn->connect_err) {
  104.       die( "Connection Failed: " . $conn->connect_error);
  105.     }
  106.   }
  107.  
  108.   function disconnect() {
  109.     global $conn;
  110.     $conn->close();
  111.   }
  112.  
  113. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement