Shop Hosting
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:

Autor Thema: MODUL: Artikel Anfrage  (Gelesen 127984 mal)

Offline Herr_Bert

  • Fördermitglied
  • *****
  • Beiträge: 699
  • Geschlecht: Männlich
    • Teile Beitrag
    • E-Zigaretten
Re: MODUL: Artikel Anfrage
« Antwort #420 am: 31. Mai 2018, 11:48:43 »
Noch das hier

Zitat
Suche:
ENTRY_PRIVACY_ERROR

Ersetze:
ENTRY_PRIVACY_CONTACT_ERROR

und das hier

Code: PHP  [Auswählen]
{if $PRIVACY_CHECKBOX}
          <tr>
          <td class="popup_name">&nbsp;</td>
          <td>{$PRIVACY_CHECKBOX} <strong>{#text_privacy_accept#}</strong> {$PRIVACY_LINK}</td>
         </tr>
          {/if}

in der contact_us_popup.html eingefügt und alles funktioniert  :-D nu bin ich abba stolz  8-)

Nur die Fehlermeldungen oberhalb des Formulars erscheinen nicht in einem Ferkelrosa Feld sondern auf dem Standard-Hintergrund  :-? na, das werde ich wohl im laufe des Jahres auch noch finden

Herr_Bert

Offline kgd

  • Experte
  • *****
  • Beiträge: 1.633
    • Teile Beitrag
    • https://www.karsta.de
Re: MODUL: Artikel Anfrage
« Antwort #421 am: 31. Mai 2018, 12:14:29 »
Suche mal in deiner contact_us_popup.html class="popup_message_error" und ersetze es mit: class="errormessage".

BG kgd

Offline Herr_Bert

  • Fördermitglied
  • *****
  • Beiträge: 699
  • Geschlecht: Männlich
    • Teile Beitrag
    • E-Zigaretten
Re: MODUL: Artikel Anfrage
« Antwort #422 am: 31. Mai 2018, 12:21:14 »
Oh, vielen Dank, jetzt sieht alles gleich aus  :thx:
Auch für die Hilfe in den letzten Tagen, ohne dich und Hanspeter hätte ich das nicht umsetzen können.
Ein klein wenig habe ich sogar dazu gelernt  :thumbs:

Herr_Bert

Offline astaller

  • Fördermitglied
  • *****
  • Beiträge: 643
  • Geschlecht: Männlich
    • Teile Beitrag
    • STAMAGRAF - Druckweiterverarbeitung und Druckveredelung
Re: MODUL: Artikel Anfrage
« Antwort #423 am: 31. Mai 2018, 13:43:18 »
Prima das es geklappt hat.
Jetzt hab ich mir die Arbeit heute Morgen umsomst gemacht  ;-)
War gerade dabei ein neues Paket zu schnüren...

[update]
Nichts desto trotz anbei das neue Paket für die Shopversion 1.06 rev 4642 SP4 mit Checkbox...
Bitte mal testen.

Tipp:
Die Checkbox für das normal Kontaktformular siehe dieser Beitrag, sollte ebenfalls eingearbeitet werden...

MfG
Achim S.

Offline ND

  • Neu im Forum
  • *
  • Beiträge: 7
  • Geschlecht: Männlich
    • Teile Beitrag
Re: MODUL: Artikel Anfrage
« Antwort #424 am: 16. August 2019, 21:17:14 »
Hallo Experten,

ich möchte gerne das "Frage zum Produkt"-Formular mit einem Datei-Upload Feld erweitern.

Zum Anfang habe ich das Ganze erstmal am Konaktformular umgesetzt.

Folgendes habe ich geändert bzw. ergänzt:

includes/contact_us.php

