automatische Passwortgenerierung

AlexD1979

Erfahrenes Mitglied
Hallo,
Ich habe ein kleines Javascript, welches mir automatisch ein 6-zeichenpasswort erstellt. Allerdings nur auf Mausklick auf den Button in dem Formular. Ich habe das Beispiel aus einem Tutorial, aber ich bekomme es nicht hin, es in meine Seite zu integrieren. Kann mir da einer bei helfen?

Ich brauche diese Funktion in einem kleinen Programm zum Anlegen von Benutzern.
Ich habe also ein Formular, welches neben Userdaten zwei Passwortfelder enthält. Nun möchte ich nach absenden des Formulares, dass die Passwortfelder automatisch mit einem Zufallspasswort gefüllt werden und das in die Datenbank geschrieben wird.

Hier das Javascript, welches mir auf Mausklick ein Passwort erstellt und in die Textarea schreibt.
HTML:
<HTML>
  <HEAD>
    
<SCRIPT language=javascript type=text/javascript>
    var maxnumbers=16384;
   
    function starten()
     for 
	 {
      var x;
      var laenge=6;

      var zeichen="abcdefghijklmnopqrstuvwxyz0123456789"; 
      document.formular.ausgabe.value="";
      x=0;
      while (x!=laenge)
       {
        document.formular.ausgabe.value+=zeichen.charAt(Math.random()*zeichen.length);
        x++;
       }
     }  
  </SCRIPT>
  </HEAD>
  <BODY>
   <FORM name=formular action=javascript:starten()>
 	<INPUT onclick=starten() type=button value="Passwort generieren"> 
     
      <p align="center">
      <font face="Arial" size="2"><TEXTAREA name=ausgabe rows=2 readOnly wrap=physical cols=38></TEXTAREA>
  </FORM>
  </BODY>
</HTML>


Und hier meine Formularseite, welche diese automatische Passwortgenerierung beinhalten soll.

HTML:
<cfif CGI.REQUEST_METHOD IS "GET">

<CFELSE>
<!--- Parameter holen --->
<cfparam name="FORM.NAME" type="string">
<cfparam name="FORM.VORNAME" type="string">
<cfparam name="FORM.LOGINNAME" type="string">
<cfparam name="FORM.MAIL" type="string">
<cfparam name="FORM.TELEFON" type="string">
<cfparam name="FORM.PASSWORT_1" type="string">
<cfparam name="FORM.PASSWORT_2" type="string">

<cfquery datasource="helios_user">
insert into helios_user values(HELIOS_USR_SEQ.nextval,'#FORM.NAME#','#FORM.VORNAME#','#FORM.MAIL#','#FORM.TELEFON#','#FORM.LOGINNAME#','#FORM.PASSWORT_1#','#FORM.PASSWORT_2#',sysdate,0);
</cfquery>
<!--- zurueck zur Listenansicht ohne Querycachen --->
<cflocation url="helios.cfm?cache=no">
</cfif>

<!--- Formular generieren --->
<html>
<head>
<title>Neuen Benutzer anlegen</title>
</head>
<body>


<cfoutput>
<!--- Maske fuer neue Benutzer --->
<form action="#CGI.SCRIPT_NAME#" method="post">
	<table>
		
		<tr>
			<td colspan="2">Neuen User anlegen</td>
		</tr>
		
		<tr>
			<td>Name:</td> <td><input type="text" name="NAME"></td>
		</tr>
		
		<tr>
			<td>Vorname:</td> <td><input type="text" name="VORNAME"></td>
		</tr>
		
		<tr>
			<td>Loginname:</td> <td><input type="text" name="LOGINNAME"></td>
		</tr>
		
		<tr>
			<td>E-Mail:</td> <td><input type="text" name="MAIL"></td>
		</tr>
		
		<tr>
			<td>Telefon:</td> <td><input type="text" name="TELEFON"></td>
		</tr>
		
		<tr>
			<td>Passwort Internet:</td> <td><input type="text" name="PASSWORT_1"></td>			
		</tr>
		
		<tr>
			<td>Passwort Helios:</td> <td><input type="text" name="PASSWORT_2"></td>
		</tr>
		
		<tr>
			<td>&nbsp;</td>
			<td><input type="submit" value="anlegen"></td>
		</tr>
	</table>
