Password generien/Datenbank speichern

mautix

Mitglied
Guten Tag zusammen,

ich bin absoluter Neuling in PHP, möchte dies aber schnell lernen.
Mein erstes Projekt ist es, Passwörter zu generieren und diese in einer Datenbank abzuspeichern. Mein Problem ist, dass sobald die Seite refreshed wird, ein neues Passwort generiert wird. Dies sollte aber nur bei dem Klick auf dem Button passieren.

Vielen Dank für die Hilfe.


PHP:
<?php $i = 0;
	function generate_password($len=10){
        $pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $pool .= "abcdefghijklmnopqrstuvwxyz";
        $pool .= "1234567890";
 
        $password="";
            for ($i = 0; $i < $len; $i++){
                $password .= $pool{rand(0, strlen($pool)-1)};
                }
                return $password;
				
        }
		$pass = generate_password();
?>

<form>

<input type="submit" OnClick= "generate_password(this.form);" value="Passwort generieren">
	<input type= hidden value "1" name =" form1">
	<input type="text" value= <? echo $pass?>> <br>
	<input type="submit" OnClick= "save(this.form);" value="Speichern">
	
</form>

<?php
	if (isset($_REQEUST['form1'])){
	$content.= $password;
	};
?>
Edit: Leider hab ich den Dreh mit der Formatierung noch nicht raus :/
 
Zuletzt bearbeitet:
Gib deiner From die richtigen Attribute mit wie:

action=""
method="post"

und deinem Button gibste einen Namen:
Code:
 <input type="submit" name="save" value="Speichern">

Dann kannste anstatt:
PHP:
<?php
    if (isset($_REQEUST['form1'])){
    $content.= $password;
    };
?>

Nur das ausführen wenn das Formular per Post abgesendet wurde:
PHP:
<?php
    if (isset($_POST['save']) && $_POST['save'] == "Speichern"){
    $content.= $password;
    };
?>
 
Vielen Dank für die schnelle Antwort. Leider verstehe ich das mit den Attributen nicht. Könntest du das vll genauer erläutern?
Dankeschön!
 
Ich habe es nun abgeänder. Leider erzeugt er noch immer sofort beim öffnen ein Passwort, sowie beim neuladen ;/

PHP:
<?php
	$i = 0;
	function generate_password($len=10){
        $pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $pool .= "abcdefghijklmnopqrstuvwxyz";
        $pool .= "1234567890";
 
        $password="";
            for ($i = 0; $i < $len; $i++){
                $password .= $pool{rand(0, strlen($pool)-1)};
                }
                return $password;
				
        }
		$pass = generate_password();
		
?>

<?php 
	function save(){
	};
?>



	

<form action="select_optgroup.htm">

 
    <select name="Namen" size="1">
		<option label="platzhalter">platzhalter</option>
        <option label="platzhalter">platzhalter</option>
        <option label="platzhalter">platzhalter</option>
		<option label="platzhalter">platzhalter</option>
        <option label="platzhalter">platzhalter</option>
        <option label="platzhalter">platzhalter</option>
     </select>
</form>
  
<form action="">
	<input type="submit" OnClick= "generate_password(this.form);" value="Passwort generieren">
	<input type= hidden value "1" name =" form1">
	<input type="text" value= <? echo $pass?>> 
</form>

<form method= "post" action="passwoerter.php">
	<input type="submit" name="save" value="Speichern">
</form>
	


<?php
    if (isset($_POST['save']) && $_POST['save'] == "Speichern"){
    $content.= $password;
    };
?>
 
Warum hast du so viele Formulare auf deiner SEite? da kennst sich ja keiner aus....

Du solltest erstmal die Grundlagen von HTML können bevor du mit PHP arbeitest.

action="datei.php" bedeutet, schicke die Daten aus den Feldern an die Datei "datei.php"
method="post" bedeutet, schicke Daten als "POST", wenn dieses Attribut nicht angeggeben ist, wird es automatisch als "GET" versendet.
 
Du rufst diese Funktion
PHP:
$pass = generate_password();
ohne Bedingung jedes Mal beim Laden auf.

Du müsstest
PHP:
if (isset($_POST['save']) && $_POST['save'] == "Speichern"){

vor der Ausgabe von $pass prüfen:

PHP:
    if (isset($_POST['save']) && $_POST['save'] == "Speichern"){
        $pass = generate_password();
    }else{
        $pass = '';
    }

// danach in DB schreiben und/oder mit echo $pass ausgeben

Und was die Formulare betrifft muss Maniac zustimmen. Schmeiß das Zeug raus was du nicht brauchst. Und such dir ein beliebiges Tutorial zum Thema Formulare erstellen und auswerten.
 
Ist nun überarbeitet, danke. Ja das ist logisch. Allerdings ändert es nichts an der Tatsache, dass es beim neuladen generiert wird. Lediglich, dass es dann in die Datenbank gespeichert wird.
 
Es sollte über Post nicht beim normalen Aufruf generiert werden, wenn der Funktionsaufruf wirklich nur innerhalb des if-Blocks geschrieben steht, weil $_POST dann leer ist. Wenn du die Seite aktualisiert hast, nachdem du vorher das Submit abgeschickt hast, wird entweder mittels Nachfrage oder grundsätzlich das Formular nochmal abgeschickt, und in dem Fall eben auch die Funktion aufgeführt.
 
Zurück