bernd commited on 2007-06-25 19:17:14
Zeige 8 geänderte Dateien mit 191 Einfügungen und 4 Löschungen.
git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@521 87cf0b9e-d624-0410-a070-f6ee81989793
... | ... |
@@ -17,6 +17,17 @@ function db_query($query) |
17 | 17 |
} |
18 | 18 |
|
19 | 19 |
|
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 |
+ |
|
20 | 31 |
function logger($scriptname, $scope, $message) |
21 | 32 |
{ |
22 | 33 |
$user = 'NULL'; |
... | ... |
@@ -143,6 +154,23 @@ function html_form($form_id, $scriptname, $querystring, $content) |
143 | 154 |
} |
144 | 155 |
|
145 | 156 |
|
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 |
+ |
|
146 | 174 |
|
147 | 175 |
|
148 | 176 |
?> |
... | ... |
@@ -22,5 +22,10 @@ function filter_shell( $input ) |
22 | 22 |
return ereg_replace('[^-[:alnum:]\_\.\+ßäöüÄÖÜ/%§=]', '', $input ); |
23 | 23 |
} |
24 | 24 |
|
25 |
+function check_emailaddr( $input ) |
|
26 |
+{ |
|
27 |
+ return (preg_match("/^[a-z]+[a-z0-9]*[\.|\-|_]?[a-z0-9]+@([a-z0-9]*[\.|\-]?[a-z0-9]+){1,4}\.[a-z]{2,4}$/i", $input ) == 1); |
|
28 |
+} |
|
29 |
+ |
|
25 | 30 |
|
26 | 31 |
?> |
... | ... |
@@ -23,7 +23,7 @@ foreach ($config['modules'] as $module) |
23 | 23 |
$menu[$key]["file"] = $prefix."go/".$module."/".$menu[$key]["file"]; |
24 | 24 |
$weight = $menu[$key]["weight"]; |
25 | 25 |
if (array_key_exists($weight, $weighted_menuitem)) |
26 |
- array_merge($weighted_menuitem[$weight], array($key => $menu[$key])); |
|
26 |
+ $weighted_menuitem[$weight] = array_merge($weighted_menuitem[$weight], array($key => $menu[$key])); |
|
27 | 27 |
else |
28 | 28 |
$weighted_menuitem[$weight] = array($key => $menu[$key]); |
29 | 29 |
} |
... | ... |
@@ -58,9 +58,7 @@ $menuitem["logout"]["file"] = "logout.php"; |
58 | 58 |
|
59 | 59 |
|
60 | 60 |
?> |
61 |
- |
|
62 |
- |
|
63 |
-<?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?> |
|
61 |
+<?php echo '<?xml version="1.0" encoding="utf-8"?>'."\n"; ?> |
|
64 | 62 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" |
65 | 63 |
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
66 | 64 |
|
... | ... |
@@ -0,0 +1,51 @@ |
1 |
+<?php |
|
2 |
+ |
|
3 |
+require_once('inc/db_connect.php'); |
|
4 |
+ |
|
5 |
+function customer_with_email($email) |
|
6 |
+{ |
|
7 |
+ $email = mysql_real_escape_string($email); |
|
8 |
+ $result = db_query("SELECT kundennr FROM kundendaten.kundenkontakt WHERE wert='{$email}' LIMIT 1;"); |
|
9 |
+ if (mysql_num_rows($result) == 0) |
|
10 |
+ return NULL; |
|
11 |
+ else |
|
12 |
+ return mysql_fetch_object($result)->kundennr; |
|
13 |
+} |
|
14 |
+ |
|
15 |
+ |
|
16 |
+ |
|
17 |
+function create_customer($data) |
|
18 |
+{ |
|
19 |
+ |
|
20 |
+ if (customer_with_email($data['email']) !== NULL) |
|
21 |
+ { |
|
22 |
+ logger('modules/register/include/register.php', 'register', "Attempt to create customer with duplicate email »{$data['email']}«"); |
|
23 |
+ return NULL; |
|
24 |
+ } |
|
25 |
+ |
|
26 |
+ $anrede = mysql_escape_string($data['anrede']); |
|
27 |
+ $firma = mysql_escape_string($data['firma']); |
|
28 |
+ $vorname = mysql_escape_string($data['vorname']); |
|
29 |
+ $nachname = mysql_escape_string($data['nachname']); |
|
30 |
+ $email = mysql_escape_string($data['email']); |
|
31 |
+ |
|
32 |
+ logger('modules/register/include/register.php', 'register', "Creating new account: {$anrede} / {$firma} / {$vorname} / {$nachname} / {$email}"); |
|
33 |
+ |
|
34 |
+ $realname = maybe_null(chop($vorname.' '.$nachname)); |
|
35 |
+ |
|
36 |
+ $anrede = maybe_null($anrede); |
|
37 |
+ $firma = maybe_null($firma); |
|
38 |
+ $vorname = maybe_null($vorname); |
|
39 |
+ $nachname = maybe_null($nachname); |
|
40 |
+ |
|
41 |
+ db_query("BEGIN"); |
|
42 |
+ db_query("INSERT INTO kundendaten.kunden (firma, nachname, vorname, anrede) VALUES ({$firma}, {$nachname}, {$vorname}, {$anrede})"); |
|
43 |
+ $customerno = mysql_insert_id(); |
|
44 |
+ db_query("INSERT INTO kundendaten.kundenkontakt (typ, comment, wert, name, kundennr) VALUES ('email', 'extern', '{$email}', {$realname}, {$customerno})"); |
|
45 |
+ db_query("COMMIT"); |
|
46 |
+ return $customerno; |
|
47 |
+ |
|
48 |
+} |
|
49 |
+ |
|
50 |
+ |
|
51 |
+?> |
... | ... |
@@ -0,0 +1,90 @@ |
1 |
+<?php |
|
2 |
+$title = "Bei schokokeks.org registrieren"; |
|
3 |
+ |
|
4 |
+//require_once('inc/error.php'); |
|
5 |
+//system_failure("Diese Funktion ist noch nicht fertiggestellt."); |
|
6 |
+ |
|
7 |
+require_once('newpass.php'); |
|
8 |
+ |
|
9 |
+$fail = array(); |
|
10 |
+$success = false; |
|
11 |
+$customerno = 0; |
|
12 |
+ |
|
13 |
+if (count($_POST) > 0) |
|
14 |
+{ |
|
15 |
+ require_once('inc/security.php'); |
|
16 |
+ foreach (array_keys($_POST) AS $key) |
|
17 |
+ { |
|
18 |
+ $_POST[$key] = filter_input_general(chop($_POST[$key])); |
|
19 |
+ } |
|
20 |
+ if (! in_array($_POST['anrede'], array("Herr", "Frau", "Firma"))) |
|
21 |
+ { |
|
22 |
+ array_push($fail, 'Was haben Sie mit dem Anrede-Feld angestellt?!'); |
|
23 |
+ } |
|
24 |
+ if (! ( (strlen($_POST['nachname']) > 1 || strlen($_POST['firma']) > 1) && strlen($_POST['email']) > 1 )) |
|
25 |
+ { |
|
26 |
+ array_push($fail, 'Sie müssen mindestens die Felder »Nachname« oder »Firma« sowie »E-Mail« ausfüllen!'); |
|
27 |
+ } |
|
28 |
+ elseif (! check_emailaddr($_POST['email'])) |
|
29 |
+ { |
|
30 |
+ array_push($fail, 'Die E-Mail-Adresse scheint nicht korrekt zu sein!'); |
|
31 |
+ } |
|
32 |
+ if (empty($fail)) |
|
33 |
+ { |
|
34 |
+ require_once('register.php'); |
|
35 |
+ $customerno = create_customer($_POST); |
|
36 |
+ if ($customerno == NULL) |
|
37 |
+ { |
|
38 |
+ array_push($fail, 'Diese E-Mail-Adresse ist bereits in unserer Datenbank vorhanden!'); |
|
39 |
+ } |
|
40 |
+ elseif (create_token($customerno)) |
|
41 |
+ { |
|
42 |
+ require_once('mail.php'); |
|
43 |
+ require_once('inc/base.php'); |
|
44 |
+ send_customer_token($customerno); |
|
45 |
+ logger("modules/index/new_password.php", "pwrecovery", "token sent for customer »{$_POST['customerno']}«"); |
|
46 |
+ $success = true; |
|
47 |
+ #success_msg('Die angegebenen Daten wurden gespeichert, Sie sollten umgehend eine E-Mail erhalten.'); |
|
48 |
+ } |
|
49 |
+ } |
|
50 |
+} |
|
51 |
+ |
|
52 |
+ |
|
53 |
+if ($success) |
|
54 |
+{ |
|
55 |
+ output('<h3>Neues Konto eingerichtet</h3> |
|
56 |
+ <p>Wir bestätigen hiermit die Einrichtung eines Kundenkontos und bedanken uns für Ihr Vertrauen.</p> |
|
57 |
+ |
|
58 |
+ <h4>Was jetzt?</h4> |
|
59 |
+ <p>Sie erhalten jetzt von uns eine E-Mail an die soeben eingegebene E-Mail-Adresse (»'.$_POST['email'].'«). Beachten Sie bitte, dass manche E-Mail-Spamfilter die Zustellung um einegewisse Zeit verzögern können. Sofern Sie nach ca. einer Stunde noch keine E-Mail erhalten haben, schreiben Sie bitte <a href="mailto:root@schokokeks.org">an die Administratoren.</a></p> |
|
60 |
+ |
|
61 |
+ <p>In der E-Mail finden Sie einen Link. Wenn Sie diesen aufrufen, dann erhalten Sie die Möglichkeit, ein Passwort zu setzen. Mit diesem Passwort und der Kundennummer <strong>'.(string) $customerno.'</strong> können Sie sich daraufhin an unserem Web-Interface anmelden.'); |
|
62 |
+} |
|
63 |
+else |
|
64 |
+{ |
|
65 |
+ output('<h3>Bei schokokeks.org registrieren</h3> |
|
66 |
+ <p>Hier können Sie sich bei schokokeks.org anmelden. Eine Anmeldung ist kostenlos und unverbindlich, erlaubt Ihnen aber, kostenpflichtige Dienste von schokokeks.org in Anspruch zu nehmen.</p> |
|
67 |
+ <p><strong>Gehen Sie daher sorgfältig mit den Anmeldedaten um!</strong></p> |
|
68 |
+ <p>Um Sie als Kunden identifizieren zu können, benötigen wir den Namen und die E-Mail-Adresse. Die eingegebenen Daten werden manuell bearbeitet und bei Spass-Eintragungen wird der Zugang gesperrt. Je nach dem, welche späteren Dienste Sie bei uns in Anspruch nehmen, kann es notwendig sein, dass Sie weitere Daten eingeben (z.B. Domainregistrierung).</p> |
|
69 |
+ |
|
70 |
+ <h4>Anmeldung</h4> |
|
71 |
+ <p>Um sich jetzt bei schokokeks.org anzumelden, müssen Sie hier zuerst Ihren Namen und Ihre E-Mail-Adresse eingeben.</p>'); |
|
72 |
+ |
|
73 |
+ foreach ($fail as $f) |
|
74 |
+ output('<p class="warning"><b>Fehler:</b> '.$f.'</p>'); |
|
75 |
+ |
|
76 |
+ /* FIXME: |
|
77 |
+ * Hier werden POST-Variablen benutzt, die es eventuell gar nicht gibt. Das erlaubt PHP zwar, ist aber nicht elegant. |
|
78 |
+ */ |
|
79 |
+ |
|
80 |
+ output(html_form("register_index", "", "", '<p><span class="login_label">Anrede:</span> |
|
81 |
+ '.html_select('anrede', array('Herr' => 'Herr', 'Frau' => 'Frau', 'Firma' => 'Firma'), $_POST['anrede']).' |
|
82 |
+ <p><span class="login_label">Firma:</span> <input type="text" name="firma" size="30" value="'.$_POST['firma'].'" /></p> |
|
83 |
+ <p><span class="login_label">Vorname:</span> <input type="text" name="vorname" size="30" value="'.$_POST['vorname'].'" /></p> |
|
84 |
+ <p><span class="login_label">Nachname:</span> <input type="text" name="nachname" size="30" value="'.$_POST['nachname'].'" /></p> |
|
85 |
+ <p><span class="login_label">E-Mail-Adresse:</span> <input type="text" name="email" size="30" value="'.$_POST['email'].'" /></p> |
|
86 |
+ <p><span class="login_label"> </span> <input type="submit" value="Zugang erstellen" />')); |
|
87 |
+ |
|
88 |
+} |
|
89 |
+ |
|
90 |
+?> |