Ich bau mir nen Rechen-Captcha

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Ok danke für den Hinweis!

    Ich habe das Script für ein neues Passwort mal so geändert,einfach um eine bisschen die Funktinen kennen zu lernen!
    Komisch rand(); habe ich nicht verstanden aber array_rand (); habe ich sofort geschnallt!

    @jahlives
    Ich hoffe du fühlst dich nicht angegriffen weil ich den Code von dir geändert habe,aber ich will die Möglichkeiten die es gibt einfach austesten!

    PHP-Code:
    <?php
    $array1 
    range(0,9);
    $array2 range('A','Z');
    $array3 range('a','z');

    $chars array_merge($array1,$array2,$array3);

    $newpw array_rand($chars,6);
    echo 
    $chars[$newpw[0]];
    echo 
    $chars[$newpw[1]];
    echo 
    $chars[$newpw[2]];
    echo 
    $chars[$newpw[3]];
    echo 
    $chars[$newpw[4]];
    echo 
    $chars[$newpw[5]];

    ?>
    Die echos sind natürlich nur tests

    mfg der litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

    Kommentar


    • #17
      Zeigt, dass du dich damit auseinander gesetzt hast.

      Kommentar


      • #18
        Kapsel das Ganze doch in eine Funktion:
        PHP-Code:
        function generate_password($length 6)
        {
            
        $chars array_merge(
                
        range(09),
                
        range('a''z'),
                
        range('A''Z')
            );

            
        shuffle($chars);

            return 
        implode(''array_slice($chars0, (int)$length));
        }

        echo 
        generate_password(); 
        Grüße
        Nieder mit der Camel Case-Konvention

        Kommentar


        • #19
          Hallo allerseits!

          Eine Frage habe ich noch!

          Wie kann ich das denn machen das zufällig dabei gewählt wird ob der Zufallscode 2 oder 3 oder 4 Stellen haben kann?

          Also hier zum Beispiel. Soll zufällig mal 2 oder 3 oder 4 Stellen ausgeben,je nachdem was der Zufall ergibt!

          Habe im Manual dazu geschaut aber kein Beispiel dazu gefunden!

          PHP-Code:
          <?php
          $char1 
          array_merge(range(09));
          shuffle($char1);
          $teil1 implode('',array_slice($char1,2,4));
          echo 
          $teil1;
          ?>
          Vielen Dank für die Hilfe mfg der Litter
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          http://www.lit-web.de

          Kommentar


          • #20
            Tja, so langsam aber sicher solltest du dich mal mit rand() anfreunden!

            PHP-Code:
            echo generate_password(rand(2,4)); 
            Bezieht sich auf Griecherus Fkt.

            Kommentar


            • #21
              Danke Tobiaz ich glaube die zeit ist wohl gekommen!

              Ich mache mich auf alle Fälle dran und versuche mir das in die Birne zu Hämmern!

              Eine Frage noch!

              Kann ich mit auch mit solchen Zufallsssachen einen zufälligen Rechenoperator kreiren so das der auch funzt oder geht das mit Rechenoperatoren nicht?
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              http://www.lit-web.de

              Kommentar


              • #22
                Original geschrieben von litterauspirna
                Kann ich mit auch mit solchen Zufallsssachen einen zufälligen Rechenoperator kreiren so das der auch funzt oder geht das mit Rechenoperatoren nicht?

                Ich musste es zwar zwei mal lesen, bevor sich mir der Sinn erschlossen hat, aber gut:
                Du kannst natürlich auch einen zufälligen Operator generieren lassen. Oder 'Äpfel', 'Birnen' und 'Tomaten'. Wie das geht, weißt du auch - gesetzt den Fall, dass du den bisherigen Code, der dir gegeben wurde, verstanden hast. array_rand() wählt ein zufälliges Element aus einem Array. Was in diesem Array steht, bestimmst du.
                Dass der Operator dann auch funzt, kannst du auf mehrere Arten erreichen: Eine ist die Funktion eval(), die allerdings mit Vorsicht zu genießen ist. Es ist jedoch wie gesagt nicht die einzige Möglichkeit.

                Grüße
                Zuletzt geändert von Griecherus; 20.05.2008, 12:22.
                Nieder mit der Camel Case-Konvention

                Kommentar


                • #23
                  Ich hoffe du fühlst dich nicht angegriffen weil ich den Code von dir geändert habe,aber ich will die Möglichkeiten die es gibt einfach austesten!
                  OffTopic:

                  Ich wittere eine Lizenzverletzung, weil gemäss meiner Lizenz wäre es dir noch nicht mal erlaubt gewesen den Code zu lesen!
                  Gleich mal ne Abmahnung aufsetzen


                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #24
                    Leutz tut mir leid aber nun muss ich doch noch mal fragen sehts mir bitte nach!

                    Ich habe nun zufällig generiert vorher zum Beispiel diese Werte!

                    PHP-Code:
                    <?php
                    $wert1 
                    203;
                    $wert2 57;
                    $operator "+";


                    ?>
                    Diese Werte bekomme ich alle zufällig,das klappt auch gut. Nur wie kann ich jetzt diese Werte bzw. Variablen zu einer funktionierenden Gleichung zusammenfügen?

                    Das mit dem Eval geht mir nicht richtig in Kopf!

                    Danke für eure Geduld und Hilfe!
                    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                    http://www.lit-web.de

                    Kommentar


                    • #25
                      Es geht auch ohne eval() und daher solltest du von eval() auch wieder Abstand nehmen.
                      PHP-Code:
                      switch ($operator) {
                          case 
                      '+'$erg $wert1 $wert2; break;
                          case 
                      '-'$erg $wert1 $wert2; break;
                          
                      // ...

                      Kommentar


                      • #26
                        Danke!

                        Wenn ich nun aber das Ergebnis in einer Session Variablen speichern will zu einem späteren Abgleich geht das nicht!

                        PHP-Code:
                        <?php
                        $_SESSION
                        ['erg'] = $erg;

                        //Hier die Prüfung aber leider passiert nichts auch keine Fehlermeldung
                        if(isset($_POST['send']))
                        {
                            if(empty(
                        $_POST['code']) || $_SESSION['resultat'] != $_POST['code'])
                            {
                                echo 
                        "Der Code stimmt nicht überein,bitte noch mal!<br>
                                    <a href=\"captcha.php\">Zurück</a>"
                        ;
                                exit();
                            }
                            else
                            {
                                
                        header("Location: captcha.php");
                            }
                        }
                        ?>
                        Vieleicht kann mir da noch jemand auf de Sprünge helfen?
                        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                        http://www.lit-web.de

                        Kommentar


                        • #27
                          Schalt das error-reporting ein, verdammt!

                          PHP-Code:
                          $_SESSION['erg'] = $erg
                          $erg existiert nicht!

                          PHP-Code:
                          $_SESSION['resultat'
                          Wird sonst auch nirgendwo erwähnt.

                          Kommentar


                          • #28
                            PHP-Code:
                            function create_pass($length=8)
                            {
                               
                            $dummy array_merge(range('0''9'), range('a''z'), range('A''Z'));

                               
                            // shuffle array
                               
                            mt_srand((double)microtime()*1000000);

                               for (
                            $i 1$i <= (count($dummy)*2); $i++)
                                 {
                                   
                            $swap mt_rand(0,count($dummy)-1);
                                   
                            $tmp $dummy[$swap];
                                   
                            $dummy[$swap] = $dummy[0];
                                   
                            $dummy[0] = $tmp;
                                 }

                               
                            // get password
                               
                            return substr(implode('',$dummy),0,$length);

                            so habe ich in einem damaligen schulprojekt ein passwort generieren lassen, standard länge 8 zeichen, aber beim funktionsaufruf natürlich änderbar

                            dann brauchst du den wert nur noch per mail verschicken und fertig
                            Gruß
                            Uzu

                            private Homepage

                            Kommentar


                            • #29
                              Nett, aber inzwischen hat er ganz andere Probleme. Und mit einem Passwort hat das ganze nie wirklich was zu tun gehabt, warum er nicht direkt sein vorhaben beschrieben hat? Keine Ahnung.

                              Kommentar


                              • #30
                                Doch hatte was mit einem Passwort zu tun und das klappt auch. Mittlerweile nutze ich das für ein captcha. Dachte nur extra einen thread eröffnen wäre dafür nicht gern gesehen,bitte um entsculdigung!

                                mittlerweile klappt das auch und habe error_reporting(E_ALL) drin,kein Fehler mehr!

                                Nur klappt der Abgleich noch nicht!

                                Der Wert seht nun ach korrekt in der SESSION Variablen drin nur egal ob der Wert im Textfeld stimmt oder nicht er zeigt mir immer das es nicht stimmt!

                                PHP-Code:
                                <?php
                                $_SESSION
                                ['resultat'] = round($resultat);

                                echo 
                                $_SESSION['resultat'];
                                if(isset(
                                $_POST['send']))
                                {
                                    if(
                                $_SESSION['resultat'] != $_POST['code'])
                                    {
                                        echo 
                                "Der Code stimmt nicht überein,bitte noch mal!<br>
                                            <a href=\"captcha.php\">Zurück</a>"
                                ;
                                        exit();
                                    }
                                    else
                                    {
                                        
                                header("Location: captcha.php");
                                    }
                                }

                                <
                                br />
                                <
                                form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
                                <?
                                php echo $teil1."".$op_nutz."".$teil2." = "?><br />
                                <input type="text" name="code">
                                <input type="submit" name="send" value="Checken">
                                </form>
                                ?>
                                Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                                http://www.lit-web.de

                                Kommentar

                                Lädt...
                                X