UPDATE
- Unban hinzugefügt (Thanks to @Hcmeister)
- Trusted Dealers (Thanks to @Hcmeister)
- Werbestystem (Thanks to @Hcmeister)
- Passwort vergessen begonnen (gibt Probleme)
Weiteres Update. Danke an @Hcmeister für die Ideen. Ich habe das Passwort vergessen angefangen. Layout ist schon alles gemacht, muss nur noch hinkriegen dass es dann eine E-Mail sendet. Ich werde morgen mal einen Mailserver einrichten und das testen. Leider hat der Server Probleme mit den Windows Updates, werde ihn nochmal neu installieren und morgen wird er sicherlich fertig sein.
Screens
Snippets
Spoiler anzeigen
PHP
<?php
class Forgot
{
public $err = '';
public $success = false;
private $user;
private $config;
private $connection;
public function __construct($config, $connection, $url)
{
$this->user = new User($config, $connection);
$this->config = $config;
$this->connection = $connection;
}
public function Validate($user, $mail)
{
if(empty($user) || empty($mail)) {
$this->err = 'Füll bitte alle Felder aus.';
} else {
$query = $this->connection->prepare('SELECT id, username, mail FROM users WHERE mail = :mail AND username = :user LIMIT 1');
$query->execute([
':mail' => strtolower($mail),
':user' => $user
]);
if($query->rowCount()) {
$r = $query->fetchObject();
$query = $this->connection->prepare('SELECT reset FROM sync_users_data WHERE id = :id LIMIT 1');
$query->execute([
':id' => $r->id
]);
$row = $query->fetchObject();
$this->SendMail($row->reset, $r->username, $r->mail);
} else {
$this->err = 'Keine User mit diesen Daten gefunden.';
}
}
}
/* FUNKTIONIERT NOCH NICHT
public function SendMail($reset, $username, $user_mail)
{
require_once 'POP3.php';
require_once 'SMTP.php';
require_once 'Mailer.php';
$mail = new PHPMailer;
$mail->SMTPDebug = 3;
$mail->isSMTP();
$mail->Host = $this->config['mail']['host'];
$mail->SMTPAuth = $this->config['mail']['auth'];
$mail->Username = $this->config['mail']['user'];
$mail->Password = $this->config['mail']['pass'];
$mail->SMTPSecure = $this->config['mail']['secure'];
$mail->Port = $this->config['mail']['port'];
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]];
$mail->From = $this->config['mail']['user'];
$mail->FromName = $this->config['website']['name'] . ' Hotel';
$mail->addAddress($user_mail);
$mail->isHTML(true);
$mail->Subject = 'Passwort zurücksetzen';
$mail->Body = 'Klick <a href="' . $this->config['website']['url'] . '/forgot/reset?code=' . $reset . '">hier</a> um dein Passwort zurückzusetzen. Der Code lautet: ' . $reset;
$mail->AltBody = 'a';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
}
*/
public function Reset($code, $new, $repeat)
{
if(empty($code) || empty($new) || empty($repeat)) {
$this->err = 'Füll bitte alle Felder aus.';
} elseif(strlen($new) < 8) {
$this->err = 'Das Passwort muss mindestens 8 Zeichen lang sein.';
} elseif(strlen($new) > 32) {
$this->err = 'Das Passwort darf maximal 32 Zeichen lang sein.';
} elseif(!preg_match('/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9]+$/', $new)) {
$this->err = 'Das Passwort muss Gross- und Kleinbuchstaben enthalten, sowie eine Zahl.';
} elseif($repeat !== $new) {
$this->err = 'Die Passwörter stimmen nicht überein.';
} else {
$query = $this->connection->prepare('SELECT id, reset FROM sync_users_data WHERE reset = :code LIMIT 1');
$query->execute([':code' => $code]);
if($query->rowCount()) {
$r = $query->fetchObject();
if($code == $r->reset) {
$query = $this->connection->prepare('UPDATE users SET password = :password WHERE id = :id LIMIT 1');
$query->execute([
':password' => password_hash($new, PASSWORD_DEFAULT),
':id' => $r->id
]);
$query = $this->connection->prepare('UPDATE sync_users_data SET reset = :reset WHERE id = :id LIMIT 1');
$query->execute([
':reset' => $this->GenerateReset(),
':id' => $r->id
]);
$this->success = true;
}
} else {
$this->err = 'Ungültiger Code.';
}
}
}
public function GenerateReset()
{
return sha1(md5(mt_rand() . '-' . mt_rand() . '-' . mt_rand() . '-' . mt_rand() . '-' . mt_rand()));
}
public function __destruct()
{
$this->err = null;
$this->user = null;
$this->config = null;
$this->success = null;
$this->connection = null;
}
}
?>
Alles anzeigen
#ThreadUpdate
Freundliche Grüsse,
Synergy
EDIT
Vielleicht müsst ihr euch morgen neu Registrieren, würde euch doch nichts ausmachen oder