0d1b76072a5fdddb7ac45b1d3bc414d6365aadac
bernd webinterface => /webinterface

bernd authored 17 years ago

1) <?php
2) 
bernd Logging aktiviert

bernd authored 16 years ago

3) require_once('inc/db_connect.php');
4) 
bernd sql-abfragen abstrahiert

bernd authored 16 years ago

5) 
6) function db_query($query)
7) {
8)   DEBUG($query);
9)   $result = @mysql_query($query);
10)   if (mysql_error())
11)   {
12)     $error = mysql_error();
13)     logger("inc/base.php", "dberror", "mysql error: {$error}");
14)     system_failure('Beim Datenbankzugriff ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.$error.') an einen Administrator.');
15)   }
16)   return $result; 
17) }
18) 
19) 
bernd Neues Modul für "Kunde werden"

bernd authored 16 years ago

20) 
21) function maybe_null($value)
22) {
23)   if (strlen( (string) $value ) > 0)
24)     return "'{$value}'";
25)   else
26)     return 'NULL';
27) }
28) 
29) 
30) 
bernd Logging aktiviert

bernd authored 16 years ago

31) function logger($scriptname, $scope, $message)
32) {
33)   $user = 'NULL';
34)   if ($_SESSION['role'] == ROLE_SYSTEMUSER)
35)     $user = "'{$_SESSION['userinfo']['username']}'";
36)   elseif ($_SESSION['role'] == ROLE_CUSTOMER)
37)     $user = "'{$_SESSION['customerinfo']['customerno']}'";
38)   
39)   $remote = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
40) 
41)   $scriptname = mysql_real_escape_string($scriptname);
42)   $scope = mysql_real_escape_string($scope);
43)   $message = mysql_real_escape_string($message);
44) 
bernd sql-abfragen abstrahiert

bernd authored 16 years ago

45)   db_query("INSERT INTO misc.scriptlog (remote, user,scriptname,scope,message) VALUES ('{$remote}', {$user}, '{$scriptname}', '{$scope}', '{$message}');");
bernd Logging aktiviert

bernd authored 16 years ago

46) }
47) 
48) 
bernd webinterface => /webinterface

bernd authored 17 years ago

49) function output($arg)
50) {
51)   global $output;
52)   $output .= $arg;
53) }
54) 
55) 
56) function random_string($nc, $a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') {
57)     $l=strlen($a)-1; $r='';
58)     while($nc-->0) $r.=$a{mt_rand(0,$l)};
59)     return $r;
60)  }
61) 
62) 
63) function are_you_sure($query_string, $question)
64) {
bernd Neues Jabber-Modul (noch ni...

bernd authored 16 years ago

65)   global $debugmode;
66)   if ($debugmode)
67)     $query_string = 'debug&amp;'.$query_string;
bernd webinterface => /webinterface

bernd authored 17 years ago

68)   $token = random_string(20);
bernd XSRF-kram fixed

bernd authored 16 years ago

69)   $_SESSION['are_you_sure_token'] = $token;
bernd webinterface => /webinterface

bernd authored 17 years ago

70)   output("<form action=\"?{$query_string}\" method=\"post\">\n");
71)   output("<p class=\"confirmation\">{$question}<br />\n");
72)   output("<input type=\"hidden\" name=\"random_token\" value=\"{$token}\" />\n");
bernd </form>

bernd authored 16 years ago

73)   output("<input type=\"submit\" name=\"really\" value=\"Ja\" />\n<input type=\"submit\" name=\"not_really\" value=\"Nein\" /></p>\n");
74)   output("</form>\n");
bernd webinterface => /webinterface

bernd authored 17 years ago

75) }
76) 
77) 
78) function user_is_sure()
79) {
80)   if (isset($_POST['really']))
81)   {
bernd XSRF-kram fixed

bernd authored 16 years ago

82)     if ($_POST['random_token'] == $_SESSION['are_you_sure_token'])
bernd webinterface => /webinterface

bernd authored 17 years ago