Code: PHP  [Auswählen]
xtc_php_mail($email,
                $name,
                CONTACT_US_EMAIL_ADDRESS,
                CONTACT_US_NAME,
                CONTACT_US_FORWARDING_STRING,
                $email,
                $name,                                                           
                '',
                '',
                $CONT_US_SUBJ, //new variable defined above for e-mail subject, noRiddle
 

geänder zu

Code: PHP  [Auswählen]
xtc_php_mail($email,
                $name,
                CONTACT_US_EMAIL_ADDRESS,
                CONTACT_US_NAME,
                CONTACT_US_FORWARDING_STRING,
                $email,
                $name,                                                           
                $path_to_attachement,
                $path_to_more_attachements,
                $CONT_US_SUBJ, //new variable defined above for e-mail subject, noRiddle
 

Meine Idee war, da es ja schon die Variable $path_to_attachement gibt, diese für den Upload zu verwenden.

Deshalb habe ich im Shop-Root den Ordner upload erstellt und in der contact_us.php über

Code: PHP  [Auswählen]
xtc_php_mail($email,

folgenden Code eingefügt

Code: PHP  [Auswählen]
//Ordnername festlegen in dem die hochgeladenen Dateien liegen
$ordnername = "upload";

//Unterorner per Zufallszahl erstellen
$zufall = rand(1,10000);
mkdir("$ordnername/$zufall/", 0700);
$uploadFilePath = "$ordnername/$zufall/";

// upload
// Count # of uploaded files in array
$total = count($_FILES['upload']['name']);
// Loop through each file
for( $i=0 ; $i < $total ; $i++ ) {
  //Get the temp file path
  $tmpFilePath = $_FILES['upload']['tmp_name'][$i];
  $dateityp = GetImageSize($_FILES['upload']['tmp_name'][$i]);
        if($dateityp[2] != 0){
                move_uploaded_file($tmpFilePath, "upload/$zufall/".$_FILES['upload']['name'][$i]);
        }
        $filename = '';
        if($dateityp[2] != 0) {
                $filename = "upload/$zufall/".$_FILES['upload']['name'][$i];
                $path_to_attachement[] = DIR_FS_DOCUMENT_ROOT. "$filename";
        }
}

// upload
 

Die Zeile

Code: PHP  [Auswählen]
    $smarty->assign('FORM_ACTION', xtc_draw_form('contact_us', xtc_href_link(FILENAME_CONTENT, 'action=send&coID='.(int) $_GET['coID'], 'SSL')));

geändert in

Code: PHP  [Auswählen]
    $smarty->assign('FORM_ACTION', xtc_draw_form('contact_us', xtc_href_link(FILENAME_CONTENT, 'action=send&coID='.(int) $_GET['coID'], 'SSL'),'post', 'enctype="multipart/form-data"'));

und vor der Zeile

Code: PHP  [Auswählen]
 $smarty->assign('INPUT_TEXT', xtc_draw_textarea_field('message_body', 'soft', 45, 15, ($error ? $_POST['message_body'] : $message_body)));

diese Zeile eingefügt

Code: PHP  [Auswählen]
$smarty->assign('UPLOAD', xtc_draw_input_field('upload[]','','multiple','file'));

Jetzt noch die Template-Datei SHOP_ROOT/templates/meintemplate/module/contact_us.html mit den smatys ergänzen

Code: PHP  [Auswählen]
<td>{#text_upload#}</td><td>{$UPLOAD}</td>

und die Sprachdatei SHOP_ROOT/lang/german/lang_german.conf unterhalb von [contact_us] ergänzen

Code: PHP  [Auswählen]
text_upload = 'Datei anh&auml;ngen:'

Meine Anpassungen funktionieren so weit wie gelwollt. Es wird ein Unterordner im Upload-Ordner per Zufallszahl erzeugt und über das Kontakt- bzw. Anfrageformular kann per multiselect mehrere Bilddateien angehängt werden. Die Dateien landen wie gewollt im Ordner upload/$zufall und werden dann per Mail verschickt.

Jetzt zu dem Punkt an dem ich nicht weiter komme:

Ich hätte gerne das der Ordner $zufall sammt Inhalt nach erfolgreichem Mail-Versand gelöscht wird. Meine Versuche mit rmdir(upload/$zufall) führten dazu, dass auch der Ordner upload gelöscht wurde und nicht nur der Unterordner $zufall mit Inhalt.

Vielen Dank für euere Hilfe im voraus!

VG ND

Offline hpzeller

  • Experte
  • *****
  • Beiträge: 3.079
  • Geschlecht: Männlich
    • Teile Beitrag
    • xos-shop.com | XOS-Shop ist ein umfangreiches "Open Source Webshop-System", welches per Webinterface administriert wird und an die Bedürfnisse des Betreibers angepasst werden kann.
Re: MODUL: Artikel Anfrage
« Antwort #425 am: 17. August 2019, 12:21:10 »
[...]
Ich hätte gerne das der Ordner $zufall sammt Inhalt nach erfolgreichem Mail-Versand gelöscht wird. Meine Versuche mit rmdir(upload/$zufall) führten dazu, dass auch der Ordner upload gelöscht wurde und nicht nur der Unterordner $zufall mit Inhalt.
[...]

Mich wundert das überhaupt etwas gelöscht wurde, denn die PHP-Funktion rmdir() funktioniert nur wenn das Verzeichnis leer ist, siehe hier -> https://www.php.net/manual/de/function.rmdir.php

Vorschlag: Versuch es mal mit diesem Code.

Code: PHP  [Auswählen]
// Folgender Pfad muss ev. angepasst werden wenn sich das aufgerufene Skript nicht auf gleicher Ebene befindet wie der Ordner "upload".
$dirPath = "upload/$zufall";

// Folgende Funktion ist von hier -> https://stackoverflow.com/questions/1653771/how-do-i-remove-a-directory-that-is-not-empty
function deleteDirectory($dir) {
    if (!file_exists($dir)) {
        return true;
    }

    if (!is_dir($dir)) {
        return unlink($dir);
    }

    foreach (scandir($dir) as $item) {
        if ($item == '.' || $item == '..') {
            continue;
        }

        if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
            return false;
        }

    }

    return rmdir($dir);
}

deleteDirectory($dirPath);
 

Nachtrag:
Kontrollierst du die hochgeladenen Dateien auf Schadsoftware, bevor du sie in deinem E-Mail-Client öffnest?

Gruss
Hanspeter

Offline ND

  • Neu im Forum
  • *
  • Beiträge: 7
  • Geschlecht: Männlich
    • Teile Beitrag
Re: MODUL: Artikel Anfrage
« Antwort #426 am: 17. August 2019, 17:05:27 »
Hallo Hanspeter,

erstmal vielen Dank für deine Hilfe.

Ich habe den von dir vorgeschlagenen Code an das Ende der contact_us.php gesetzt. Jetzt wird der Ordner upload inklusive aller Unterordner und Dateien gelöscht. Der Ordner upload soll aber nicht gelöscht werden, sondern nur der Unterordner der per Zufallszahl ($zufall) erzeugt wurde. Zudem hat die Mail auch keinen Anhang mehr.

Zum Test habe ich deinen Vorschlag in die inc/xtc_php_mail.inc.php eingefügt. Auch da wurde der Ordner upload inklusive Inhalt gelöscht und die Mail hatte keinen Anhang.

Hast du noch einen Vorschlag, wie bzw.wo ich den Code einfügen muss, damit es nach meinen Vorstellungen funktioniert? Hatte noch versgessen zu sagen, die Shop Version ist 1.06.

VG ND

Offline noRiddle

  • Experte
  • *****
  • Beiträge: 10.070
  • Geschlecht: Männlich
    • Teile Beitrag
    • Webdesign Bonn - Köln
Re: MODUL: Artikel Anfrage
« Antwort #427 am: 18. August 2019, 17:18:22 »
Um es zu vereinfachen könntest du erst das File mittles unlink() löschen und gleich hinterher das Directory mittels rmdir().

Allerdings würde ich mir mal über hpzellers Nachtrag Gadanken machen.
...
Kontrollierst du die hochgeladenen Dateien auf Schadsoftware, bevor du sie in deinem E-Mail-Client öffnest?
...

Vor allem würde ich aber auch den User-Input, also die hochgeladenen Files genauer prüfen und filtern.
(siehe dazu auch das PHP-Manual)
Dazu gehört eine Höchstgröße der Files die zugelassen wird, eine Begrenzung auf gewisse File-Extensions, die Restriction auf bestimmte Zeichen im File-Namen sowie das Verhindern von "Directory Traversal"-Attacks (die Suchmaschine deines Vertrauens sagt dir mehr darüber).
Am Besten wäre die Nutzung einer Upload-Klasse die das alles für dich macht, da gibt's bestimmt etwas im I-Net.
Die Klasse upload aus dem Backend würde ich für Frontend Files nicht empfehlen, sie lässt zu viel zu.

Es sei dir nochmals ans Herz gelegt keinen User-Input ungefiltert zuzulassen. Dazu gehören vor allem auch File-Uploads. Das ist kein Thema welches man vernachlässigen darf.

Es wäre außerdem nett wenn du meinen Namen aus dem Spiel lässt wenn du Code-Fetzen hier postest.
Dein Code ist unsicher, sprich, hat Sicherheitslücken, und meinen Avatar-Namen in einem Kommentar in einem Ausschnitt deinses Codes sehe ich da nicht gerne.

Gruß,
noRiddle

*NACHTRAG*
Die simple Abfrage die du in deinem Code benutzt ob der Typ den getimagesize() zurückgibt nicht 0 ist reicht bei weitem nicht zur Absicherung aus.
Nebenbei stellt sich die Frage ob Kunden nicht auch PDFs hochladen dürfen sollen, wo man mit getimagesize() dann ohnehin nicht weiterkäme.

Offline ND

  • Neu im Forum
  • *
  • Beiträge: 7
  • Geschlecht: Männlich
    • Teile Beitrag
Re: MODUL: Artikel Anfrage
« Antwort #428 am: 18. August 2019, 19:44:54 »
Hallo noRiddle,

entschuldige, dass ich deinen Namen mit gepostet habe. Ich gebe Dir und Hanspeter Recht, dass der Code so wie ich ihn gepostet habe nicht sicher ist. Mir ging es bis hier hin um die Funktionsweise und ob meine Idee so umsetzbar ist. Das Thema Sicherheit darf selbstverständlich nicht außeracht gelassen werden und steht als nächstes auf meiner Liste! Aber ich werden deinen Rat beherzigen und von der Upload-Funktion die Finger lassen und mir eine andere Lösung überlegen.

VG ND


Teile per facebook Teile per linkedin Teile per twitter

 


             
anything