Trade Republic - Provisionsfrei Aktien handeln
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: MODUL: Gutschein Generator Premium für modified eCommerce Shopsoftware

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Also ich hätte auch wirklich einen Besen gefressen, wenn es nur an der Groß-Kleinschreibung und den Zeilenumbrüchen gelegen hätte. Da hatte web0null schon recht, dass es daran nicht liegen kann.

    Das einzige Problem mit der Groß-Kleinschreibung und auch mit Einrückungen (statt Leerzeichen z.B. Tabs)
    gab es, wenn die split_page_results.php beteiligt war. Dieses ist hier aber nicht der Fall.

    Gruß
    Ronny

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    So, habe mir das aus Interesse auch mal test-installiert.
    Da werden nicht mal die Vorschau-Bilder angezeigt. "Url konnte nicht geladen werden" sagt Firebug.
    Null Plan warum...

    Gruß,
    noRiddle

    swolfram [templatix]

    • Fördermitglied
    • Beiträge: 1.169
    • Geschlecht:
    Mein Modul ist älter als das von Torsten, aber es läuft. Abgesehen von leeren Gutscheinen bei jeder Bestellung.

    Ladeproblem könnte an falschen schreibrechten vom Ordner liegen.

    web0null

    • Experte
    • Beiträge: 1.998
    Ich sage es nochmal, es liegt nicht an den Zeilenumbrüchen.

    Habe mir den Code jetzt mal genauer angesehen.
    Und siehe da, Fehler entdeckt. :whistle:

    Es werden Werte aus der Tabelle coupon_email_track_tmp ausgelesen, (Zeile 3) und dann stumpf mehrere INSERT´s (Zeile 16, 19) gemacht.
    Ohne zu prüfen ob aus dem SELECT überhaupt etwas herauskommt.
    Da darf man sich nicht wundern wenn da leere Einträge (und vor allem bei jeder Bestellung) in DB geschrieben wird.

    Die unnötigen Zeilenumbrüche gehören aber trotzdem weg, sie sind zwar nicht schädlich, sind aber in dem Fall unnötig.

    Gruß

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Jupp... auch gesehen.

    Lösung:

    Suche:

    Code: PHP  [Auswählen]
      // BOF Gutschein Generator
      if(MODULE_GIFT_GENERATOR_STATUS == 'true') {
        $gv_query = xtc_db_query("SELECT c.coupon_code,
                                         c.coupon_id,
                                         c.coupon_amount,
                                         ce.titel,
                                         ce.text,
                                         ce.sign,
                                         ce.emailed_to
                                    FROM coupon_email_track_tmp ce,
                                         coupons_tmp c
                                   WHERE ce.session_id = '"
    .$_SESSION['sid']."'
                                     AND c.coupon_id = ce.coupon_id"
    );
        $gv_result = xtc_db_fetch_array($gv_query);

        $insert_query = xtc_db_query("INSERT INTO coupons (coupon_code, coupon_type, coupon_amount, coupon_active, date_created) VALUES ('" . $gv_result['coupon_code'] . "', 'G', '" . $gv_result['coupon_amount'] . "', 'N', now())");
        $insert_id = xtc_db_insert_id($insert_query);
       
        $insert_query = xtc_db_query("INSERT INTO coupon_email_track (coupon_id, customer_id_sent, sent_firstname, emailed_to, date_sent, text, titel, sign, session_id) VALUES ('" . $insert_id ."', '0', 'Admin', '" . $gv_result['emailed_to'] . "', now(), '" . $gv_result['text'] . "', '" . $gv_result['titel'] . "', '" . $gv_result['sign'] . "', '" . $_SESSION['sid'] . "' )");
     
        if (file_exists($gv_result['coupon_code'].'.png')) {
          if(copy($gv_result['coupon_code'].'.png', DIR_FS_DOCUMENT_ROOT.'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png')) {
            unlink($gv_result['coupon_code'].'.png');
          }
        }

        if (file_exists($gv_result['coupon_code'].'_big.png')) {
          if(copy($gv_result['coupon_code'].'_big.png', DIR_FS_DOCUMENT_ROOT.'giftvoucher/gifts/'.$gv_result['coupon_code'].'_big.png')) {
            unlink($gv_result['coupon_code'].'_big.png');
          }
        }
     
        $delete1 = xtc_db_query("DELETE FROM coupons_tmp WHERE coupon_id = '".$gv_result['coupon_id']."'");
        $delete2 = xtc_db_query("DELETE FROM coupon_email_track_tmp WHERE session_id = '".$_SESSION['sid']."'");
      }
      // EOF Gutschein Generator

    und ersetze mit:

    Code: PHP  [Auswählen]
      // BOF Gutschein Generator
      if(MODULE_GIFT_GENERATOR_STATUS == 'true') {
        $gv_query = xtc_db_query("SELECT c.coupon_code,
                                         c.coupon_id,
                                         c.coupon_amount,
                                         ce.titel,
                                         ce.text,
                                         ce.sign,
                                         ce.emailed_to
                                    FROM coupon_email_track_tmp ce,
                                         coupons_tmp c
                                   WHERE ce.session_id = '"
    .$_SESSION['sid']."'
                                     AND c.coupon_id = ce.coupon_id"
    );
        if (xtc_db_num_rows($gv_query) == '1') {
          $gv_result = xtc_db_fetch_array($gv_query);
     
          $insert_query = xtc_db_query("INSERT INTO coupons (coupon_code, coupon_type, coupon_amount, coupon_active, date_created) VALUES ('" . $gv_result['coupon_code'] . "', 'G', '" . $gv_result['coupon_amount'] . "', 'N', now())");
          $insert_id = xtc_db_insert_id($insert_query);
         
          $insert_query = xtc_db_query("INSERT INTO coupon_email_track (coupon_id, customer_id_sent, sent_firstname, emailed_to, date_sent, text, titel, sign, session_id) VALUES ('" . $insert_id ."', '0', 'Admin', '" . $gv_result['emailed_to'] . "', now(), '" . $gv_result['text'] . "', '" . $gv_result['titel'] . "', '" . $gv_result['sign'] . "', '" . $_SESSION['sid'] . "' )");
       
          if (file_exists($gv_result['coupon_code'].'.png')) {
            if(copy($gv_result['coupon_code'].'.png', DIR_FS_DOCUMENT_ROOT.'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png')) {
              unlink($gv_result['coupon_code'].'.png');
            }
          }
     
          if (file_exists($gv_result['coupon_code'].'_big.png')) {
            if(copy($gv_result['coupon_code'].'_big.png', DIR_FS_DOCUMENT_ROOT.'giftvoucher/gifts/'.$gv_result['coupon_code'].'_big.png')) {
              unlink($gv_result['coupon_code'].'_big.png');
            }
          }
       
          $delete1 = xtc_db_query("DELETE FROM coupons_tmp WHERE coupon_id = '".$gv_result['coupon_id']."'");
          $delete2 = xtc_db_query("DELETE FROM coupon_email_track_tmp WHERE session_id = '".$_SESSION['sid']."'");
        }
      }
      // EOF Gutschein Generator

    Das Modul in Beitrag 1 wurde entsprechend aktualisiert.

    Grüße

    Torsten

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Und dann sollte man noch folgendes machen:
    In den beiden Dateien /giftvoucherpreview.php und /giftvoucherpreview_big.php den Header-Befehl nach unten vor die Ausgabe zu holen, sprich das
    Code: PHP  [Auswählen]
    header("Content-type: image/png");

    jeweils vor
    Code: PHP  [Auswählen]
    imagePNG($image);
    if(isset($gv_result['coupon_code'])) {
            imagePNG($image, 'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png');
    }

    Dann wird auch bei meiner Testumgebung das Vorschaubild angezeigt.
    Das gehört ohnehin nicht vor das Include der application_top.php.

    Außerdem fragte ich mich was eigentlich das Bild
    Code: XML  [Auswählen]
    <img src="giftvoucherpreview_big.php" border="0" width="0" height="0">
    in der giftvoucher.html soll, also mit width und height = 0. Tolle Nummer und sinnlos.
    Deshalb habe ich das große Bild mittles Thickbox verlinkt, sodaß der Kunde sich die Vorschau in groß ansehen kann.
    Die Thickbox akzeptiert allerdings keine *.php-Datei als Bild-Popup.
    Dazu muß man in die thickbox.js gehen und an folgenden Stellen etwas verändern:
    Suche
    Code: Javascript  [Auswählen]
    urlString=/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
    und mache daraus
    Code: Javascript  [Auswählen]
    urlString=/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$|\.php$/;

    und finde kurz danach das
    Code: Javascript  [Auswählen]
    if(urlType=='.jpg'||urlType=='.jpeg'||urlType=='.png'||urlType=='.gif'||urlType=='.bmp')
    und mache daraus
    Code: Javascript  [Auswählen]
    if(urlType=='.jpg'||urlType=='.jpeg'||urlType=='.png'||urlType=='.gif'||urlType=='.bmp'||urlType=='.php')

    Das kann auch in meiner "Thickbox anmiert" auf ähnliche Weise erweitert werden.

    So macht das giftvoucherpreview_big-Bild wenigstens Sinn.

    Gruß,
    noRiddle

    *NACHTRAG*
    Achso, für die die es nicht wissen:
    Die Verlinkung mittels Thickbox sähe dann im Code so aus:
    Code: Text  [Auswählen]
    <a href="giftvoucherpreview_big.php" class="thickbox"><img src="giftvoucherpreview.php" border="0" width="250"></a>

    [EDIT Tomcraft 09.12.2014: Korrektur in Modul aus Beitrag 1 übernommen.]

    swolfram [templatix]

    • Fördermitglied
    • Beiträge: 1.169
    • Geschlecht:
    Jungs, ihr seid Spitze. Bevor ich die Zeit finde, mir mal den Code anzuschauen, haut ihr hier schon wieder Lösungen raus.

    @noRiddle
    Ungeprüft: Ich war der Meinung, das dieses /giftvoucherpreview_big.php dazu da ist, das der Gutschein gleich in voller Auflösung (Big) erzeugt wird und somit beim Checkout dann parat liegt. Ist bei Deiner Anpassung denn auch weiterhin der große (echte) Gutschein zum ausdrucken vorhanden nach dem Bestellvorgang?

    Btw: Die Vorschau des Gutscheins nicht zu verlinken, ist meiner Meinung nach auch besser. Ich will ja nicht, dass der Kunde den Gutschein samt Code einfach ausdruckt (was bei der großen Vorschau durchaus möglich ist). Der macht sich einen zurecht, druckt die Mega-Vorschau auf A4 aus und vergisst dann zu kaufen oder zu bezahlen. Wäre ziemlich doof... für den Beschenkten. Und den Kunden. Und den Shopbetreiber.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    • Ja, die Datei CODE_big.png wird generiert, daß hat mit der "Darstellung" des Bildes mit with und height = 0 in der giftvoucher.html nichts zu tun, sie ist schlicht unsinnig.
    • An das Bild käme der Kunde auch so.
      Der Gutschein-Code ist erst verwendbar wenn die Bestellung auf den Bestellstatus gesetzt wurde der in der Konfiguration bei "Bestellstatus" definiert wurde,
      was du, nehme ich mal an, nicht tun wirst wenn noch nicht bezahlt ist.

    Gruß,
    noRiddle

    swolfram [templatix]

    • Fördermitglied
    • Beiträge: 1.169
    • Geschlecht:
    OK, das wichtigste war das generieren. Hatte befürchtet das hing zusammen. Dann passt die Änderung. Danke.

    Was ich zudem meine ist, das es durchaus Kunden gibt, die denken, die können das Teil direkt sofort in groß, bunt und Farbe ausdrucken und haben dann den Gutschein, haben aber eben noch nicht bezahlt oder gar gekauft. Nicht mit böser Absicht, aber eben weil es einem so erscheint, als sei das schon alles. Der fette, rote Overlay-Hinweis "MUSTER" fehlt eben. Ich denke immer DAU ;-)

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Könnte man leicht erweitern, sodaß "Muster" quer drübersteht.
    Der Gutschein der dann in /giftvoucher/gifts/ gespeichert wird wird dann ohne "Muster" gespeichert.
    Aber auch den kann man ja, wenn man den Pfad kennt, aufrufen und runterladen.
    Es gäbe lediglich keine Verwirrung während des Bestellvorgangs, sodaß ein Vollhirni denken könnte er müsse den Gutschein nicht bezahlen.

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Wo wir gerade dabei sind:

    Was soll eigentlich das hier in giftvoucherpreview.php und in giftvoucherpreview_big.php sein ?

    Code: PHP  [Auswählen]
    $text = wordwrap( $text, 35, '[br]', 1);
    $anzahl_zeilen = (substr_count ($text, "[br]")) + 1;
    $text = explode('[br]',$text);

    Das muß imho so aussehen:

    Code: PHP  [Auswählen]
    $text = wordwrap( $text, 35, "\n", 1);
    $anzahl_zeilen = (substr_count ($text, "\n")) + 1;
    $text = explode("\n",$text);

    Ansonsten gibt es Probleme bei mehrzeiligen Texten in "Persönliche Mitteilung".

    Mir erscheint außerdem der User-Input welcher in die DB geschrieben wird zu wenig, eigtl. gar nicht, geschützt, weshalb man in /giftvoucher.php die Funktion xtc_db_perform() benutzen sollte.

    Desweiteren weise ich nochmals darauf hin, daß der header-Befehl unmittelbar vor die Augabe gehört und nicht an den Anfang der PHP-Dateien über

    Code: PHP  [Auswählen]
    include('includes/application_top.php');

    also so:

    Code: PHP  [Auswählen]
    header("Content-type: image/png");
    imagePNG($image);

    In der /checkout_process.php soll u.a. dieser Code eingebaut werden:

    Code: PHP  [Auswählen]
    if (file_exists($gv_result['coupon_code'].'.png')) {
        if(copy($gv_result['coupon_code'].'.png', DIR_FS_DOCUMENT_ROOT.'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png')) {
            unlink($gv_result['coupon_code'].'.png');
        }
    }
     
    if (file_exists($gv_result['coupon_code'].'_big.png')) {
        if(copy($gv_result['coupon_code'].'_big.png', DIR_FS_DOCUMENT_ROOT.'giftvoucher/gifts/'.$gv_result['coupon_code'].'_big.png')) {
            unlink($gv_result['coupon_code'].'_big.png');
        }
    }

    Wer klärt mich auf wofür das nötig ist ?
    Bereits in den Dateien giftvoucherpreview.php und giftvoucherpreview_big.php werden die Bilder in den Ordner /giftvoucher/gifts/ ausgegeben.
    Wozu also der oben aufgeführte Code ?; und wieso sollten Files namens $gv_result['coupon_code'].'(_big).png' ohne Ordner-Bezug existieren ?

    Außerdem fiel mir noch auf, daß die zur Coupon-Code-Generierung verwendete Funktion create_coupon_code() nicht astrein ist, was jedoch mit dem vorliegenden Modul nur bedingt etwas zu tun hat da die Funktion auch für das shop-eigene Coupon-System verwendet wird.
    Mir ist nicht klar was der String-Parameter "salt" bewirken soll und ob das md5() auf uniqid() förderlich ist ist fraglich:

    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;
      }

    Ich würde sagen:
    • ist der zweite Parameter von uniqid() ein Boolean und kein String
    • sollte man mt_rand() und mt_srand() benutzen da es ein wenig schneller ist
    • zitiere ich mal das PHP-Manual:
      "Hinweis: Seit PHP 4.2.0 besteht keine Notwendigkeit mehr, den Zufallsgenerator für Zahlen mit srand() oder mt_srand() zu füttern, das geschieht nun automatisch."

    Und nun für swolfram und andere die eine "Muster" oder "Vorschau"-Beschriftung auf den Gutschein-Vorschau-Bildern wünschen:

    (Die von mir oben aufgeführten Änderungen sind bereits eingeflossen. Die modified-eigene Funktion create_coupon_code() wurde allerdigs belassen wie sie ist.)
    Man lege einen weiteren Ordner namens "temp_gifts" im Root-Ordner /giftvoucher/ an und ändere folgendes in den diversen Dateien:

    1.
    In /giftvoucherpreview.php das oben in der Datei suchen:

    Code: PHP  [Auswählen]
    header("Content-type: image/png");

    und so auskommentieren

    Code: PHP  [Auswählen]
    //header("Content-type: image/png");

    In gleicher Datei /giftvoucherpreview.php unten das suchen

    Code: PHP  [Auswählen]
    imagePNG($image);
    if(isset($gv_result['coupon_code'])) {
            imagePNG($image, 'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png');
    }
    ImageDestroy ($image);

    und hiermit ersetzen

    Code: PHP  [Auswählen]
    //store clean voucher in folder /giftvoucher/gifts/, noRiddle
    if(isset($gv_result['coupon_code'])) {
            imagePNG($image, 'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png');
    }

    //generate sample voucher, noRiddle
    $image_sample = $image;
    $sample = 'Vorschau';
    $bigfontsize = 50;
    $bigtextfarbe_firByte = hexdec(substr('CC0000',0,2));
    $bigtextfarbe_secByte = hexdec(substr('CC0000',2,2));
    $bigtextfarbe_thiByte = hexdec(substr('CC0000',4,2));
    $bigtranbspindx = 110;
    $bigfont_color_wert_raw = imagecolorallocatealpha($image_sample, $bigtextfarbe_firByte , $bigtextfarbe_secByte, $bigtextfarbe_thiByte, $bigtranbspindx);
    $bigfont_color_wert = imagecolortransparent($image_sample, $bigfont_color_wert_raw);
    imagettftext($image_sample, $bigfontsize, -45, 15, 25, $bigfont_color_wert, $font_path.$font_file_wert, $sample);

    //header must be here, noRiddle
    header("Content-type: image/png");
    //display sample, noRiddle
    imagePNG($image_sample);

    //store sample voucher in folder /giftvoucher/temp_gifts/, noRiddöe
    if(isset($gv_result['coupon_code'])) {
            imagePNG($image_sample, 'giftvoucher/temp_gifts/'.$gv_result['coupon_code'].'.png');
    }

    ImageDestroy ($image);
    ImageDestroy ($image_sample);

    2.
    In /giftvoucherpreview_big.php das oben in der Datei suchen:

    Code: PHP  [Auswählen]
    header("Content-type: image/png");

    und so auskommentieren

    Code: PHP  [Auswählen]
    //header("Content-type: image/png");

    In gleicher Datei /giftvoucherpreview_big.php unten das suchen

    Code: PHP  [Auswählen]
    imagePNG($image);
    if(isset($gv_result['coupon_code'])) {
            imagePNG($image, 'giftvoucher/gifts/'.$gv_result['coupon_code'].'_big.png');
    }
    ImageDestroy($image);

    und hiermit ersetzen

    Code: PHP  [Auswählen]
    //store clean voucher in folder /giftvoucher/gifts/, noRiddle
    if(isset($gv_result['coupon_code'])) {
            imagePNG($image, 'giftvoucher/gifts/'.$gv_result['coupon_code'].'_big.png');
    }

    //sample, noRiddle
    $image_sample = $image;
    $sample = 'Vorschau';
    $bigfontsize = 120;
    $bigtextfarbe_firByte = hexdec(substr('CC0000',0,2));
    $bigtextfarbe_secByte = hexdec(substr('CC0000',2,2));
    $bigtextfarbe_thiByte = hexdec(substr('CC0000',4,2));
    $bigtranbspindx = 110;
    $bigfont_color_wert_raw = imagecolorallocatealpha($image_sample, $bigtextfarbe_firByte , $bigtextfarbe_secByte, $bigtextfarbe_thiByte, $bigtranbspindx);
    $bigfont_color_wert = imagecolortransparent($image_sample, $bigfont_color_wert_raw);
    imagettftext($image_sample, $bigfontsize, -45, 35, 65, $bigfont_color_wert, $font_path.$font_file_wert, $sample);

    //header must be here, noRiddle
    header("Content-type: image/png");
    //display sample, noRiddle
    imagePNG($image_sample);

    //store sample voucher in folder /giftvoucher/temp_gifts/, noRiddöe
    if(isset($gv_result['coupon_code'])) {
            imagePNG($image_sample, 'giftvoucher/temp_gifts/'.$gv_result['coupon_code'].'_big.png');
    }

    ImageDestroy ($image);
    ImageDestroy ($image_sample);

    Wer einen mehrsprachigen Shop fährt sollte in beiden Dateien 'Vorschau' mit einer Sprachkonstanten ersetzen, z.B. VOUCHER_PREVIEW_TAG
    und die Konstante in /lang/SPRACHE/SPRACHE.php jeweils definieren.

    3.
    In /checkout_success das suchen

    Code: PHP  [Auswählen]
    $smarty->assign('LINK_DOWNLOAD', HTTP_SERVER.DIR_WS_CATALOG.'giftvoucher/gifts/'.$gv_result['coupon_code'].'_big.png');
    $smarty->assign('LINK_PREVIEW', HTTP_SERVER.DIR_WS_CATALOG.'giftvoucher/gifts/'.$gv_result['coupon_code'].'.png');

    und hiermit ersetzen

    Code: PHP  [Auswählen]
    //BOC changed path to temp_gifts for preview voucher, noRiddle
    $smarty->assign('LINK_DOWNLOAD', HTTP_SERVER.DIR_WS_CATALOG.'giftvoucher/temp_gifts/'.$gv_result['coupon_code'].'_big.png');
    $smarty->assign('LINK_PREVIEW', HTTP_SERVER.DIR_WS_CATALOG.'giftvoucher/temp_gifts/'.$gv_result['coupon_code'].'.png');
    //EOC changed path to temp_gifts for preview voucher, noRiddle

    Damit wird auch auf der checkout_success-Seite der Muster-/Vorschau-Gutschein angezeigt.

    Möchte man den Ordner in welchem die Vorschau-Gutscheine liegen (/giftvoucher/temp_gifts/) nicht immer weiter füllen,
    kann man noch folgendes machen in /admin/orders.php

    (!! Achtung, nichts vertauschen da verschiedene Code-Teile ähnlich aussehen !!)

    Suche das

    Code: PHP  [Auswählen]
    if(file_exists(DIR_FS_CATALOG.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'_big.png')) {
        xtc_php_mail(EMAIL_BILLING_ADDRESS,
                     EMAIL_BILLING_NAME,
                     $coupon_value['emailed_to'],
                     '',
                     '',
                     EMAIL_BILLING_REPLY_ADDRESS,
                     EMAIL_BILLING_REPLY_ADDRESS_NAME,
                     DIR_FS_CATALOG.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'_big.png',
                     '',
                     $gv_email_subject,
                     $html_mail,
                     $txt_mail
                    );

    und ersetze mit

    Code: PHP  [Auswählen]
    if(file_exists(DIR_FS_CATALOG.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'_big.png')) {
        xtc_php_mail(EMAIL_BILLING_ADDRESS,
                     EMAIL_BILLING_NAME,
                     $coupon_value['emailed_to'],
                     '',
                     '',
                     EMAIL_BILLING_REPLY_ADDRESS,
                     EMAIL_BILLING_REPLY_ADDRESS_NAME,
                     DIR_FS_CATALOG.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'_big.png',
                     '',
                     $gv_email_subject,
                     $html_mail,
                     $txt_mail
                    );
        //BOC delete temporary voucher, noRiddle
        if(file_exists(DIR_FS_CATALOG.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'_big.png')) {
            unlink(DIR_FS_CATALOG.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'_big.png');
        }
        if(file_exists(DIR_FS_CATALOG.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'.png')) {
            unlink(DIR_FS_CATALOG.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'.png');
        }
        //EOC delete temporary voucher, noRiddle

    In gleicher Datei /admin/orders.php suche das

    Code: PHP  [Auswählen]
    } elseif (file_exists(DIR_FS_CATALOG.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'.png')) {
        xtc_php_mail(EMAIL_BILLING_ADDRESS,
                     EMAIL_BILLING_NAME,
                     $coupon_value['emailed_to'],
                     '',
                     '',
                     EMAIL_BILLING_REPLY_ADDRESS,
                     EMAIL_BILLING_REPLY_ADDRESS_NAME,
                     DIR_FS_CATALOG.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'.png',
                     '',
                     $gv_email_subject,
                     $html_mail,
                     $txt_mail
                    );

    und ersetze mit

    Code: PHP  [Auswählen]
    } elseif (file_exists(DIR_FS_CATALOG.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'.png')) {
        xtc_php_mail(EMAIL_BILLING_ADDRESS,
                     EMAIL_BILLING_NAME,
                     $coupon_value['emailed_to'],
                     '',
                     '',
                     EMAIL_BILLING_REPLY_ADDRESS,
                     EMAIL_BILLING_REPLY_ADDRESS_NAME,
                     DIR_FS_CATALOG.'/giftvoucher/gifts/'.$coupon_code['coupon_code'].'.png',
                     '',
                     $gv_email_subject,
                     $html_mail,
                     $txt_mail
                    );
        //BOC delete temporary voucher, noRiddle
        if(file_exists(DIR_FS_CATALOG.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'.png')) {
            unlink(DIR_FS_CATALOG.'/giftvoucher/temp_gifts/'.$coupon_code['coupon_code'].'.png');
        }
        //EOC delete temporary voucher, noRiddle

    Damit werden die Vorschau-Gutscheine aus dem neuen Ordner /giftvoucher/temp_gifts/ gelöscht (*EDIT*), nachdem der jeweilige Gutschein freigegeben und versendet wurde (*END_EDIT*).

    Bis auf die letztgenanne Änderung in der /admin/orders.php ist alles getestet.

    Anbei noch ein paar Screenshots.

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Die bei entsprechender Status-Änderung in der Bestellung versendeten Gutscheine sind dann ohne das "Vorschau"-Wasserzeichen.
    Screenshot 2 und 3 sind der in einem vorigen Post erwähnte Aufruf des vergrößerten Vorschau-Bildes des Gutscheines in der "Thickbox animiert".

    Viel Erfolg,
    Gruß,
    noRiddle

    [EDIT Tomcraft 09.12.2014: Anleitung für Wasserzeichen in Beitrag 1 verlinkt.]

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Mir ist nicht klar was der String-Parameter "salt" bewirken soll

    Ein Salt macht schon Sinn http://de.wikipedia.org/wiki/Salt_%28Kryptologie%29 ... nur sollte man eventuell nicht gerade "salt" als Salt nehmen. Ich schlage vor hier einen im Backend einstellbaren String zu nehmen, den jeder selbst im Backend festlegt. Ein bekannter Salt ist so gut wie keiner. Was ähnliches ist mir für Kreditkartendaten im Backend über den Weg gelaufen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Blödsinn und am Thema vorbei.
    Mit Verlaub: So ein nachgeplattertes Halbwissen ist nicht förderlich.

    Es geht hier 1. nicht um Passwort-Verschlüsselung sondern um einen möglichst nicht zu langen Gutschein-Code
    und 2. lies nochmal genau:
    Der zweite Parameter in uniqid() ist ein Boolean und kein "Salt" irgendeiner Art und schon ohnehin kein String.

    Gruß,
    noRiddle

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Haste wieder Deine 5 Minuten?

    Das "nachgeplapperte Halbwissen" stammt aus meiner Berufsausbildung, bei der ich der einzige war der die mündliche Abschlussprüfung mit voller Punktzahl abgeschlossen hatte.

    zu 2: hatte ich tatsächlich überlesen.

    Generell zur Funktion .... wenn man sich die Beschreibung von uniqid ansieht, steht hier in ROT
    Zitat
    This function does not create random nor unpredictable strings. This function must not be used for security purposes. Use a cryptographically secure random function/generator and cryptographically secure hash functions to create unpredictable secure IDs.

    Ich hab keine Ahnung was ihr da genau bastelt, sieht schön aus. Nur ein Einwurf. Ihr solltet sicherstellen, dass man nicht vorhersehen kann was der nächste Gutscheincode sein wird! Dafür geht ein Salt. Ich wollte eigentlich nur sicherstellen, dass hier im Thread jedem bewusst ist was ein Salt ist und für was der da ist. Das Modul interessiert mich persönlich nicht die Bohne. Nur hatte sich einer der Vorgänger wohl mal Gedanken gemacht (evtl auch die falschen, da zweiter Parameter bool ist.), und deshalb sollte man wenn etwas unklar ist genau wissen um was es geht, sonst werden eventuell Betrügern die Türen geöffnet. Das will ich verhindern.

    Und wenn ich das lese :
    Code: PHP  [Auswählen]
    function create_coupon_code($salt="secret"

    Dann graut es mir schon .... (ohne genau zu wissen um was es geht.) Entweder ist hier ein Salt hardcoded oder eine Variable hat einen anderen Namen als ihre Bedeutung.

    Das ist wie wenn ein Elektriker mit Werkzeug kommt das nicht isoliert ist. Da brauche ich auch nicht zu wissen was er denn genau machen will um zu wissen, dass ich ihn umgehend die Tür raus jage.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Haste wieder Deine 5 Minuten?
    ...

    Nee, es sind 15 Minuten.

    Auch nach all deinen Worten bleibt es ein Kontextbruch und ist nicht passend zum Thema dieses Threads.

    Inwieweit die Funktion create_coupon_code() mal modernisiert werden sollte ist sicherlich ein Thema, wie ich selbst auch schrieb, aber Tomcraft hat es ja gelesen...

    Gruß,
    noRiddle
    Werbung / Banner buchen
    1 Antworten
    3138 Aufrufe
    02. September 2016, 14:49:32 von waynejuckts
    3 Antworten
    2967 Aufrufe
    06. Oktober 2012, 13:59:29 von schnickpick85
    2 Antworten
    2855 Aufrufe
    27. April 2012, 16:09:55 von eisenkarl