</form>

</cfoutput>

</body>
</html>
 
Hi,

das Script könntest Du wie folgt anpassen:
Code:
function starten(objForm){
    var x;
    var laenge=6;

    var zeichen="abcdefghijklmnopqrstuvwxyz0123456789";
    objForm.PASSWORT_1.value="";
    objForm.PASSWORT_2.value="";
    x=0;

    while (x!=laenge){
        objForm.PASSWORT_1.value+=zeichen.charAt(Math.random()*zeichen.length);
        objForm.PASSWORT_2.value+=zeichen.charAt(Math.random()*zeichen.length);
        x++;
    }

    return true;
}
Im nächsten Schritt reagierst Du auf den onsubmit-Event des Formulars und rufst obiges
Script auf. Anschliessend sollten die Passwörter eingefügt sein (vorausgesetzt JavaScript ist
aktiviert!).
Code:
<form onsubmit="return starten(this);" action="#CGI.SCRIPT_NAME#" method="post">
Ich hoffe, das hilft Dir weiter.

Ciao
Quaese
 
Hallo Quaese,
Danke das funktioniert sehr gut. Allerdings sehe ich die Passwörter dann nicht, da das Skript gleich weiterspringt zur Startseite.
Wie kann ich diese Aktion auf einen zweiten Button legen, dass dieser nur das Skript zur Erstellung des Passwortes aufruft?
Ich habe den Button schon eingefügt, aber wenn ich onclick="return starten(this); setze für diesen Button, Bekomme ich die Fehlermeldung, dass die Variable Passwort_1 nicht gefunden werden kann.

HTML:
<cfif CGI.REQUEST_METHOD IS "GET">
<CFELSE>
<!--- Parameter holen --->
<cfparam name="FORM.NAME" type="string" default="">
<cfparam name="FORM.VORNAME" type="string" default="">
<cfparam name="FORM.LOGINNAME" type="string" default="">
<cfparam name="FORM.MAIL" type="string" default="">
<cfparam name="FORM.TELEFON" type="string" default="">
<cfparam name="FORM.PASSWORT_1" type="string" default="">
<cfparam name="FORM.PASSWORT_2" type="string" default="">

<cfquery datasource="helios_user">
insert into helios_user values(HELIOS_USR_SEQ.nextval,'#FORM.NAME#','#FORM.VORNAME#','#FORM.MAIL#','#FORM.TELEFON#','#FORM.LOGINNAME#','#FORM.PASSWORT_1#','#FORM.PASSWORT_2#',sysdate,0);
</cfquery>
<!--- zurueck zur Listenansicht ohne Querycachen --->
<cflocation url="helios.cfm?cache=no">
</cfif>

<!--- Formular generieren --->
<html>
<head>
<title>Neuen Benutzer anlegen</title>

<SCRIPT language=javascript type=text/javascript>
    var maxnumbers=16384;
   
    function starten(objForm){
    var x;
    var laenge=6;

    var zeichen="abcdefghijklmnopqrstuvwxyz0123456789";
    objForm.PASSWORT_1.value="";
    objForm.PASSWORT_2.value="";
    x=0;

    while (x!=laenge){
        objForm.PASSWORT_1.value+=zeichen.charAt(Math.random()*zeichen.length);
        objForm.PASSWORT_2.value+=zeichen.charAt(Math.random()*zeichen.length);
        x++;
    }

    return true;
}
  </SCRIPT>

</head>
<body>


