Hello,
weil es so schön in mein Theam passte, habe ich mich mal damit beschäftigt:
<?php ### changepass.php ###
$dateiname = "password.txt";
$errormsg = "";
if ($_POST['sent'] == 1) ## Es liegt ein Post aus dem Form vor
{
if (!isset($_POST['oldpw']) or !(strlen(trim($_POST['oldpw'])) > 0))
{
$errormsg = "Bitte geben Sie Ihr altes Passwort ein!";
}
elseif (!isset($_POST['newpw']) or !(strlen(trim($_POST['newpw']))>0))
{
$errormsg = "Bitte geben Sie ein neues Passwort ein!";
}
elseif (!$fh = fopen($dateiname, "r+"))
{
$errormsg = "Datei lässt sich nicht öffnen";
}
elseif (!flock($fh,LOCK_EX + LOCK_NB))
{
$errormsg = "Datei wird bereits benutzt";
}
elseif (!$oldpw = fread($fh,filesize($dateiname)))
{
$errormsg = "Passwortdatei lässt sich nicht lesen";
}
elseif (trim($oldpw) != trim($_POST['oldpw']))
{
$errormsg = "Ihr altes Passwort ist falsch<br>";
}
elseif (0!=fseek($fh,0,SEEK_SET)) ## achtung ungewöhnlicher Rückgabewert
{
$errormsg = "Datei kann nicht rückgesetzt werden<br>";
}
elseif (!fwrite($fh, trim($_POST['newpw'])))
{
$errormsg = "Neues Passwort kann nicht geschrieben werden<br>";
}
elseif (!fclose($fh))
{
echo "Die Passwortdatei konnte nicht ordnungsgemäß geschlossen werden<br />";
}
else
{
$errormsg = "Passwort wurde geändert<br>";
}
}
doctype
html <head>, <body> etc
echo "<p style="color:red; font-weight:bold;">$errormsg</p>";
echo '<p>Bitte neues Passwort eingeben</p>';
echo"
<form action="$_SERVER['PHP_SELF']" method="post">
<input type="hidden" name="sent" value="1" />
Altes Passwort: <input type="password" name="oldpw" size="15" /><p>
Neues Passwort: <input type="text" name="newpw" size="15" /><p>
<input type="submit" name="submit" value="OK" />
</form>";
</body>
</html>
?>
Angemerkt sei, dass ich diesen "elseif-Spaghetti" sonst nicht schreiben würde. Es hat mich halt nur gereizt, es mal an einem Bändle zu schreiben. Normalerweise würde ich das säuberlichst in Funktionen zerlegen *gg*
Nun muss man nur noch die automatische Fehlermeldung ausschalten (@) und dafür sorgen, dass die DPasswortdatei außerhalb der Doc-Root liegt...
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau