Tom: Probleme mit Script

Beitrag lesen

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&auml;&szlig; geschlossen werden<br />";
  }
  else
  {
    $errormsg = "Passwort wurde ge&auml;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:&nbsp;<input type="password" name="oldpw" size="15" /><p>
         Neues Passwort:&nbsp;<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