gechger
Goto Top

PHP Login Script Formular soll sich bei falschem Kennwort die Anmeldedaten merken

Ein vorhandenes Login Script möchte ich etwas verfeinern, weiss aber nicht wie

Hallo Forum,

zur Zeit arbeite ich an einer kleinen Anwendung. Ein Administrator soll für diese Anwendung Benutzer anlegen dürfen. Ich verwende dieses Script:

[EDIT: Script gelöscht, war das falsche Script. Unten steht das Richtige]

Wenn beim Anlegen des Benutzers die Passwörter nicht übereinstimmen, verschwinden im Formular die eingegebenen Daten Name, Vorname und Nickname. Ich möchte aber gerne, daß diese eingegebenen Daten erhalten bleiben, so daß der Administrator diese nicht noch einmal einpflegen muß. Nur die Kennwörter sollen neu eingegeben werden.

Wie kann ich dasmöglichst einfach realisieren?

Jede Idee hilft weiter.

Schöne Grüße
Christof

Content-Key: 119289

Url: https://administrator.de/contentid/119289

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: Cubic83
Cubic83 29.06.2009 um 18:04:18 Uhr
Goto Top
Hallo,

warum geht denn ein

<input type="username" value="<?=$_SESSION['user'];?>">   

in deinem Formular nicht. wäre vielleicht interessant die Datei mit dem Formular zu sehen.
Mitglied: gechger
gechger 29.06.2009 um 18:23:16 Uhr
Goto Top
Hallo Cubic,

viel schlimmer, ich habe die falsche Datei gepostet. Die oben beschriebene Datei checkt ja nur die Anmeldedaten gegen die Datenbank ab. Um neue User hinzu zu fügen verwende ich dieses Script:

<?session_start();?>

<!ENTITY % HTML.Version "-//W3C//DTD HTML 4.01 Frameset//EN"  
  -- Typical usage:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"  
            "http://www.w3.org/TR/html4/frameset.dtd">  

<html>
<head>
<title>MobilZeit WebTool - User anlegen</title>
<style type="text/css">  
.block {margin-left:8cm; margin-right:8cm}

</style>

</head>
<body  bgcolor="#E9E9E9">  
<font face="Verdana, Arial, Tahoma, Sans Serif" font size="+1" font color = "#595959">  

<table height="50"  width="996" >  
<tr >
<td align="center" width="13.5%" >  
</td>
<td align="left" width="86.5%"  >  
<img src="grafik/webtool.jpg" alt="" border="0" width="840" height="110">  
</td>
</tr>
</table>

<table width="996" >  
<tr width="996">  
<td width="135"></td>  

<td><a href="index.php">  
<img src="buttons/start.jpg" alt="" border="1" style="border-collapse: collapse;" style="empty-cells: collapse;" style="border-style: outset;"  width="120" height="40" ></a></td>  
<td><a href="erfassen.php">  
<img src="buttons/daten erfassen.jpg" alt="" border="1" style="border-collapse: collapse;" style="empty-cells: collapse;" style="border-style: outset;"  width="120" height="40"></a></td>  
<td><a href="aendern.php">  
<img src="buttons/daten aendern.jpg" alt="" border="1" style="border-collapse: collapse;" style="empty-cells: collapse;" style="border-style: outset;"  width="120" height="40"></a></td>  
<td><a href="anlegen.php">  
<img src="buttons/daten anlegen.jpg" alt="" border="1" style="border-collapse: collapse;" style="empty-cells: collapse;" style="border-style: outset;"  width="120" height="40"></a></td>  
<td><a href="holen.php">  
<img src="buttons/daten holen.jpg" alt="" border="1" style="border-collapse: collapse;" style="empty-cells: collapse;" style="border-style: outset;"  width="120" height="40"></a></td>  
<td><a href="drucken.php">  
<img src="buttons/daten drucken.jpg" alt="" border="1" style="border-collapse: collapse;" style="empty-cells: collapse;" style="border-style: outset;"  width="120" height="40"></a></td>  

<td></td>
</tr>
</table>
<p class="block">  

Geben Sie die Daten Ihrer Mitarbeiter ein. Benötigt werden der Vorname und Nachname, ein Benutzer-Anmeldename, der nicht identisch mit Vor- oder Nachnamen sein sollte, und ein Kennwort, mit dem sich Ihr Mitarbeiter anmelden kann.
<br>
<br>


<table>
<form action="anlegen.php" method="post">  
    <tr>
         <td width="150">Name </td>  
         <td width="175" ><input name="name" size = "20"  ></td>  
    </tr>
    <tr>
         <td width="150">Vorname </td>  
         <td width="175" ><input name="vorname" size = "20" ></td>  
    </tr>
    <tr>
         <td width="150">Benutzername </td>  
         <td width="175" ><input name="benutzer" size = "20"  ></td>  
    </tr>
    <tr>
         <td width="150">Kennwort</td>  
         <td width="175"><input  type ="password" name="pwd" size="8" ></td>  
    </tr>
    <tr>
         <td width="150">Kennwort wiederholen</td>  
         <td width="175"><input  type ="password" name="pwd2" size="8" ></td>  
    </tr>
    <tr>
         <td width="150" ><input type="submit" value="Benutzer anlegen"></td>  
         <td width="175"><input type="reset" value="Abbrechen"></td>  
    </tr>
