tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
17
ZUGRIFFE
1021
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mautix mautix ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    23
    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-Code:
    <?php $i 0;
        function 
    generate_password($len=10){
            
    $pool "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            
    $pool .= "abcdefghijklmnopqrstuvwxyz";
            
    $pool .= "1234567890";
     
            
    $password="";
                for (
    $i 0$i $len$i++){
                    
    $password .= $pool{rand(0strlen($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 :/
    Geändert von mautix (04.11.11 um 15:56 Uhr)
     

  2. #2
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Gib deiner From die richtigen Attribute mit wie:

    action=""
    method="post"

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

    Dann kannste anstatt:
    PHP-Code:
    <?php
        
    if (isset($_REQEUST['form1'])){
        
    $content.= $password;
        };
    ?>
    Nur das ausführen wenn das Formular per Post abgesendet wurde:
    PHP-Code:
    <?php
        
    if (isset($_POST['save']) && $_POST['save'] == "Speichern"){
        
    $content.= $password;
        };
    ?>
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  3. #3
    mautix mautix ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    23
    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!
     

  4. #4
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Code :
    1
    2
    3
    
    <form method="post" action="datei.php">
    // felder....
    </form>
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  5. #5
    mautix mautix ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    23
    Ich habe es nun abgeänder. Leider erzeugt er noch immer sofort beim öffnen ein Passwort, sowie beim neuladen ;/

    PHP-Code:

    <?php
        $i 
    0;
        function 
    generate_password($len=10){
            
    $pool "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            
    $pool .= "abcdefghijklmnopqrstuvwxyz";
            
    $pool .= "1234567890";
     
            
    $password="";
                for (
    $i 0$i $len$i++){
                    
    $password .= $pool{rand(0strlen($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;
        };
    ?>
     

  6. #6
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    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.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  7. #7
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Du rufst diese Funktion
    PHP-Code:
    $pass generate_password(); 
    ohne Bedingung jedes Mal beim Laden auf.

    Du müsstest
    PHP-Code:
    if (isset($_POST['save']) && $_POST['save'] == "Speichern"){ 
    vor der Ausgabe von $pass prüfen:

    PHP-Code:
        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.
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  8. #8
    mautix mautix ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    23
    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.
     

  9. #9
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    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.
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  10. #10
    mautix mautix ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    23
    Leider komme ich nicht weiter. Gibt es auch andere Lösungswege, bzw Möglichkeiten?!
    Vielen Dank!
     

  11. #11
    Roflmao Roflmao ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    54
    Kannst du nocheinmal bitte kurz zusammenfsse was genau dein Problem ist? Das Password wird jetzt nur beim Absenden generiert richtig (damit bist du also fertig)?
     

  12. #12
    mautix mautix ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    23
    Nein leider nicht. Vll ist es besser, dass abschicken an die Datenbank erstmal zu ignorieren. Ich will erstmal, dass das generier des Passwortes nur durch das klicken des Buttons passiert. Das weiterleiten ist dann der zweite Schritt.
     

  13. #13
    Roflmao Roflmao ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    54
    Versuch mal folgendes

    PHP ueberprueft ob der submit Button betaetigt wurde und ruft die Funktion nur auf falls dies der Fall ist.

    Ich habe den Code jetzt nicht ausprobiert, aber die Logik sollte stimmen. Google mal nach self submitting form

    PHP-Code:
    <?php 
        
    function generate_password($len=10){

            
    $i 0;
            
    $pool "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            
    $pool .= "abcdefghijklmnopqrstuvwxyz";
            
    $pool .= "1234567890";
     
            
    $password="";
                for (
    $i 0$i $len$i++){
                    
    $password .= $pool{rand(0strlen($pool)-1)};
                    }
                    return 
    $password;
                    
            }
            
            if(isset(
    $_POST['submit']))
            {    
            
    $pass generate_password();
            }

    ?>


    <form method='post' action="namederDatei.php">
        <input type="text" value= <? if(isset($pass))echo $pass;?> /> <br>
        <input type="submit"  value="Speichern" name='submit' />
        
    </form>
    Geändert von Roflmao (06.11.11 um 19:45 Uhr)
     

  14. #14
    Registriert seit
    Jul 2002
    Ort
    Frankfurt (Hessen)
    Beiträge
    2.135
    Zitat Zitat von mautix Beitrag anzeigen
    Nein leider nicht. Vll ist es besser, dass abschicken an die Datenbank erstmal zu ignorieren. Ich will erstmal, dass das generier des Passwortes nur durch das klicken des Buttons passiert. Das weiterleiten ist dann der zweite Schritt.
    das geht mit PHP nicht
    PHP wird vorm Aufruf der Seite ausgeführt - mit andren Worten du must mit Javascript dafür sorgen das beim Button "Passwort erstellen" die Webseite neu aufgerufen wird, dabei gibt man dem Aufruf den Wert mit das ein neues password gebraucht wird
     

  15. #15
    Roflmao Roflmao ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    54
    Zitat Zitat von melmager Beitrag anzeigen
    mit andren Worten du must mit Javascript dafür sorgen das beim Button "Passwort erstellen" die Webseite neu aufgerufen wird
    Genau das geschieht doch wenn man ein Form hat welches die eigene Datei als Ziel hat. Die Seite wird neu geladen. Ich sehe dort keinen nutzen Javascsript zu benutzen, ausser wenn er alles ohne das Neuladen der Seite machen moechte (dann muesste er aber mit Ajax arbeiten)
     

Ähnliche Themen

  1. Wo Datenbank speichern?
    Von gander im Forum .NET Datenverwaltung
    Antworten: 8
    Letzter Beitrag: 19.10.10, 08:59
  2. CMS: Seiten in Datenbank speichern?
    Von einfach nur crack im Forum PHP
    Antworten: 3
    Letzter Beitrag: 15.09.09, 17:44
  3. [SQLITE] Speichern der Datenbank
    Von cymbalta im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 09.01.09, 16:59
  4. Bild in Datenbank speichern
    Von willimc im Forum PHP
    Antworten: 3
    Letzter Beitrag: 07.06.08, 06:10
  5. XML in Datenbank speichern
    Von Radhad im Forum PHP
    Antworten: 1
    Letzter Beitrag: 02.06.07, 00:05