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 |
+?> |