ideenmanagement/passwort_vergessen.php
2023-04-25 13:05:19 +02:00

224 lines
7.6 KiB
PHP
Executable File

<?php
session_start();
include_once 'classes/TestProjektSmarty.class.php';
require_once("config.inc.php");
$template = "login";
$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html";
$smarty = new Smarty();
require_once "language/german.inc.php";
$action = $_GET['action'];
if($action == ''){
if(isset($_GET['error'])){
$errorno = $_GET[error];
$smarty->assign('passwort_vergessen_error', 1);
if($errorno == 1){
$smarty->assign('passwort_vergessen_error_text', "Es m&uuml;ssen alle Felder ausgef&uuml;llt werden.");
if($_SESSION["passwort_vergessen_mail"] == ""){$smarty->assign('passwort_vergessen_mail_ico', 1);}
}
if($errorno == 2){
$smarty->assign('passwort_vergessen_error_text', "Der Benutzer ist im System nicht vorhanden.");
$smarty->assign('passwort_vergessen_mail', $_SESSION["passwort_vergessen_mail"]);
}
}
}
if($action == 'pwback'){
$mailpw = strtolower($_POST['mailpw']);
$_SESSION["passwort_vergessen_mail"] = "$mailpw";
if($mailpw == ""){
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?error=1\">";
}else{
$db = dbconnect();
$result = $db->query("SELECT imtuid, akivierungscode, mail, vorname, nachname FROM imt_user WHERE lower(mail) = '$mailpw'");
$row = $result->fetch_array();
if($row[akivierungscode] == ""){
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?error=2\">";
}else{
$empfaenger = "$row[mail]";
$betreff = "Ideenmanagement: Neues Passwort beantragt";
$text = "
<html>
<head>
<title>Neues Passwort beantragt</title>
</head>
<body>
<font face='Arial' size='2'>
Guten Tag $row[vorname] $row[nachname]!<br><br>
Sie haben auf der Homepage 'Ideenmanagement der Hochschule Ludwigsburg' neue Zugangsdaten angefordert.
<p>
Ist dies korrekt, k&ouml;nnen Sie Ihr Passwort mit folgendem Link zur&uuml;cksetzen:
<a href='https://www.hs-ludwigsburg.de/kurs/ideenmanagement/passwort_vergessen.php?action=pwneu&par1=$row[imtuid]&par2=$row[akivierungscode]'>Zugangsdaten zuschicken</a>
<p>
Oder kopieren Sie folgenden Link in Ihren Browser:<br>
https://www.hs-ludwigsburg.de/kurs/ideenmanagement/passwort_vergessen.php?action=pwneu&par1=$row[imtuid]&par2=$row[akivierungscode]
<p>
Sind Ihre Zugangsdaten nicht von Ihnen angefordert worden, k&ouml;nnen Sie die Mail ignorieren.
<p>
Diese Mail wurde automatisch generiert!<br>
Antworten Sie daher nicht auf diese Mail.<br />
<br>
Vielen Dank!
</body>
</html>";
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "From: Ideenwettbewerb HS Ludwigsburg <$global_service_mail>\n";
$return = @mail($empfaenger, $betreff, $text, $headers);
if($return){
$smarty->assign('passwort_vergessen_anfordern_erfolg', "1");
}else{
# Es reicht nicht, dass das Passwort zurückgesetzt wurde, es muss auch die Mail vollständig verschickt sein, sonst gibt es keine Erfolgsmeldung
$smarty->assign('passwort_vergessen_anfordern_erfolg', "2");
}
}
}
}
if($action == 'pwneu'){
if($_REQUEST['par1'] && $_REQUEST['par2']){
$imtuid = $_REQUEST['par1'];
$aktivierungscode = $_REQUEST['par2'];
$db = dbconnect();
$result_vorh = $db->query("SELECT count(*) Anz
FROM imt_user
WHERE imtuid='$imtuid'
AND akivierungscode='$aktivierungscode'");
$row_vorh = $result_vorh->fetch_array();
if($row_vorh[Anz] == 1){
$pw_expire = date("Y-m-d H:i:s", mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")+1)); // ISO-8601 Format
$pool = "qwertzupasdfghkyxcvbnm";
$pool .= "23456789";
$pool .= "WERTZUPLKJHGFDSAYXCVBNM";
srand ((double)microtime()*1000000);
for($index = 0; $index < 7; $index++)
{
$pass_word .= substr($pool,(rand()%(strlen ($pool))), 1);
}
$new_pw_md5=md5($pass_word);
$sql = $db->query ("UPDATE imt_user
SET passwort='$new_pw_md5'
,pw_expire ='$pw_expire'
WHERE imtuid='$imtuid'
AND akivierungscode='$aktivierungscode'");
if($sql){
$result_mail = $db->query("SELECT vorname, nachname, mail, uid
FROM imt_user
WHERE imtuid='$imtuid'
AND akivierungscode='$aktivierungscode'");
$row_mail = $result_mail->fetch_array();
$empfaenger = "$row_mail[mail]";
$betreff = "Zugangsdaten Ideenmanagement ";
$text = "
<html>
<head>
<title>Zugangsdaten Ideenmanagement</title>
</head>
<body>
<font face='Arial' size='2'>
Guten Tag $row_mail[vorname] $row_mail[nachname]!<br><br>
Sie haben Ihre Zugangsdaten für das Ideenmanagement der Hochschule Ludwigsburg neu angefordert!<br>
Nachfolgend finden Sie Ihre neuen Zugangsdaten:
<br>
<br>
<table>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
Benutzerkennung:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$row_mail[uid]</b>
</font>
</td>
</tr>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
Passwort:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$pass_word</b>
</font>
</td>
</tr>
</table>
<br>
Bitte beachten Sie, dass zwischen Gro&szlig;- und<br>
Kleinschreibung unterschieden wird.
<p>
Link zum Ideenmanagement: <a href=\"https://www.hs-ludwigsburg.de/kurs/ideenmanagement\">https://www.hs-ludwigsburg.de/kurs/ideenmanagement</a>
<p>
Diese Mail wurde automatisch generiert!<br>
Antworten Sie daher nicht auf diese Mail.<br />
<br>
Vielen Dank!
</body>
</html>";
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "From: Ideenwettbewerb HS Ludwigsburg <$global_service_mail>\n";
$return = @mail($empfaenger, $betreff, $text, $headers);
if($return){
$smarty->assign('passwort_vergessen_erfolg', "1");
}else{
# Es reicht nicht, dass das Passwort zurückgesetzt wurde, es muss auch die Mail vollständig verschickt sein, sonst gibt es keine Erfolgsmeldung
$smarty->assign('passwort_vergessen_erfolg', "2");
}
}else{
# Wenn update nicht gelingt,
$smarty->assign('passwort_vergessen_erfolg', "2");
}
}else{
# Wenn SQL keinen Treffer auf vorhandenen Account bekommt
$smarty->assign('passwort_vergessen_erfolg', "2");
}
}
}
$smarty->assign('action', "$action");
$smarty->display("$template/$templatename");
?>