<cfoutput>
<!--- Maske fuer neue Benutzer --->
<form onsubmit="return starten(this);" action="#CGI.SCRIPT_NAME#" method="post">
	<table>
		
		<tr>
			<td colspan="2">Neuen User anlegen</td>
		</tr>
		
		<tr>
			<td>Name:</td> <td><input type="text" name="NAME"></td>
		</tr>
		
		<tr>
			<td>Vorname:</td> <td><input type="text" name="VORNAME"></td>
		</tr>
		
		<tr>
			<td>Loginname:</td> <td><input type="text" name="LOGINNAME"></td>
		</tr>
		
		<tr>
			<td>E-Mail:</td> <td><input type="text" name="MAIL"></td>
		</tr>
		
		<tr>
			<td>Telefon:</td> <td><input type="text" name="TELEFON"></td>
		</tr>
		
		<tr>
			<td>Passwort Internet:</td> <td><input type="text" name="PASSWORT_1" value="keine Angabe"></td>			
		</tr>
		
		<tr>
			<td>Passwort Helios:</td> <td><input type="text" name="PASSWORT_2" value="keine Angabe"></td>
		</tr>
		
		<tr>
			
			<td><input type="submit" value="anlegen" name="bAnlegen"></td>
			<td><input type="button" value="Passwortgenerator" name="bGenerator" onClick="return starten(this);"></td>
			<td><input type="button" value="zurück" onClick="history.back()"></td>
		</tr>
	</table>
</form>

</cfoutput>

</body>
</html>
 
Hi,

wenn Du die Möglichkeit zur automatischen Passworterzeugung mittels eines Buttons ermöglichen
willst, würde ich im Gegenzug das Anlegen im onsubmit-Event herausnehmen, da sonst
bereits eingegebene PWs wieder überschrieben werden. Stattdessen würde ich vor dem Versenden
überprüfen, ob Passwörter eingegeben wurden und eventuell das Abschicken verhindern.

Folgende Scripts könnten Dir dabei behilflich sein:
Code:
function starten(objForm){
    var x;
    var laenge=6;

    var zeichen="abcdefghijklmnopqrstuvwxyz0123456789";
    objForm.PASSWORT_1.value="";
    objForm.PASSWORT_2.value="";
    x=0;

    while (x!=laenge){
        objForm.PASSWORT_1.value+=zeichen.charAt(Math.random()*zeichen.length);
        objForm.PASSWORT_2.value+=zeichen.charAt(Math.random()*zeichen.length);
        x++;
    }

    return true;
}

function checkPW(objForm){
    if( (objForm.PASSWORT_1.value != "keine Angabe") && (objForm.PASSWORT_1.value != "") &&
        (objForm.PASSWORT_2.value != "keine Angabe") && (objForm.PASSWORT_1.value != "")
      ){
        return true;
    }else{
        alert("Bitte geben Sie zwei korrekte Passwörter an!");
        return false;
    }
}
Das erste Script ist das gleiche wie im ersten Posting.

Der HTML-Code sieht folgendermassen aus:
HTML:
<form onsubmit="return checkPW(this);" action="#CGI.SCRIPT_NAME#" method="post">
	<table>

		<tr>
			<td colspan="2">Neuen User anlegen</td>
		</tr>

		<tr>
			<td>Name:</td> <td><input type="text" name="NAME"></td>
		</tr>

		<tr>
			<td>Vorname:</td> <td><input type="text" name="VORNAME"></td>
		</tr>

		<tr>
			<td>Loginname:</td> <td><input type="text" name="LOGINNAME"></td>
		</tr>

		<tr>
			<td>E-Mail:</td> <td><input type="text" name="MAIL"></td>
		</tr>

		<tr>
			<td>Telefon:</td> <td><input type="text" name="TELEFON"></td>
		</tr>

		<tr>
			<td>Passwort Internet:</td> <td><input type="text" name="PASSWORT_1" value="keine Angabe"></td>
		</tr>

		<tr>
			<td>Passwort Helios:</td> <td><input type="text" name="PASSWORT_2" value="keine Angabe"></td>
		</tr>

		<tr>

			<td><input type="submit" value="anlegen" name="bAnlegen"></td>
			<td><input type="button" value="Passwortgenerator" name="bGenerator" onClick="return starten(this.form);"></td>
			<td><input type="button" value="zurück" onClick="history.back()"></td>
		</tr>
	</table>
</form>
Um das Script korrekt im onclick-Event aufzurufen, musst Du das Formularobjekt als
Parameter an die Funktion übergeben.

Ciao
Quaese
 

Neue Beiträge

Zurück