stuff
[specialops2.git] / con.php
blobf86ae34289c362826b9bc25e4068dc1af8317458
1 <?php
2 // $Id$
4 if ( version_compare(PHP_VERSION, '5.0', '<') ) {
5 header('HTTP/1.1 500 Internal Server Error');
6 die('PHP 5.0 or higher is required.');
9 error_reporting(E_ALL|E_STRICT);
11 define('CLOCK', microtime(1));
12 define('SO2VER', '$Rev$');
15 // Empty exception types
16 class InvalidInputException extends Exception {}
17 class DatabaseException extends Exception {}
18 class RateLimitException extends Exception {}
20 // SPL exception names only in >=5.1
21 if (version_compare(PHP_VERSION, '5.1', '<')) {
22 class RuntimeException extends Exception {}
23 class LengthException extends Exception {}
27 // Keep these numbers in order, and don't change them unless your DB is empty
28 define('LVL_RESTRICTED', 0);
29 define('LVL_USER', 10);
30 define('LVL_ADMIN', 60);
31 define('LVL_DEV', 70);
33 // Class loader
34 function __autoload($classname)
36 require 'lib/class.'.$classname.'.php';
40 // Debug settings
41 if ( !isset($_SERVER['REMOTE_ADDR']) || $_SERVER['REMOTE_ADDR'] === $_SERVER['SERVER_ADDR'] )
42 define('DEVELOPER', 1);
45 // Exception handler
46 if ( defined('DEVELOPER') ) {
47 ob_start();
49 function e_handler($exception)
51 header('HTTP/1.1 500 Internal Server Error');
52 header('Content-Type: text/html; charset=UTF-8');
53 echo '<pre class="error">',$exception->__toString(),'</pre>';
54 exit;
56 } else {
57 function e_handler($exception)
59 restore_error_handler();
60 ini_set('display_errors', 0);
62 if ( !headers_sent() ) {
63 header('HTTP/1.1 500 Internal Server Error');
64 header('Content-Type: text/html; charset=UTF-8');
67 echo '<p class="error">An unrecoverable error has been detected and page execution has been halted.</p>',"\n",
68 '<p class="error">Try reloading the page, or contact the site owner if this happens consistently.</p>';
69 trigger_error($exception->getMessage(), E_USER_ERROR);
70 exit;
73 set_exception_handler('e_handler');
76 // Database Auth+object
77 require 'mysql_ident.php';
79 if ( defined('DEVELOPER') )
80 $DB = new debugmysqli($DB['host'], $DB['user'], $DB['pass'], $DB['db']);
81 else
82 $DB = new mysqli($DB['host'], $DB['user'], $DB['pass'], $DB['db']);
84 if ( mysqli_connect_errno() ) {
85 header('Location: servererror');
89 // Login cookie setting hack
90 if ( isset($_POST['login'], $_POST['u'], $_POST['p']) ) {
91 list($_COOKIE['u'], $_COOKIE['p']) = array($_POST['u'], $_POST['p']);
95 // User Auth+object
96 if ( isset($_POST['logout']) ) {
98 setcookie('u', null, 1);
99 setcookie('p', null, 1);
100 unset($_COOKIE);
101 $user = new anonuser;
103 } elseif ( isset($_COOKIE['u'], $_COOKIE['p']) ) {
105 $q = $DB->query('SELECT `userid` FROM `users`
106 WHERE `alias` = \''.$DB->escape_string($_COOKIE['u']).'\'
107 AND `password` = AES_ENCRYPT(\''.$DB->escape_string($_COOKIE['p']).'\', `reg_ip`)');
109 if ( 1 === $q->num_rows ) {
110 setcookie('u', $_COOKIE['u'], time()+86400*7);
111 setcookie('p', $_COOKIE['p'], time()+86400*7);
113 if ( isset($_POST['login']) )
114 $DB->query('UPDATE `users` SET `last_login_ip` = INET_ATON(\''.$_SERVER['REMOTE_ADDR'].'\')
115 WHERE `alias` = \''.$DB->escape_string($_COOKIE['u']).'\'');
117 if ( empty($prefetch) )
118 $prefetch = array();
120 $user = new authuser($q->fetch_object()->userid, $prefetch);
121 } else {
122 setcookie('u', null, 1);
123 setcookie('p', null, 1);
125 $user = new anonuser;
127 } else {
128 $user = new anonuser;
131 $page = new page;