83)       return true;
84)     else
85)       system_failure("Possible Cross-site-request-forgery detected!");
86)   }
87)   elseif (isset($_POST['not_really']))
88)     return false;
89)   else
90)     return NULL;
91) }
92) 
93) 
94) 
bernd XSRF-kram fixed

bernd authored 16 years ago

95) function generate_form_token($form_id)
96) {
97)   require_once("inc/debug.php");
98)   $sessid = session_id();
99)   if ($sessid == "") 
100)   {
101)     DEBUG("Uh? Session not running? Wtf?");
bernd Neues Jabber-Modul (noch ni...

bernd authored 16 years ago

102)     system_failure("Internal error!");
bernd XSRF-kram fixed

bernd authored 16 years ago

103)   }
104)   if (! isset($_SESSION['session_token']))
105)     $_SESSION['session_token'] = random_string(10);
bernd Neues Jabber-Modul (noch ni...

bernd authored 16 years ago

106)   $formtoken = hash('sha256', $sessid.$form_id.$_SESSION['session_token']);
bernd XSRF-kram fixed

bernd authored 16 years ago

107)   return '<input type="hidden" name="formtoken" value="'.$formtoken.'" />'."\n";
108) }
109) 
110) 
111) function check_form_token($form_id)
112) {
113)   $formtoken = $_POST['formtoken'];
114)   $sessid = session_id();
115)   if ($sessid == "") 
116)   {
117)     DEBUG("Uh? Session not running? Wtf?");
bernd Neues Jabber-Modul (noch ni...

bernd authored 16 years ago

118)     system_failure("Internal error!");
bernd XSRF-kram fixed

bernd authored 16 years ago

119)   }
120) 
bernd Neues Jabber-Modul (noch ni...

bernd authored 16 years ago

121)   $correct_formtoken = hash('sha256', $sessid.$form_id.$_SESSION['session_token']);
bernd XSRF-kram fixed

bernd authored 16 years ago

122) 
123)   if (! ($formtoken == $correct_formtoken))
124)     system_failure("Possible cross-site-request-forgery!");
125) }
126) 
bernd Neues Jabber-Modul (noch ni...

bernd authored 16 years ago

127) 
128) 
129) function internal_link($file, $label, $querystring = '')
130) {
131)   $debugstr = '';
132)   global $debugmode;
133)   if ($debugmode)
134)     $debugstr = 'debug&amp;';
135)   $querystring = str_replace('&', '&amp;', $querystring);
136) 
137)   return "<a href=\"{$file}?{$debugstr}${querystring}\">{$label}</a>";
138) }
139) 
140) 
141) function html_form($form_id, $scriptname, $querystring, $content)
142) {
143)   $debugstr = '';
144)   global $debugmode;
145)   if ($debugmode)
146)     $debugstr = 'debug&amp;';
147)   $querystring = str_replace('&', '&amp;', $querystring);
148)   $ret = '';
149)   $ret .= '<form action="'.$scriptname.'?'.$debugstr.$querystring.'" method="post">'."\n";
150)   $ret .= generate_form_token($form_id);
151)   $ret .= $content;
152)   $ret .= '</form>';
153)   return $ret;  
154) }
155) 
156) 
bernd Neues Modul für "Kunde werden"

bernd authored 16 years ago

157) function html_select($name, $options, $default)
158) {
159)   require_once('inc/security.php');
160)   $ret = "<select name=\"{$name}\" size=\"1\">\n";
161)   foreach ($options as $key => $value)
162)   {
163)     $selected = '';
164)     if ($default == $key)
165)       $selected = ' selected="selected" ';
166)     $key = filter_input_general($key);
167)     $value = filter_input_general($value);
168)     $ret .= "  <option value=\"{$key}\"{$selected}>{$value}</option>\n";
169)   }
170)   $ret .= '</select>';
171)   return $ret;
172) }
173) 
bernd Neues Jabber-Modul (noch ni...

bernd authored 16 years ago

174) 
175)