Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Fehler in create_coupon_code() (general.php)

    Fred

    • Neu im Forum
    • Beiträge: 8
    Fehler in create_coupon_code() (general.php)
    am: 26. Januar 2010, 10:32:56
    Hi Leute, ich beschäftige mich grade mit dem Gutscheinsystem, und habe da glaub ich einen Fehler entdeckt, der kommt vermutlich nie zur Ausführung, verursacht dann aber eine endlos Schleife:

    Code: PHP  [Auswählen]
    function create_coupon_code($salt = "secret", $length = SECURITY_CODE_LENGTH) {
            $ccid = md5(uniqid("", "salt"));
            $ccid .= md5(uniqid("", "salt"));
            $ccid .= md5(uniqid("", "salt"));
            $ccid .= md5(uniqid("", "salt"));
            srand((double) microtime() * 1000000); // seed the random number generator
            $random_start = @ rand(0, (128 - $length));
            $good_result = 0;
            while ($good_result == 0) {
                    $id1 = substr($ccid, $random_start, $length);
                    $query = xtc_db_query("select coupon_code from ".TABLE_COUPONS." where coupon_code = '".$id1."'");
                    if (xtc_db_num_rows($query) == 0)
                            $good_result = 1;
            }
            return $id1;
    }

    Für den unwahrscheinlichen Fall, dass der Code schon in der Datenbank gefunden wird, wird die while Bedingung nie erfüllt, da $random_start immer gleich bleibt.

    Möglicher Fix:

    Code: PHP  [Auswählen]
    function create_coupon_code($salt = "secret", $length = SECURITY_CODE_LENGTH) {
            $ccid = md5(uniqid("", "salt"));
            $ccid .= md5(uniqid("", "salt"));
            $ccid .= md5(uniqid("", "salt"));
            $ccid .= md5(uniqid("", "salt"));
            srand((double) microtime() * 1000000); // seed the random number generator
            $good_result = 0;
            while ($good_result == 0) {
                    $random_start = @ rand(0, (128 - $length));
            $id1 = substr($ccid, $random_start, $length);
                    $query = xtc_db_query("select coupon_code from ".TABLE_COUPONS." where coupon_code = '".$id1."'");
                    if (xtc_db_num_rows($query) == 0)
                            $good_result = 1;
            }
            return $id1;
    }

    Ausserdem frage ich mich, warum im Funktionsaufruf das $salt übergeben, dann aber nur noch "salt" als String verwendet wird?

    mfg, der Fred

    Linkback: https://www.modified-shop.org/forum/index.php?topic=3579.0

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.373
    • Geschlecht:
    Re: Fehler in create_coupon_code() (general.php)
    Antwort #1 am: 08. September 2011, 16:38:53
    Das Thema hier stand auch noch bei mir in den Lesezeichen.

    ich möchte hiermit nochmal daran erinnern, damit uns das nicht durch die Lappen geht. ;-)

    Grüße

    Torsten
    12 Antworten
    7477 Aufrufe
    22. Mai 2013, 12:22:45 von w3-media
    3 Antworten
    3198 Aufrufe
    28. April 2011, 14:51:24 von fishnet
    5 Antworten
    3303 Aufrufe
    24. Mai 2010, 20:20:14 von kwiekids
    8 Antworten
    6261 Aufrufe
    13. Dezember 2011, 22:35:01 von p3e
               
    anything