</table>
<?

$name=$_POST["name"];  
$vorname=$_POST["vorname"];  
$nick=$_POST["benutzer"];  
$pwd=$_POST["pwd"];  
$pwd2=$_POST["pwd2"];  

$sepwd=md5($pwd);//md5 Hash aus Passwort
$senick=md5($nick);//md5 Hash aus Kennwort
$secontrol=md5("123456");//Saltwert für das Kennwort  
$sesum=$sepwd.$secontrol.$senick; //Kombination der Hashwerte

if ( !empty($pwd) && ($pwd == $pwd2)) {

         //Zugang zur Datenbank herstellen
         $cldb = mysql_connect($_SESSION['host'], $_SESSION['dbuser'], $_SESSION['passwort']); // or die(mysql_error());  
         mysql_select_db($_SESSION['db']);  
         $sql2 = ("SELECT * FROM ".$_SESSION['tab']." where nick = '$nick' ");  
         $query=mysql_Query ($sql2);
         @$check= mysql_fetch_array($query);

         $key=$check[3];
         $nick2=$check[4];

if (!empty($check)){
	echo "Benutzername existiert bereits!";  
         }
else {
         $sql="INSERT INTO ".$_SESSION['tab']." (name, vorname, pwd, nick) VALUES ('$name', '$vorname', '$sesum', '$nick')";  
         mysql_query($sql);
         echo "Hallo der Mitarbeiter '$vorname' '$name' wurde erfolgreich mit Anmeldename '$nick' angelegt ";  

         }
}
if (!empty($pwd) && ($pwd != $pwd2)){

echo "Die Passwörter stimmen nicht überein!";  
}
echo mysql_error();
@mysql_close();
unset($key);
?>
</p>
</font>
</body>
</style>
</html>
<!ENTITY % HTML.Frameset "INCLUDE">  
<!ENTITY % HTML4.dtd PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  

Wenn die Benutzerdaten angelegt werden, habe ich in einer $_Session Variablen nur die Daten des Administrators, der den neuen User anlegen will. Im Formular werden die Daten dann angelegt und bei Fehlern im Kennwort die eingegebenen Werte gelöscht. In meinem Beispiel hatte ich auch schon mit value Werten experimentiert.

Wenn dies zutrifft:
}
if (!empty($pwd) && ($pwd != $pwd2)){

echo "Die Passwörter stimmen nicht überein!";
}

sollen die eingegebenen Daten im Formular erhalten bleiben.
Schöne Grüße
Christof
Mitglied: Cubic83
Cubic83 29.06.2009 um 18:48:45 Uhr
Goto Top
Also mir fallen da 2 Sachen ein.

1) Wie bereits angedeutet:

<input name="benutzer" size = "20"  value="<?=$_POST['benutzer'];?>">  

2) Überprüfung mittels Javascript beim Abschicken überprüfen.

<form onsubmit='mySubmit();' (.....) >  


</form>

<script language="javascript">  

function mySubmit() {
   return (Document.Forms.pwd.text == Document.Forms.pwd2.text)
}

</script>

Achtung: Ich bin schon etwas aus der Materie raus, deswegen keine Syntaxgarantie! Ich denke das Prinzip dürfte aber klar sein. Wenn die Funktion mySubmit true zurückgibt wird das Formular abgeschickt; bei false nicht.


BTW: Du hast kein </form> Tag.

mfG
Mitglied: gechger
gechger 30.06.2009 um 21:01:47 Uhr
Goto Top
Hi Cubic,

Java kommt nicht in Frage, da das Webtool auch funktionieren muß, wenn Java deaktiviert ist. Das Value funktioniert auch nicht, weil ich dann die Anmeldedaten des Administrators hätte, und nicht die Daten, die angelegt werden sollen.

Ich überlege nun, ob ich bei fehlerhafter Eingabe des Passwortes mittels header: eine neue Seite aufrufe und die $_POST Werte des Formulars dahin übergebe. Aber header: funktioniert ja nur, wenn vorher keine echo Ausgaben erfolgt sind.

Stimmt, habe das form tag vergessen face-sad
Das kann aber doch nicht das Problem sein, oder??????

Danke für Deine Ideen
Schöne Grüße
Christof
Mitglied: Cubic83
Cubic83 30.06.2009 um 21:07:04 Uhr
Goto Top
dann eben ohne Javascript face-smile

Wieso soll beim $_POST die Angaben des Admins drin stehen. Das usernamefeld selbst heisst ja "benutzer". $_POST['benutzer'] entspricht also dem Inhalt des Feldes beim Reload. Vorrausgesetzt die gleiche Datei wird beim absenden aufgerufen.
Mitglied: gechger
gechger 02.07.2009 um 15:10:00 Uhr
Goto Top
stimmt, Du hast Recht.

<input name="name" size = "20" value= "<?=$_POST["name"]?>" > So behält das Script die Daten. Ich hatte einen Fehler drin, weil ich $_SESSION["name"] verwendet hatte. Dann bekomme ich natürlich die Administrator Daten angezeigt.

Vielen Dank

Schöne GRüße
Christof