//set to false for production, mail goes to real recipient
$IsDemoSystem=true;
$DemoMailAddr="konrad@localhost";
+$ErrorMailAddr="konrad@localhost";
////////////
<?php
// +----------------------------------------------------------------------
-// | PHP Source
+// | PHP Source: some global basic functions
// +----------------------------------------------------------------------
// | Copyright (C) 2008 by Peter Keller <peter@silmor.de>
+// | (c) Konrad Rosenbaum <konrad@silmor.de>, 2010-2017
// +----------------------------------------------------------------------
// |
// | Copyright: See COPYING file that comes with this distribution
\returns true if the value has e-mail syntax */
function isEmail($value)
{
- return preg_match("/^[a-zA-Z0-9\._-]+@[a-zA-Z0-9\._-]+$/", $value) != false;
+ if(defined('FILTER_FLAG_EMAIL_UNICODE'))$opt=FILTER_FLAG_EMAIL_UNICODE;
+ else $opt=0;
+ return filter_var($value,FILTER_VALIDATE_EMAIL,$opt) != false;
+ //old regex: preg_match("/^[a-zA-Z0-9\._-]+@[a-zA-Z0-9\._-]+$/", $value)
}
/**redirects the browser to index.php*/
if(!isset($HTTPARGS[$nameidx]) || !isset($HTTPARGS[$passidx]) || !isset($HTTPARGS[$passidx2]))
return self::loginError("create");
//check whether the chosen email is valid and does not exist yet
- $mail=$HTTPARGS[$nameidx];
+ $mail=trim($HTTPARGS[$nameidx]);
+ if(!isEmail($mail))
+ return self::loginError("invalid");
$ct=WTcustomer::selectFromDB("email=".$db->escapeString($mail));
if(count($ct)>0)
return self::loginError("exist");
}catch(Exception $ex){
//log to (Apache) log file
error_log($ex->getMessage());
+ //try to send error mail
+ if(isset($ErrorMailAddr)){
+ try{
+ $txt=$ex->getMessage();
+ mail($ErrorMailAddr, "MagicSmoke Error: $txt", "An error occured in MagicSmoke:\n$txt\nMode: $mode\n\nStack Trace:\n".$ex->getTraceAsString());
+ }catch(Exception $x){}
+ }
//get error template (or fallback for it)
try{
$p=$twig->loadTemplate("error.html");
--- /dev/null
+<html>
+<title>Error</title>
+<body>
+<h1>Fehler</h1>
+
+Ein Fehler ist aufgetreten:
+
+{{ErrorText}}<p/>
+
+{# have the following only in development mode!
+It prints a full stack trace, which you probably do not want in production.
+<pre>
+{{ErrorTrace}}
+</pre>#}
+
+<hr/>
+<a href="{{script.root}}">Zurück zum Shop</a><p/>
+
+<a href="{{script.basedir}}/..">Zur Homepage</a>
+</html>
\ No newline at end of file
--- /dev/null
+{% extends 'layout.html' %}
+{% block title %}Loginfehler{% endblock %}
+
+{% block page %}
+{% if(errorType=="login") %}
+ Der Login existiert nicht, ist keine e-Mail-Adresse oder das Passwort ist falsch (Groß- & Kleinschreibung beachten).
+{% elseif(errorType=="exist") %}
+ Der Login existiert bereits, bitte wählen Sie eine andere Mailadresse (Groß- & Kleinschreibung beachten).
+{% elseif(errorType=="mismatch") %}
+ Das Passwort stimmt nicht überein oder ist leer. Bitte gehen Sie zurück und versuchen Sie es noch einmal.
+{% elseif(errorType=="invalid") %}
+ Die E-Mail-Adresse ist nicht gültig. Bitte gehen Sie zurück und geben Sie eine gültige Adresse ein.
+{% else %}
+Unbekannte Fehlerart: {{errorType}}
+{% endif %}
+<p/>
+Falls Sie Ihr Passwort vergessen haben, bitte senden Sie uns über unser Kontaktfomular (<a href="../kontakt/formular-a.php">info@DasZauberschloss.de</a>) eine E-Mail.
+<p/>
+
+<a href="{{backUrl|raw}}">Nochmal versuchen</a><p>
+
+<hr/>
+<a href="{{script.root}}">Zurück zum Shop</a>
+
+{% endblock page %}