Facebook - Like it! Google - 1 plus f�r diese Seite vergeben!
   

elektronische Schlauchwaage  

putzmaschine  

akkuschrauber  

winkelschleifer  

Akku  

nilfisk  

hochdruckreiniger  

Betonglätter  

rüttler  

makita akkuschrauber  

Makita  

rokamat  

makita radio  

bosch  

Akkuschrauber  

akku  

ersatzteile  

Radio  

kettensäge  

staubsauger  

#!/usr/bin/perl use CGI::Carp qw(fatalsToBrowser); # ========================================================================================== # Copyright (c) 1998-2009 HIS Internet Soft GmbH, info@his-webshop.de. All rights reserved. # https://his-webshop.de/ # .......................................................................................... # HIS WebShop 2.50 -- Online Shop mit Warenkorbsystem # Version: 30.08.2004 # # ----- LIZENZBESTIMMUNG ------ # # 1. Dieses Programm (HIS WebShop) darf nur unter folgenden Bedingungen eingesetzt # werden: # (1) Die Internet Domain des Shops muss für das HIS WebShop Shopsystem # lizensiert sein (Ausstellung bei: info@his-webshop.de). # (2) Eine Lizenz ist immer gültig für nur einen Shop. Werden mehrere Shops # unterschiedlicher Firmen auf einer Domain betrieben, so muss für jeden # einzelnen Shop das Shopsystem lizensiert werden (Rabatte sind möglich!). # # Der unbegrenzte Einsatz des Shopsystems ist erst nach Eingabe eines Registrier Keys # möglich. Ein Registrier Key gilt dabei immer für eine bestimmte Domain. # Beim Erwerb einer Lizenz erhalten Sie den gültigen Registrier Key für die Domain. # Aktuelle Konditionen zum Erwerb einer Lizenz finden Sie auf der HIS WebShop # Homepage: https://his-webshop.de/ # # 2. Der Konfigurations-Teil darf geändert werden. Alle anderen Teile des Quellcodes sind # urherberrechtlich geschützt. Eine Änderung bedarf der Einwilligung des Autors. # # 3. Die Weitergabe des Programms an Dritte ist nicht gestattet. # ========================================================================================== # ==============================KONFIGURATIONS-TEIL BEGINN================================== # ========================================================================================== # DIE FOLGENDEN VARIABLEN BITTE ANPASSEN! # Wenn das Skript NICHT laufen sollte, liegt es meistens an fehlerhaften # Konfigurationsvariablen. # WICHTIG: # Bei $email muessen fuer die Zuweisung 'einfache' Anfuehrungsstriche gesetzt werden. # Bei allen anderen Strings genuegen "doppelte" Anfuehrungsstriche. # ========================================================================================== # ==============================KONFIGURATIONS-TEIL BEGINN================================== # ========================================================================================== # DIE FOLGENDEN VARIABLEN BITTE ANPASSEN! # Wenn das Skript NICHT laufen sollte, liegt es meistens an fehlerhaften # Konfigurationsvariablen. # WICHTIG: # Bei $email muessen fuer die Zuweisung 'einfache' Anfuehrungsstriche gesetzt werden. # Bei allen anderen Strings genuegen "doppelte" Anfuehrungsstriche. # ========================================================================================== # Ersetzen Sie www.firma.de durch Ihre Domain!!!! $rc{"www.shop.baudienst.com"}="560-149-011-5907"; # Hier geben Sie Ihren 13-stelligen Registrier-Key ein!!!! WICHTIG !!!! $rc{"https://shop.baudienst.com"}="332-230-236-4295"; $saferpay_accountid="99867-94913159"; $saferpay_accountid="98748-17795948"; $saferpay_email='kreditkarte@baudienst.com'; $saferpay_failed="https://shop.baudienst.com/cgi-bin/hws/his-webshop.pl?t=temsaferpay_failed"; $saferpay_ok="https://shop.baudienst.com/cgi-bin/hws/his-webshop.pl?ostcda_sp"; $basket_name_field="NAME"; $pp_username="paypal_api1.baudienst.com"; $pp_password="SLM4UV73Z77TGRQZ"; $pp_signature="AcqCA0iNQhMldeIwJoSqQMlzgUceAv1I.41bLFT8AS.t4hDrYkRVlo6o"; $paypal_item='Bestellung bei www.shop.baudienst.com'; $paypal_directory="../hws-temp/ppdata/"; $paypal_notify_url="https://shop.baudienst.com/cgi-bin/hws/his-webshop.pl?t=tempaypal"; $paypal_cancel_return="https://shop.baudienst.com/cgi-bin/hws/his-webshop.pl?t=tembaske"; no warnings; $no_log=0; # keine Log-Dateien schreiben @all_dbs=( # Hier werden alle Datenbanken angegeben! "artalle.csv" # Falls keine Datenbank übergeben wird über "db=datenbank.txt",); ); $trennzeichen=';'; $email='onlineshop@baudienst.com'; # Ihre E-Mail (Wichtig fuer die Bestellungsmail) $bcc_email='info@fairzone.de'; # Die E-Mail an den Shopinhaber kann zusätzlich als BCC (Blind Carbon Copy) $bcc_mail_email='onlineshop-kopie@baudienst.com'; # zum Beispiel an einen Administrator verschickt werden. $profiledirectory="../hws-temp/kunden/"; # Verzeichnis, wo Kundendaten (Profile fuer Warenkorb) # gespeichert werden sollen. $tempdirectory="./template/"; # Verzeichnis, wo sich die Templates (HTML und Mail) befinden. $datadirectory="./daten/"; # Verzeichnis, wo sich die aus einer Datenbank # exportierte Textdatei befindet. $globaltxt="./daten/global.txt"; # Pfad zur Konfig. Datei mit globalen Variablen! # Aufbau der Datei: # MWST;16 # WAEHRUNG;DM # usw. # In den Templates können die Globalen Variablen dann so # verwendet werden: [G_MWST] [G_WAEHRUNG] usw. $max_minuten_inaktiv=2880; # Wenn laenger als $max_minuten_inaktiv kein Zugriff auf einen # Warenkorb registriert wurde, wird das Profil geloescht. Voreinstellung: 30 Minuten. $min_userid=100000; # Die minimale User-ID (Bestellnr.), die vergeben wird. $max_userid=999999; # Die max. User-ID (Bestellnr.), die vom System vergeben wird. $sendmail_def=0; # 0: Mails per UNIX-Programm Sendmail verschicken # 1: Mails per SMTP-Server verschicken # ------- Falls sendmail_def=0 ausgewählt --------- $mailprog = "/usr/lib/sendmail"; # Externes Mail-Programm sendmail. Pfad kann auch z.B. auf Ihrem # Host auch "/usr/sbin/sendmail" sein. # ------------------------------------------------- # ------- Falls sendmail_def=1 ausgewählt --------- $mail_smtp_server="mail.IhreDomain.de"; # Mail-Server für ausgehende (Bestellungs) Mails # z.B. mail.IhreDomain.de # ------------------------------------------------- $robots="Googlebot,msnbot,Yahoo! Slurp,Ask Jeeves,MJ12bot,twiceler,Yeti,gigabot,Exabot,Slurp,Teoma,seekbot,ShopWiki,Speedy,Nutch,MSRBot,TwengaBot,TurnitinBot,discobot,turnitinbot,Discobot"; $subject_user_mail='[IF_(($now_tage,$now_minuten,$mday,$month,$year,$hour,$minute)=&now)][IF_END][IF_(length($month)==1)][$month="0".$month][IF_END][IF_(length($mday)==1)][$mday="0".$mday][IF_END]Auftrag BAUDIENST ONLINEShop [PRINT($year)][PRINT($month)][PRINT($mday)]-[ORDERNR]'; # Betreff der Kundenmail. Alt>> $subject_user_mail="Auftrag BAUDIENST ONLINEShop" $subject_shop_mail='[IF_(($now_tage,$now_minuten,$mday,$month,$year,$hour,$minute)=&now)][IF_END][IF_(length($month)==1)][$month="0".$month][IF_END][IF_(length($mday)==1)][$mday="0".$mday][IF_END]Auftrag BAUDIENST ONLINEShop [PRINT($year)][PRINT($month)][PRINT($mday)]-[ORDERNR]'; # Betreff der Bestellungseingangsmail. Alt>> $subject_shop_mail="Auftrag Baudienst ONLINESHOP"; $dif_porto=1; # Wählen Sie hier aus, ob die Versandkosten fest sind # ($dif_porto=0), oder ob der Kunde selber die # Versandkostenart über eine Combo-Box auswählen kann # (z.B. Deutschland/Europa/Sonstige) # ------- Falls dif_porto=0 ausgewählt --------- $versandk_hoehe=6.90; # Betrag der Versandkosten für dif_porto=0 # => feste Versandkosten $versandk_frei_ab="4500.00"; # Mind. Bestellsumme ab der der Versand kostenlos ist. # => nur für feste Versandkosten (dif_porto=0) # ----------------------------------------------- # ------- Falls dif_porto=1 ausgewählt ---------- @porto_daten=( # Betrag der Versandk. für dif_porto=1 # => Geben Sie in jeder Zeile # => nur gültig wenn in basket_config.txt eine Bedingung nicht erfüllt ist # "Lieferland;0.00;0.00", "(DE) Deutschland;0.00;100000", "(AL) Albanien;0.00;100000", "(AD) Andorra;0.00;100000", "(BE) Belgien;0.00;100000", "(BA) Bosnien Herzegowina;0.00;100000", "(BG) Bulgarien;0.00;100000", "(DK) Dänemark;0.00;100000", "(EE) Estland;0.00;100000", "(FO) Färöer;0.00;100000", "(FI) Finnland;0.00;100000", "(FR) Frankreich;0.00;100000", "(FR) Korsika;0.00;100000", "(GI) Gibraltar;0.00;100000", "(GR) Griechenland;0.00;100000", "(GB) Großbritannien;0.00;100000", "(GB) Nordirland;0.00;100000", "(IE) Irland;0.00;100000", "(IS) Island;0.00;100000", "(IT) Italien;0.00;100000", "(XK) Kosovo;0.00;100000", "(HR) Kroatien;0.00;100000", "(LV) Lettland;0.00;100000", "(LI) Liechtenstein;0.00;100000", "(LT) Litauen;0.00;100000", "(LU) Luxemburg;0.00;100000", "(MT) Malta;0.00;100000", "(MK) Nordmazedonien;0.00;100000", "(MC) Monaco;0.00;100000", "(ME) Montenegro;0.00;100000", "(NL) Niederlande;0.00;100000", "(NO) Norwegen;0.00;100000", "(AT) Österreich;0.00;100000", "(PL) Polen;0.00;100000", "(PT) Portugal;0.00;100000", "(PT) Azoren Madeira;0.00;100000", "(RO) Rumänien;0.00;100000", "(SM) San Marino;0.00;100000", "(SE) Schweden;0.00;100000", "(CH) Schweiz;0.00;100000", "(RS) Serbien;0.00;100000", "(SK) Slowakei;0.00;100000", "(SI) Slowenien;0.00;100000", "(ES) Spanien;0.00;100000", "(ES) Balearen;0.00;100000", "(ES) Kanaren;0.00;100000", "(ES) Ceuta & Melilla;0.00;100000", "(CZ) Tschechien;0.00;100000", "(TR) Türkei;0.00;100000", "(HU) Ungarn;0.00;100000", "(VA) Vatikanstadt;0.00;100000", "(CY) Zypern;0.00;100000", "(Z2) Zone2;0.00;100000", "(Z3) Zone3 EU;0.00;100000", "(Z3nEU) Zone3 non EU;0.00;100000", "(Z4) Zone 4;0.00;100000", "(Z5) Zone 5;0.00;100000", "(Z6) Zone 6;0.00;100000" ); # "NAME DER VERSANDKOSTENART;PREIS;VERSANDKOSTEN FREI AB" # an! # ----------------------------------------------- $min_order_typ=2; # Wählen Sie hier: # 0: Mindestbestellmengen werden ignoriert # 1: Mindestbestellmenge darf nicht unterschritten werden, # sonst Fehlermeldung! # 2: Wenn Mindestbestellmenge unterschritten wird, wird # ein Mindermengen-Zuschlag erhoben. $min_order="30.00"; # Mindestbestellmenge $min_order_zuschlag="10.00"; # Mindermengen-Zuschlag! @currency=( # Währungsumrechnungskurse "Euro=1.00", # => Geben Sie in jeder Zeile "Dollar=0.511292"); # "WÄHRUNG=UMRECHNUNGSKURS" # an! Ausgabe: [PREIS_DM], [PREIS_Euro] etc. @pichttp=( # HTTP-Verzeichnis für Bilder (also URL aus der Sicht des CGI-Verzeichnisses) "https://shop.baudienst.com/bilder/katalog/db/"); # Server-Verzeichnis für Bilder (also Pfad aus der Sicht des CGI-Verzeichnisses) # Alle Bilder werden in der Form ArtNr.gif hochgeladen, bei Art.Nr 3333 => 3333.gif # Falls Sie versch. Bildertypen anlegen möchten (z.B. ein Verz. für leine Bilder, ein anderes für grosses Bilder), geben Sie diese durch Komma getrennt jeweils in doppelten Anführungsstrichen # In den Vorlagen können sie Bilder so einbinden: [PIC1], [PIC2], [PIC3] usw. @picverz=( # => muss an die Variable @pichttp angepasst werden. "../../bilder/katalog/db/"); # das Skript kontrolliert anhand des Server-Verz., ob das Bild Art.Nr existiert und gibt dann das HTML-Verzeichnis in der Ausgabe-HTML aus. @pic_field_name=( # Geben Sie hier das Datenbankfeld an, in dem die Namen "NR", # der Produktgrafiken angegeben sind. Einfachste Lösung: "NR", # Verwenden Sie die Artikel-Nr. "NR" als Name der Grafik "NR", # Die Grafik könnte dann z.B. heissen: 3456.gif "NR", "NR", "NR"); $default_pic="ohnebild.jpg"; # Bild, das geladen wird, falls das Bild ArtNr.gif nicht vorhanden sind $use_default_pic=2; # Wenn ein Artikel-Bild nicht vorhanden ist, soll dann # Default-Pic geladen werden, oder gar kein Bild? # 1: Default-Pic laden! # 2: kein Bild ausgeben! $bestand_verwaltung=0; # 1: Bestand-Verwaltung benutzen # 0: keine Bestand-Verwaltung $fehlermeldung_bei_bestand_von_null=1; # Hier wird angegeben, ob z.B. eine Bestellung von Menge "1" # bei einem Bestand von "0" nicht zugelassen werden soll, # oder trotzdem toleriert werden soll. Letzteres kann z.b. # sinnvoll sein, wenn der Shopinhaber sehr schnell das # Produkt nachbestellen kann! $mengen_im_warenkorb_addieren=0; # Beispiel: # Artikel 3456 ist bereits mit der Menge 1 im Warenkorb # und wird nochmals in den Warenkorb gelegt. # Soll die Menge addiert werden ( = Menge 2) oder soll # die Menge bei 1 bleiben? $admin_passwort="bofair"; # Admin-Passwort! # Das Admin.Menü kann gestartet werden über: # /cgi-bin/hws/his-webshop.pl?admin= $no_variants="BESCHREIBUNG,NAME,PREIS,ANR"; # Geben Sie hier die Felder ein, die generell keine Artikel-Varianten # (werden mit / oder mit * getrennt) enthalten. $gutschein_code_chars="23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; # Falls Sie mit Gutscheinen arbeiten möchten, geben Sie hier # an, welche Zeichen im Gutschein-Code gültig sein sollen $gutschein_code_length=7; # Wieviele Zeichen soll ein Gutschein-Code enthalten? $subject_gutschein_mail="Gutschein"; # Wie soll der Betreff der Gutschein-Mail lauten? @html_convert=( # Geben Sie hier an, welche "Sonderzeichen" in HTML-Entitäten konvertiert "ä=ä", # werden sollen. Die Ausgabe muss dann über NAME_HTML bzw. VARIABLE_HTML "ü=ü", # erfolgen "ö=ö", "Ä=Ä", "Ü=Ü", "Ö=Ö", "ß=ß" ); $use_multiline_csv=0; # Geben Sie hier an, ob in der CSV Datei ein Artikel # (z.B. durch die Beschreibung) mehrere Zeilen umfasst. # Wenn Sie sicher sind, dass ein Artikel immer genau innerhalb # einer Zeile definiert ist, kann die Einstellung auch auf 0 # gestellt werden (Datenbank arbeitet dann deutlich schneller!!!) $shoppl="/cgi-bin/hws/his-webshop.pl"; # URL zum Skript $post_order_mail_to_script_url=""; # Wird hier eine URL zu einem Script angegeben, so wird keine # Bestellmail an den Shopbetreiber geschickt. Stattdessen wird # der Text an das Script geschickt (POST). # Der Inhalt der Mail wird in der Variablen "mailtext" übermittelt # ========================================================================================== # Hier muessen die Felder der Datenbank IN DER KORREKTEN REIHENFOLGE definiert werden. # Reservierte Felder, die exakt so geschrieben werden muessen sind: # NR und PREIS # Alle übrigen Felder aus Ihrer Datenbank koennen frei benannt werden. In den # Templates kann man dann auf die Variablen jeweils mit [VARIABLE] zugreifen. # ========================================================================================== @keyw=( "AGR", "NR", "NUMMER", "GESTRICHEN", "PREIS", "PREISEINHEIT", "VERKAUFSMENGENEINHEIT", "VPME", "GEWICHT", "VERSANDKOSTENFIX", "AKTION", "NAME", "BESTELLUNGSINFO", "BESCHREIBUNG", "AUSWAHL", "OPTTEXT", "OPTION1", "OPTION2", "OPTION3", "OPTION4", "OPTION5", "OPTION6", "OPTION7", "OPT8", "OPTION9", "BILD", "ERSATZ", "OPTIONEN", "OPTION", "ANR", "OPTION10", "OPTION11", "OPTION12", "OPTION13", "OPTION14", "OPTION15", "OPTION16", "OPTION17", "OPTION18", "OPTION19", "OPTION20", "OPTION8" ); # ========================================================================================== # Hier muessen die Felder der Kunden-Datenbank IN DER KORREKTEN REIHENFOLGE definiert werden. # Alle Felder aus Ihrer Datenbank koennen frei benannt werden. In allen # Templates kann man dann auf die Variablen jeweils mit [VARIABLE] zugreifen. # # Sind Sie interessiert am "HIS WebShop Kunden Modul"? Das Kunden-Modul können Sie zur # besseren Kundenbindung für Ihre Stammkunden einsetzen. Optionaler Login in den Shop, # namentliche Begrüssung, bereits vorausgefüllte Bestellformulare etc. # Kosten für das Kunden-Modul: 150,00 DM + MwSt. (Preis vom 24.01.00, ohne Gewähr!) # Kontaktieren Sie uns: his-soft@shoppark.de # ========================================================================================== $use_kunden_db=1; # Geben Sie hier an, ob Sie das Kundenmodul nutzen # möchten! # 0: kein Kundenmodul nutzen # 1: Kundenmodul für Stammkunden nutzen! # (das Kundenmodul muss dazu unbedingt installiert # werden!) @userf= ( "U_PASS", "U_USER", "U_STATUS", "U_UMSATZ", "U_ZUGRIFF", "U_NAME1", "U_NAME2", "U_STRASSE1", "U_STRASSE2", "U_LAND1", "U_LAND2", "U_PLZ1", "U_PLZ2", "U_ORT1", "U_ORT2", "U_BESTELLER", "U_ANREDE", "U_EMAIL", "U_EMAIL2", "U_TELEFON1", "U_TELEFON2", "U_FAX1", "U_FAX2", "U_USTIDNR", "U_ZAHLUNG", "U_KDNR", "U_RK", "U_KUNDENSTATUS1", "U_KUNDENSTATUS2", "U_KUNDENSTATUS3", "U_KUNDENSTATUS4", "U_KUNDENSTATUS5", "U_FIRMA1", "U_FIRMA2", "U_BESTELLER_VORNAME", "U_BESTELLER2", "U_BESTELLER_VORNAME2", "U_TELEFON1PRE", "U_TELEFON1VORWAHL", "U_TELEFON1REST", "U_TELEFON2PRE", "U_TELEFON2VORWAHL", "U_TELEFON2REST", "U_FAX1PRE", "U_FAX1VORWAHL", "U_FAX1REST", "U_FAX2PRE", "U_FAX2VORWAHL", "U_FAX2REST", "U_ANREDE2" ); $user_login_field="U_USER"; $user_pass_field="U_PASS"; # ========================================================================================== # Hier muessen die Felder der Partner-Datenbank IN DER KORREKTEN REIHENFOLGE definiert # werden. Alle Felder koennen frei benannt werden. # # Sind Sie interessiert am "HIS WebShop Partnerprogramm Modul"? Das Partnerprogramm-Modul # können Sie zur Einrichtung eines professionellen Partner-Programms einsetzen. # Kosten für das Partnerprogramm-Modul: 150,00 DM + MwSt. (Preis vom 24.01.00, ohne Gewähr!) # Kontaktieren Sie uns: his-soft@shoppark.de # ========================================================================================== $use_partner_db=0; # Geben Sie hier an, ob Sie das Partnerprogramm-Modul nutzen # möchten! # 0: kein Partnerprogramm-Modul nutzen # 1: Partnerprogramm-Modul nutzen! # (das Partnerprogramm-Modul muss dazu unbedingt installiert # werden!) $partner_provision=5; # Provison in Prozent! @puserf= ( "P_USER", "P_PASS", "P_ANREDE", "P_NAME", "P_EMAIL", "P_STRASSE", "P_PLZ", "P_ORT", "P_LAND", "P_LISTE", "P_ORDERS" ); $partner_login_field="P_USER"; $partner_pass_field="P_PASS"; # ==============================KONFIGURATIONS-TEIL ENDE==================================== # =================================HAUPTPROGRAMM BEGINN===================================== use HTML::Entities; if ($use_kunden_db==1) { # Falls Stamm-Kunden Modul... require "kunde.pl"; # Modul einbinden! } if ($use_partner_db==1) { # Falls Stamm-Kunden Modul... require "partner.pl"; # Modul einbinden! } $fe[0]="Content-type: text/html\n\nFür den Server wurde kein Registrier Key angegeben.\nBitte kontaktieren Sie HIS-Software his-soft\@shoppark.de, um einen gültigen Registrier Key zu erhalten.\nUm die Software zu testen, können Sie den Shop OHNE Registrier Key mit max. 10 Artikeln betreiben. Begrenzen Sie dazu die Artikel Datenbank."; $fe[1]="Content-type: text/html\n\nDer Registrier Key ist nicht für den Server gültig.\nBitte kontaktieren Sie HIS-Software his-soft\@shoppark.de, um einen gültigen Registrier Key zu erhalten.\nUm die Software zu testen, können Sie den Shop OHNE Registrier Key mit max. 10 Artikeln betreiben. Begrenzen Sie dazu die Artikel Datenbank."; $fe[2]="Content-type: text/html\n\nDer Registrier Key ist ungültig.\nBitte kontaktieren Sie HIS-Software his-soft\@shoppark.de, um einen gültigen Registrier Key für den Server zu erhalten.\nUm die Software zu testen, können Sie den Shop OHNE Registrier Key mit max. 10 Artikeln betreiben. Begrenzen Sie dazu die Artikel Datenbank."; $start_tage = 2450902; # Absolute Tage # Vorlagen befinden sich in dem Verzeichnis $tempdirectory und haben bis auf # $template_mail die Endung ".htm" $template_error="temerror"; # Fehler-Vorlage $template_send="temsend"; # "Danke für Ihre Bestellung"-Template $template_basket="tembaske"; # Warenkorb-Template $template_order="temorder"; # Bestellugsseite-Template $template_shop_mail="order.htm"; # Bestellungsmail-Template für Shop-Inhaber $template_user_mail="mail.htm"; # Bestellungsmail-Template für User $template_partner_mail="mpartner.txt"; $articledat=$datadirectory."artalle.csv"; # Artikel-Datenbank $kundetxt=$datadirectory."kunden.txt"; # Stammkunden-Datenbank $partnertxt=$datadirectory."partner.txt"; # Partner-Datenbank $kundedat=$profiledirectory."kunden.dat"; # Kunden-Datenbank $statistikdat=$datadirectory."statistik.txt"; $orderstat=$datadirectory."orderstat.txt"; ($id_article_quantity, # Zusaetzliche Arrayindizes fuer Artikel $id_article_newquantity, $id_article_apreis, $id_article_sum, $id_article_binfo, $id_article_opreis, $id_article_mpreis)=$#keyw+1..$#keyw+7; $max_keyw=$#keyw+5; ($id_global_skript, # Index fuer globale Variablen Array $id_global_userid, $id_global_remotehost, $id_global_versandkosten, $id_global_versandkfreiab, $id_global_sumall, $id_global_sumallv, $id_global_hit_start, $id_global_hit_end, $id_global_hit_max, $id_global_hit_menu, $id_global_hit_forward, $id_global_hit_back, $id_global_artikel_anz, $id_global_content, $id_global_porto_auswahl, $id_global_porto, $id_global_error, $id_global_referer, $id_global_shopemail, $id_global_ordernr, $id_global_min_order, $id_global_min_order_zuschlag, $id_global_query, $id_global_provision, $id_global_bonus_nr, $id_global_bonus_value, $id_global_bonus_pass, $id_global_bonus_email, $id_global_bonus_message, $id_global_happy_hour)=(0..30); $last_id_global=30; ($id_kunde_remotehost, # Index fuer Kunden Array $id_kunde_kundennr, $id_kunde_tage, $id_kunde_minuten, $id_kunde_userdata, $id_kunde_partnerdata, $id_kunde_global)=(0..6); ($id_order_date, $id_order_ordernr, $id_order_sum, $id_order_provision, $id_order_pid, $id_order_status)=(0..5); %multi= ( "MENGE", 1, # Ok "NEUE_MENGE", 1, # Ok "APREIS",1, "OPREIS",1, "MPREIS",1, "SUMME", 1, # Ok "BINFO",1, "SKRIPT",5, # Ok "USER_ID",5, # Ok "HOST",5, # Ok "VERSANDKOSTEN",5, # Ok "VERSANDKOSTEN_FREI_AB",5, # Ok "GESAMTSUMME",5, # Ok "GESAMTSUMME_VERSAND",5, # Ok "HIT_START",5, "HIT_END",5, "HIT_MAX",5, "HIT_MENU",5, "HIT_FORWARD",5, "HIT_BACK",5, "ARTIKEL_ANZ",5, "CONTENT",5, "PORTO_AUSWAHL",5, "PORTO",5, "ERROR_INHALT",5, # Ok "REFERER",5, "SHOPEMAIL",5, "MIN_ORDER",5, "MIN_ORDER_ZUSCHLAG",5, "QUERY",5, "HAPPY_HOUR",5, "PROVISION",5, "BONUS_NR",5, "BONUS_PASS",5, "BONUS_VALUE",5, "BONUS_EMAIL",5, "BONUS_MESSAGE",5, "ORDERNR",5, "ORDERKEY",6, # Ok "ORDERVALUE",6, # Ok "RORDER_DATE",8, "RORDER_SUM",8, "RORDER_ORDERNR",8, "RORDER_PROVISION",8, "RORDER_STATUS",8, "RORDER_PID",8, ); %index= ( "MENGE",$id_article_quantity, "NEUE_MENGE",$id_article_newquantity, "APREIS",$id_article_apreis, "OPREIS",$id_article_opreis, "MPREIS",$id_article_mpreis, "SUMME",$id_article_sum, "BINFO",$id_article_binfo, "SKRIPT",$id_global_skript, "USER_ID",$id_global_userid, "HOST",$id_global_remotehost, "VERSANDKOSTEN",$id_global_versandkosten, "VERSANDKOSTEN_FREI_AB",$id_global_versandkfreiab, "GESAMTSUMME",$id_global_sumall, "GESAMTSUMME_VERSAND",$id_global_sumallv, "HIT_START",$id_global_hit_start, "HIT_END",$id_global_hit_end, "HIT_MAX",$id_global_hit_max, "HIT_MENU",$id_global_hit_menu, "HIT_FORWARD",$id_global_hit_forward, "HIT_BACK",$id_global_hit_back, "ARTIKEL_ANZ",$id_global_artikel_anz, "CONTENT",$id_global_content, "PORTO_AUSWAHL",$id_global_porto_auswahl, "PORTO",$id_global_porto, "ERROR_INHALT",$id_global_error, "REFERER",$id_global_referer, "SHOPEMAIL",$id_global_shopemail, "MIN_ORDER",$id_global_min_order, "MIN_ORDER_ZUSCHLAG",$id_global_min_order_zuschlag, "QUERY",$id_global_query, "HAPPY_HOUR",$id_global_happy_hour, "PROVISION",$id_global_provison, "BONUS_NR",$id_global_bonus_nr, "BONUS_PASS",$id_global_bonus_pass, "BONUS_VALUE",$id_global_bonus_value, "BONUS_EMAIL",$id_global_bonus_email, "BONUS_MESSAGE",$id_global_bonus_message, "ORDERNR",$id_global_ordernr, "ORDERKEY",0, "ORDERVALUE",1, "RORDER_DATE",$id_order_date, "RORDER_SUM",$id_order_sum, "RORDER_ORDERNR",$id_order_ordernr, "RORDER_PROVISION",$id_order_provision, "RORDER_STATUS",$id_order_status, "RORDER_PID",$id_order_pid, ); for ($i=0;$i<=$#pichttp;$i++) { $j=$i+1; $multi{"PIC$j"}=5; $index{"PIC$j"}=$last_id_global+$j; $global[$last_id_global+$j]=$pichttp[$i]; } if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } if (!($buffer)) {$buffer=substr($ENV{'PATH_INFO'},1,length($ENV{'PATH_INFO'}));} if (!($buffer)) {$buffer=@ARGV; } for ($i=0;$i<=$#keyw;$i++) { # Reservierte Keywoerter suchen if ($keyw[$i] eq "NR") {$id_article_id=$i;} # Art. Nr elsif ($keyw[$i] eq "PREIS") {$id_article_costs=$i;} # Preis $multi{$keyw[$i]}=1; # Typ speichern, immer "1" $index{$keyw[$i]}=$i; # Feldindex speichern } for ($i=0;$i<=$#userf;$i++) { # Reservierte Keywoerter suchen $uindex{$userf[$i]}=$i; # Feldindex speichern } for ($i=0;$i<=$#puserf;$i++) { # Reservierte Keywoerter suchen $pindex{$puserf[$i]}=$i; # Feldindex speichern } $ip=$ENV{'REMOTE_ADDR'};if ($ip=~/\:/) {$ip=&ipv6_to_ipv4($ip);$ENV{'REMOTE_ADDR'}=$ip;}$ip=~s/unknown, //g;if ($ip=~/unknown/) {$ip="127.0.0.1";} if ($ENV{'HTTP_X_FORWARDED_FOR'} ne "") {$ip=$ENV{'HTTP_X_FORWARDED_FOR'};} if ($input{"ip"} ne "") {$ip=$input{"ip"};} @ips=split(/\./,$ip); $first=$ips[0]; $second=$ips[1]; $kundedat=$profiledirectory."/$first/$second.dat"; $ENV{"SERVER_NAME"}="www.shop.baudienst.com"; @kunde_dat=&read_data($kundedat); # Einlesen der Kundendaten $#nvpairs=-1; # Paare leeren ($now_tage,$now_minuten,$mday,$month,$year,$hour,$minute)=&now; # Berechnung absoluter Tage und aktueller Minuten if ($ENV{CONTENT_TYPE}=~/multipart\/form-data/i) { ($content,$ufile)=&Parse_Multi; if ($content ne "") { $ufile=&get_file($ufile); } } else { $buffer=&ReadParse($buffer,*input); # Einlesen der Formulareingaben } if ($input{"t"} eq "a_preis") { print "Content-Type: text/html\n\n"; @a=&read_data("./daten/artalle.csv");$c=$input{"c"}; foreach $a (@a) { @d=split(/\;/,$a); if ($d[1]=~/$c/) { $preis=$d[4]; print qq!

$preis

!; } } exit; } if (($buffer=~/\&\&/ || $buffer=~/hcounter/) && $ENV{'REQUEST_METHOD'} eq "GET") { $newurl="https://shop.baudienst.com/"; print "Status: 301 Moved Permanently\n";print "Location: $newurl\n\n";exit; } #print "Content-Type: text/html\n\n"; #print $buffer."\n\n"; $ianz=0; foreach $key (sort(keys %input)) {$ianz++;} $#article_dat=-1; if ($input{"t"} ne "warenkorb_artikel_extern" || $ianz>1) { if ($input{"db"} eq "" || 1==1) { foreach $all_dbs (@all_dbs) { $articledat=$datadirectory.$all_dbs; @import=&read_data($articledat); shift(@import); push(@article_dat,@import); } } else { @dblist=split(/\,/,$input{"db"}); foreach $dblist (@dblist) { $articledat=$datadirectory.$dblist; # Artikel-Datenbank @a=&read_data($articledat); # Artikel holen shift(@a); push(@article_dat,@a); } } } foreach $article_dat (@article_dat) { @d=split(/$trennzeichen/,$article_dat); $adata{$d[$index{"NR"}]}=$article_dat; } if ($input{"email"} ne "" || $input{"angebot_email"} ne "") { if ($input{"email"}=~/mib-hamburg\.de/i) {exit;} if ($input{"angebot_email"}=~/mib-hamburg\.de/i) {exit;} } $global[$id_global_artikel_anz]=$#article_dat+1; $#nvpairs=-1; # Paare leeren ($now_tage,$now_minuten,$mday,$month,$year,$hour,$minute)=&now; # Berechnung absoluter Tage und aktueller Minuten %input=(); @happy=&read_data($datadirectory."happy.txt"); @happy_today=split(/\,/,$happy[$mday]); foreach $happy_today (@happy_today) { if ($happy_today==$hour) { $global[$id_global_happy_hour]=$happy_today; } } # leerer Input if ($ENV{CONTENT_TYPE}=~/multipart\/form-data/i) { ($content,$ufile)=&Parse_Multi; if ($content ne "") { $ufile=&get_file($ufile); } } else { $buffer=&ReadParse($buffer,*input); # Einlesen der Formulareingaben } #print "Content-Type: text/html\n\n"; #print $buffer; if ($input{"token"} ne "" && $input{"PayerID"} ne "" && $input{"send_order"} eq "") { &paypal_checkout; } if ($input{"token"} ne "" && $input{"PayerID"} eq "" && $input{"send_order"} eq "") { &paypal_checkout; # bei Abbruch auch checkout verwenden } $process_id=$$; $input{"PROCESS_ID"}=$process_id; #$input{"t"}="temdd"; #$input{"f2"}="PREIS"; #$input{"c2"}=""; #$input{"f1"}="*NAME"; #$input{"c1"}="epson"; #$input{"f"}="HERSTELLER"; #$input{"c"}=""; #$input{"t"}="temgroup"; foreach $key (sort(keys %input)) { if ($key=~/ZAHLUNG_(.*).x/) { $input{"ZAHLUNGSTYP"}=$1;$buffer.="&ZAHLUNGSTYP=".&url_encode($1); } } if ($input{"TELEFON1REST"} ne "" || $input{"TELEFON1PRE"} ne "" || $input{"TELEFON1VORWAHL"} ne "") { $input{"U_TELEFON1REST"}=$input{"TELEFON1REST"};$input{"U_TELEFON1PRE"}=$input{"TELEFON1PRE"};$input{"U_TELEFON1VORWAHL"}=$input{"TELEFON1VORWAHL"}; $input{"TELEFON1"}=$input{"TELEFON1PRE"}." ".$input{"TELEFON1VORWAHL"}." ".$input{"TELEFON1REST"}; $input{"TELEFON1"}=~s/^(\s+)//g; } if ($input{"FAX1REST"} ne "" || $input{"FAX1PRE"} ne "" || $input{"FAX1VORWAHL"} ne "") { $input{"U_FAX1REST"}=$input{"FAX1REST"};$input{"U_FAX1PRE"}=$input{"FAX1PRE"};$input{"U_FAX1VORWAHL"}=$input{"FAX1VORWAHL"}; $input{"FAX1"}=$input{"FAX1PRE"}." ".$input{"FAX1VORWAHL"}." ".$input{"FAX1REST"}; $input{"FAX1"}=~s/^(\s+)//g; } if ($input{"TELEFON2REST"} ne "" || $input{"TELEFON2PRE"} ne "" || $input{"TELEFON2VORWAHL"} ne "") { $input{"U_TELEFON2REST"}=$input{"TELEFON2REST"};$input{"U_TELEFON2PRE"}=$input{"TELEFON2PRE"};$input{"U_TELEFON2VORWAHL"}=$input{"TELEFON2VORWAHL"}; $input{"TELEFON2"}=$input{"TELEFON2PRE"}." ".$input{"TELEFON2VORWAHL"}." ".$input{"TELEFON2REST"}; $input{"TELEFON2"}=~s/^(\s+)//g; } if ($input{"FAX2REST"} ne "" || $input{"FAX2PRE"} ne "" || $input{"FAX2VORWAHL"} ne "") { $input{"U_FAX2REST"}=$input{"FAX2REST"};$input{"U_FAX2PRE"}=$input{"FAX2PRE"};$input{"U_FAX2VORWAHL"}=$input{"FAX2VORWAHL"}; $input{"FAX2"}=$input{"FAX2PRE"}." ".$input{"FAX2VORWAHL"}." ".$input{"FAX2REST"}; $input{"FAX2"}=~s/^(\s+)//g; } if ($input{"eref"} ne "") { $userid=$input{"userid"};$orderid=$input{"eref"};@h=split(/\-/,$orderid);if ($h[1] ne "") {$orderid=$h[1];} # z.B. 20140317-17603 @l=&read_data("../hws-temp/temporder/${userid}_$orderid.txt"); @basket_dat=&read_data("../hws-temp/temporder/${userid}_$orderid.basket"); @basket=&format_warenkorb; $buffer=$l[0]; $buffer=~s/saferpay_init\=1//g; $buffer=~s/send_order=1//g; $buffer=~s/t=temsend/t=tempayone_failed/g; $buffer=&ReadParse2; } $basket_loaded=0; if ($input{"ref"} ne "") { $userid=$input{"userid"};$orderid=$input{"ref"};@h=split(/\-/,$orderid);if ($h[1] ne "") {$orderid=$h[1];} # z.B. 20140317-17603 @l=&read_data("../hws-temp/temporder/${userid}_$orderid.txt"); @basket_dat=&read_data("../hws-temp/temporder/${userid}_$orderid.basket"); @basket=&format_warenkorb; if (&exist("../hws-temp/temporder/${userid}_$orderid.ok")) {&output_order;exit;} open(f,">../hws-temp/temporder/${userid}_$orderid.ok"); print f "ok"; close(f); $buffer=$l[0]; $buffer=~s/saferpay_init\=1/send_order\=1/g; $buffer=~s/t\=temsaferpay_english/t\=temsend_english/g; $buffer=~s/t\=temsaferpay//g; $buffer=&ReadParse2; $fix_orderid=$orderid; $basket_loaded=1; } if ($input{"DATA"} ne "" && $input{"SIGNATURE"} ne "") { open(f,">>buflog.txt"); print f qq!$mday.$month.$year|$input{"DATA"}|$input{"SIGNATURE"}\n!; close(f); $orderid=$input{"DATA"}; $orderid=~/ORDERID\=\"(.*?)\"/; $orderid=$1; $userid=$1; $orderid=~s/(.*?)\-//g; $userid=~s/\-(.*)//g; $check_amount=$input{"DATA"}; $check_amount=~/AMOUNT\=\"(.*?)\"/; $check_amount=$1; $gateway_success="https://saferpay.com/hosting/VerifyPayConfirm.asp"; $attributes=qq!DATA=$input{"DATA"}&SIGNATURE=$input{"SIGNATURE"}!; $url="$gateway_success?$attributes"; $ok=0; for ($i=1;$i<=3;$i++) { if ($ok==0) { $payverify_url=&get_url($url); $payverify_url=~s/\n//g; if ($payverify_url=~/^OK:/) { $ok=1; } else { open(f,">>saferpay_error.txt"); print f $payverify_url."\n"; close(f); } } } @l=&read_data("../hws-temp/temporder/${userid}_$orderid.txt"); @basket_dat=&read_data("../hws-temp/temporder/${userid}_$orderid.basket"); @basket=&format_warenkorb; $buffer=$l[0]; $buffer=~s/saferpay_init\=1/send_order\=1/g; $buffer=~s/t\=temsaferpay_english/t\=temsend_english/g; $buffer=~s/t\=temsaferpay//g; $buffer=&ReadParse2; if (&exist("../hws-temp/temporder/$orderid.ok")) { # &abbruch("Ihre Bestellung wurde bereits erfolgreich abgeschickt."); } open(f,">../hws-temp/temporder/$orderid.ok"); print f "ja"; close(f); $fix_orderid=$orderid; $basket_loaded=1; } $#basket_dat_new=-1; # leerer Array für neu in den Warenkorb gelegte Artikel # Bereitgestellte Funktionen im Partnerprogramm-Modul if ($input{"pid"} ne "") { $buffer.="&G_pid=".$input{"pid"}; $input{"G_pid"}=&login_puser($input{"pid"}); } # Speichern von globalen Variablen @keyval=&get_input($buffer); foreach $keyval (@keyval) { @field=split(/\;/,$keyval); # Felder ermitteln if ($field[0]=~/^G_(.*)/) { $global{$field[0]}=$field[1]; } } if ($CGI{"update"} ne "") { &pic_update($CGI{"update"},$content,$ufile,$CGI{"pass"});exit; } $REMOTE_HOST=$ENV{'REMOTE_ADDR'}; # Remote Host ermitteln if ($ENV{'HTTP_X_FORWARDED_FOR'} ne "") {$REMOTE_HOST=$ENV{'HTTP_X_FORWARDED_FOR'};} if ($ENV{'HTTP_REFERER'}=~/\.shtml/ || ($ENV{'HTTP_REFERER'}=~/t=s1/ && $ENV{'HTTP_REFERER'}!~/start=/)) {$e=$ENV{'HTTP_REFERER'};$e=~s/=/´/g;$input{"G_REFERER"}=$e;$global{"G_REFERER"}=$e;} $global[$id_global_remotehost]=$REMOTE_HOST.'#'.$ENV{'HTTP_VIA'}.'#'.$ENV{'REMOTE_HOST'}.'#'.$ENV{'HTTP_USER_AGENT'}; # Zur Identifik. Remote Host und HTTP Via (proxys) verwenden $global[$id_global_remotehost]=~s/\;/\,/g; $global[$id_global_userid]=int(&get_user_id); # User-Id $global[$id_global_versandkosten]=$versandk_hoehe; # Versandkosten $global[$id_global_versandkfreiab]=$versandk_frei_ab; # Freibetrag fuer Versandkosten $global[$id_global_skript]=$shoppl; # Name des Skripts $global[$id_global_referer]=$ENV{'HTTP_REFERER'}; $global[$id_global_shopemail]=$email; $global[$id_global_min_order]=$min_order; $global[$id_global_min_order_zuschlag]=$min_order_zuschlag; $global[$id_global_query]=$buffer; $basketdat=&get_basketdat($global[$id_global_userid]); # Name des Warenkorbs des Kunden ermitteln if ($basket_loaded==0) { @basket_dat=&read_data($basketdat); # Warenkorb des Kunden einlesen } $#basket_dat_new=-1; # Leeren Warenkorb für "neu in den Warenkorb gelegte Artikel" if ($dif_porto!=0) { # Falls Versandk. vom Kunden auswählbar... $portodat=&get_portodat($global[$id_global_userid]); # Name des Files ermitteln, in dem die Versandk. gespeichert sind @porto=&read_data($portodat); # Daten einlesen $porto=$porto[0]; # Versandk.art = 1. Zeile } ########## ## Gutschein if ($input{"AddBonus"}==1) { if ($input{"EmailFromBonus"}!~/^([a-zA-Z0-9\-\.\_]+)@([a-zA-Z0-9\-\.\_]+\.[a-zA-Z]+)$/) { &abbruch("Die E-Mail des Gutschein Ausstellers ist in einer ungültigen Form angegeben."); } if ($input{"EmailToBonus"}!~/^([a-zA-Z0-9\-\.\_]+)@([a-zA-Z0-9\-\.\_]+\.[a-zA-Z]+)$/) { &abbruch("Die E-Mail des Gutschein Empfängers ist in einer ungültigen Form angegeben."); } $input{"EmailTextBonus"}=~ s/\cM\n/
/g; $gutschein_nr=&create_gutschein; $gutschein_wert=$input{"SumBonus"}; $gutschein_pass=""; $gutschein_bezahlt=0; $gutschein_ausgeloest=0; $gutschein_bestellt=0; $gutschein_absender=$input{"EmailFromBonus"}; $gutschein_empfaenger=$input{"EmailToBonus"}; $gutschein_text=$input{"EmailTextBonus"}; $gutschein_aktiontyp=$input{"gutschein_aktiontyp"}; $gutschein_aktionvon=$input{"gutschein_aktionvon"}; $gutschein_aktionbis=$input{"gutschein_aktionbis"}; &add_gutschein_to_db($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text); push(@keyval,join(';',"add_NR","G_".$gutschein_nr)); push(@keyval,join(';',"add_MENGE",1)); push(@keyval,join(';',"add_PREIS",$input{"SumBonus"})); } if ($input{"UseBonusNr"} ne "") { $input{"UseBonusNr"}=~y/a-z/A-Z/; $gutschein_nr=$input{"UseBonusNr"}; $check_process_order=1; &process_order;$process_order_ok=0;$check_process_order=0; ($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit)=&get_gutschein_pass($gutschein_nr); if ($gutschein_gueltigkeit ne "") { ($gtag,$gmonat,$gjahr)=split(/\./,$gutschein_gueltigkeit); if ($gjahr<100) {$gjahr+=2000;} $gtage=&jday($gmonat,$gtag,$gjahr)-$start_tage; if ($gtage<$now_tage) {&abbruch("Der Gutschein ist nur bis zum $gutschein_gueltigkeit gültig.");} } if ($gutschein_nr eq "-1") {&abbruch("Diese Gutschein Nr. existiert nicht.")} if ($gutschein_bezahlt==0) {&abbruch("Der Gutschein $gutschein_nr ist noch nicht bezahlt.")} if ($gutschein_ausgeloest>0) {&abbruch("Der Gutschein $gutschein_nr ist bereits ausgelöst.")} @basket=&format_warenkorb(); if ($global[$id_global_sumall]<$gutschein_ordermin) { &abbruch("Der Gutschein $gutschein_nr erfordert einen Mindestbestellwert von ".&format_sum($gutschein_ordermin)." EUR (im Warenkorb sind aktuell: ".&format_sum($global[$id_global_sumall])." EUR) . Bitte erhöhen Sie den Bestellwert, oder entfernen Sie den Gutschein aus dem Warenkorb."); } push(@keyval,join(';',"add_NAME","Gutschein ".$input{"UseBonusNr"}." einlösen")); push(@keyval,join(';',"add_NR","GE_".$input{"UseBonusNr"})); push(@keyval,join(';',"add_MENGE",1)); push(@keyval,join(';',"add_PREIS",-$gutschein_wert)); } if ( ($input{"pass"} eq "" || $input{"send_orderreminder"} ne "") && $input{"admin"} eq "" && $input{"geraete_upload"} eq "") { if (length($mday)==1) {$mday="0".$mday;} if (length($month)==1) {$month="0".$month;} ($sec,$xmin,$xhour,$xmday,$xmonth,$xyear,$xwday,$xyday,$xisdst)=localtime(time);$banz=$#basket_dat+1;$bpreis=0; foreach $basket_dat (@basket_dat) { @d=split(/\;/,$basket_dat); $bpreis+=$d[$id_article_costs]*$d[$id_article_quantity]; } open(f,">>../hws-temp/logall/$year-$month-$mday.txt"); print f "$mday.$month.$year $hour:$minute:$sec;$global[$id_global_userid];$buffer;$global[$id_global_remotehost];$banz;$bpreis;".$ENV{"REQUEST_URI"}."\n"; close(f); } if ($input{"pic_show"}==1) {&pic_show_or_kill(0);exit} if ($input{"pic_kill"}==1) {&pic_show_or_kill(1);exit} if ($input{"empty"} ne "") {unlink "$basketdat";$#basket_dat=-1} if ($input{"required"} ne "") { &kontrolliere_required; # benötigte Felder kontrollieren } if (defined($input{"u_login"})) { # Falls Login.... &kunde_login($input{"u_login"},$input{"u_pass"}); # Funktion kunde_login aufrufen! } if (defined($input{"p_login"})) { # Falls Login.... &partner_login($input{"p_login"},$input{"p_pass"}); # Funktion kunde_login aufrufen! } @glob=&read_data($globaltxt); foreach $glob (@glob) { @d=split(/\;/,$glob); $input{"G_$d[0]"}=$d[1]; } if ($year>=2021) {$input{"G_MWST"}=19;$global{"G_MWST"}=19;} # Bereitgestellte Funktionen im Kunden-Modul if ($input{"setkundencookie"}>0) { &set_kunden_cookie($input{"setkundencookie"}); } if ($input{"send_pw_login"} ne "" || $input{"send_pw_email"} ne "") {&send_pw($input{"send_pw_login"},$input{"send_pw_email"});} if ($input{"deletekundencookie"}==1) {&delete_kunden_cookie;} if ($input{"readkundencookie"}==1) {&read_kunden_cookie;} if ($input{"kunde_admin"} ne "" && $input{"pass"} eq $admin_passwort) {&kunde_admin;} if ($input{"kunde_edit"} ne "" && $input{"pass"} eq $admin_passwort) {&kunde_edit($input{"kunde_edit"})} if ($input{"kunde_new"} ne "" && $input{"pass"} eq $admin_passwort) {&kunde_new;} if ($input{"adduser"}==1) { # Anmeldung eines neuen Kunden &adduser; } if ($input{"deleteuser"}==1) { # Kunde löschen &deleteuser; } if ($input{"edituser"}==1) { # Kunde editieren &edituser; } if ($input{"logout"}==1) { # Kunde Logout &logout; } if ($input{"adduser_partner"}==1) {&adduser_partner;} if ($input{"deleteuser_partner"}==1) {&deleteuser_partner;} if ($input{"edituser_partner"}==1) {&edituser_partner;} if ($input{"logout_partner"}==1) {&logout_partner;} srand(time); if (int(rand(1000))==1) { opendir (VERZ, "../hws-temp/logall/"); @datei= grep (!/^\.\.?$/, readdir VERZ); closedir VERZ; foreach $datei (@datei) { if ($datei!~/.txt/) {next;} $age=-M "../hws-temp/logall/".$datei; if ($age>30) { unlink "../hws-temp/logall/".$datei; } } opendir (VERZ, "../hws-temp/temporder/"); @datei= grep (!/^\.\.?$/, readdir VERZ); closedir VERZ; foreach $datei (@datei) { if ($datei!~/.dat/ && $datei!~/.txt/ && $datei!~/.ok/ && $datei!~/.basket/) {next;} $age=-M "../hws-temp/temporder/".$datei; if ($age>30*3) { unlink "../hws-temp/temporder/".$datei; } } opendir (VERZ, "$profiledirectory"); @datei= grep (!/^\.\.?$/, readdir VERZ); closedir VERZ; foreach $datei (@datei) { if ($datei!~/.dat/ && $datei!~/.txt/) {next;} $age=-M $profiledirectory.$datei; if ($age>0.5) { unlink $profiledirectory.$datei; } } for ($i=0;$i<=255;$i++) { opendir (VERZ, "$profiledirectory".$i."/"); @datei= grep (!/^\.\.?$/, readdir VERZ); closedir VERZ; foreach $datei (@datei) { if ($datei!~/.dat/ && $datei!~/.txt/) {next;} $age=-M $profiledirectory.$i."/".$datei; if ($age>1) { unlink $profiledirectory.$i."/".$datei; } } } } if ($input{"update"} ne "") {&update($input{"update"},$input{"pass"})} if ($input{"admindelete"} ne "") {&admindelete($input{"pass"});} if ($input{"add_to_db"} ne "") {&add_to_db($input{"add_to_db"})} if ($input{"admin"} eq $admin_passwort && $admin_passwort ne "") {&admin;} if ($input{"show_prov"} ne "") { $code=qq!

Partner-Bestellungen in $input{"month"}/$input{"year"}

!; $code.=""; $code.="[REPEAT_RORDER]"; $code.=""; $code.="[REPEAT_RORDER_END]"; $code.="
DatumNrStatusSummeProvis.BeschreibungPID
[RORDER_DATE][IF_('[RORDER_ORDERNR]'>0)][RORDER_ORDERNR][IF_END][RORDER_STATUS][RORDER_SUM][PRINTF([RORDER_SUM]*[RORDER_PROVISION]/100)][IF_('[RORDER_ORDERNR]' eq '-')]Gutschrift[IF_END][IF_('[RORDER_ORDERNR]' ne '-')][RORDER_ORDERNR][IF_END][RORDER_PID]

"; if ($input{"show_prov_pid"} eq "ALL") { $all_partner="ALL"; } else { $all_partner=$input{"show_prov_pid"}; } print "Content-type: text/html\n\n"; print &parse_line($code); exit; } if ($input{"pay_partner"} ne "") { if ($input{"pass"} ne $admin_passwort) {&abbruch("Falsches Passwort");} &pay_partner($input{"pay_partner"},$input{"sum_pay_partner"}); } if ($input{"correct_prov"} ne "") { if ($input{"pass"} ne $admin_passwort) {&abbruch("Falsches Passwort");} &pay_partner($input{"correct_prov"},&format_sum($input{"minus_prov"}*$partner_provision/100),$input{"reason_prov"}); } if ($input{"status_ordernr"} ne "") { if ($input{"pass"} ne $admin_passwort) {&abbruch("Falsches Passwort");} &set_status($input{"status_ordernr"},$input{"new_status"}); } if ($input{"merke"} ne "" || $input{"merke_delete"} ne "") {&merke($input{"merke"},$input{"merke_delete"});} if ($input{"ChangeBonusStatNr"} ne "") { &change_gutschein_status($input{"pass"},$input{"ChangeBonusStatNr"},$input{"BonusBezahlt"},$input{"BonusEingeloest"}); } if ($input{"show_gutschein_text"} ne "") {&show_gutschein_text($input{"show_gutschein_text"});} if ($input{"gutschein_verwaltung"} eq $admin_passwort) { &gutschein_verwaltung($input{"gutschein_nr"},$input{"gutschein_bezahlt"},$input{"gutschein_ausgeloest"},$input{"create_promo_gutschein"},$input{"gutschein_wert"},$input{"gutschein_ordermin"},$input{"gutschein_ausgeloest"},$input{"gutschein_gueltigkeit"}); } if ($input{"mailangebot"} ne "") {$input{"t"}="mailangebot";} # PAYPAL CODE if ( $input{"t"}=~/temsaferpay/i) { &process_order; &paypal_redirect; } if ( ($input{"Paypal"} ne "" || $input{"ZAHLUNGSTYP"}=~/Paypal/i) && $input{"token"} eq "" && $input{"send_order"} ne "" && 1==1) { &process_order; &paypal_redirect; } if ($input{"token"} ne "" && $input{"PayerID"} ne "" && $input{"send_order"} ne "") { &process_order; &paypal_send_order; } if ($input{"spid"} ne "") { @oldbuf=&read_data("../hws-temp/temporder/$global[$id_global_userid]_".$input{"spid"}.".txt"); $buffer=$oldbuf[0]; $buffer=~s/saferpay_init\=1//g; $buffer=~s/send_order\=1//g; $buffer=~s/ZAHLUNGSTYP/xxx/g; $buffer=&ReadParse2; $input{"t"}="temsaferpay_failed"; } if ( ($input{"ZAHLUNGSTYP"}=~/Kreditkarte/ || $input{"ZAHLUNGSTYP"}=~/Online-Überweisung/ || $input{"ZAHLUNGSTYP"}=~/Giropay/ || $input{"ZAHLUNGSTYP"}=~/Sofort/ || $input{"ZAHLUNG_Online-Überweisung.x"} ne "") && $input{"DATA"} eq "" && $input{"order_neu"}==1 && $input{"ref"} eq "" && $input{"eref"} eq "") { &process_order; &paypal_redirect;exit; $input{"saferpay_init"}=1;$input{"send_order"}="";$input{"t"}="temsaferpay"; if ($input{"ZAHLUNGSTYP"}=~/Kreditkarte/ && $input{"ZAHLUNGSTYP"}!~/Maestro/) {$input{"t"}="tempayone_kk";} if ($input{"ZAHLUNGSTYP"}=~/Sofort/) {$input{"t"}="tempayone_su";} if ($input{"ZAHLUNGSTYP"}=~/Online-Überweisung/) {$input{"t"}="tempayone_gp";} if ($input{"ZAHLUNGSTYP"} eq "PayPal") {$input{"t"}="tempayone_pp";} if ($input{"FIRMA1"}=~/Mustermann/i || $input{"NAME1"}=~/Mustermann/i) { $input{"t"}="ztempayone_kk"; } } if ($input{"saferpay_init"} ne "" && $input{"DATA"} eq "") { &process_order; $gateway="https://saferpay.com/hosting/CreatePayInit.asp"; $kunde_email=$input{"email"}; # E-Mail auf korrekte Form testen $kunde_email=~s/^(\s+)//g;$kunde_email=~s/(\s+)$//g; if ($kunde_email!~/^([a-zA-Z0-9\-\.\_]+)@([a-zA-Z0-9\-\.\_]+\.[a-zA-Z]+)$/) { if ($kunde_email ne "") { # Falls keine leere Mail &abbruch(qq!Die E-Mail wurde in einer falschen Form oder unvollständig angegeben. Bitte kontrollieren Sie Ihren Eintrag im Feld E-Mail. Wenn Sie keine E-Mail haben, lassen Sie das Feld bitte komplett leer!); } } @basket=&format_warenkorb; if ($global[$id_global_sumall]==0) { &abbruch("Es befinden sich keine Artikel im Warenkorb. Ggf. haben Sie die Bestellung bereits abgeschickt. Bitte kontrollieren Sie, ob Sie per Mail eine Bestätigung erhalten haben."); } if (length($input{"Gkarte_text"})>160) { &abbruch("Die Geschenkkarte darf maximal 160 Zeichen enthalten. Sie haben aber ".length($input{"Gkarte_text"})." Zeichen eingegeben."); } if (length($month)==1) {$month="0".$month;} if (length($mday)==1) {$mday="0".$mday;} @o=&read_data("$datadirectory"."order.dat"); $o[0]++; $global[$id_global_ordernr]=$o[0]; open(f,">$datadirectory"."order.dat"); print f "$o[0]"; close(f); if (length($mday)==1) {$mday="0".$mday;} if (length($month)==1) {$month="0".$month;} $input{"refnr"}="$year$month$mday-".$global[$id_global_ordernr]; $line=join("\n",&read_data("$tempdirectory$template_shop_mail")); $line=&parse_line($line); $kunde_mail=$input{"email"};$subject_shop_mail='Nachricht: Weiterleitung zu Payone [IF_(($now_tage,$now_minuten,$mday,$month,$year,$hour,$minute)=&now)][IF_END][IF_(length($month)==1)][$month="0".$month][IF_END][IF_(length($mday)==1)][$mday="0".$mday][IF_END][PRINT($year)][PRINT($month)][PRINT($mday)]-[ORDERNR] '.$input{"BESTELLER_VORNAME"}." ".$input{"BESTELLER"}; $subject_shop_mail=&parse_line($subject_shop_mail); # open (MAIL, "|$mailprog -t") || &abbruch("Fehler beim Versenden der Mails über Sendmail"); # print MAIL qq!To: $email\n!; # print MAIL qq!From: $kunde_email\n!; # print MAIL qq!Subject: $subject_shop_mail\n!; ## print MAIL qq!Content-Type: text/html\n\n!; # print MAIL $line."\n"; # close (MAIL); open(f,">../hws-temp/temporder/$global[$id_global_userid]_$global[$id_global_ordernr].txt"); print f $buffer; close(f); $accountid=$saferpay_accountid; $orderid="$global[$id_global_userid]-$year$month$mday-$global[$id_global_ordernr]"; open(f,">../hws-temp/temporder/$global[$id_global_userid]_$global[$id_global_ordernr].basket"); foreach $basket_dat (@basket_dat){ print f "$basket_dat\n"; } close(f); $amount=$HIS_SCRIPTendsumme_kreditkarte*100; if ($input{"ZAHLUNGSTYP"}=~/Visa/i) { $amount=$HIS_SCRIPTendsumme_visa*100;} if ($input{"ZAHLUNGSTYP"}=~/Mastercard/i) { $amount=$HIS_SCRIPTendsumme_mastercard*100;} if ($input{"ZAHLUNGSTYP"}=~/berweisung/i) { $amount=$HIS_SCRIPTendsumme_ou*100;} if ($input{"ZAHLUNGSTYP"}=~/maestro/i) { $amount=$HIS_SCRIPTendsumme_maestro*100;} $currency="EUR"; $description="Bestellung www.shop.baudienst.com - ".$input{"TELEFON1"}." - ".$input{"NAME1"}." - ".$input{"email"}; $successlink=$saferpay_ok; $faillink=$saferpay_failed."&spid=".$global[$id_global_ordernr]; $backlink=$saferpay_failed."&spid=".$global[$id_global_ordernr]; $faillink="https://shop.baudienst.com/cgi-bin/hws/his-webshop.pl?spid=".$global[$id_global_ordernr]; $backlink="https://shop.baudienst.com/cgi-bin/hws/his-webshop.pl?spid=".$global[$id_global_ordernr]; $attributes="ORDERID=$orderid&ACCOUNTID=$accountid&AMOUNT=$amount&CURRENCY=$currency&DESCRIPTION=".&url_encode(encode_entities($description))."&SUCCESSLINK=$successlink&FAILLINK=$faillink&BACKLINK=$backlink&NOTIFYADDRESS=$saferpay_email"; if ($input{"t"} eq "temsaferpay_english") {$attributes.="&LANGID=en";} $url="$gateway?$attributes"; # $payinit_url=&get_url($url); $payinit_url=~s/\n//g; $input{"SAFERPAY_URL"}=$payinit_url; } if ($input{"show_session"} ne "" && $input{"pass"} eq $admin_passwort) {&show_session($input{"show_session"});} if ($input{"kaufabbruch"} ne "" && $input{"pass"} eq $admin_passwort) {&kaufabbruch($input{"kaufabbruch"});} if ($input{"send_kaufabbruch"} ne "") {&send_kaufabbruch;} if ($input{"send_order"}) { # Falls Aktion "Mail verschicken" &process_order; &send_mail; # Mails versenden &output_order; # Nachricht ausgeben exit; } elsif ($input{"order1"} ne "" || $input{"order1.x"} ne "") { # Falls Aktion "Bestellseite" &special_request("","","temorder1"); # Bestellungsseite ausgeben } elsif ($input{"order"} ne "" || $input{"order.x"} ne "") { # Falls Aktion "Bestellseite" &special_request("","",$template_order); # Bestellungsseite ausgeben } else { if ($cdmodul_ist_aktiv==0) { &special_request($input{"f"},$input{"c"},$input{"t"},$input{"start"},$input{"dif"},$input{"aliste"}); } else { 1; } } sub show_session { local($sid)=@_; use Encode; if (length($sid)==6) { # Bestellnummer $snext=0; open(f,$datadirectory."orderlog.txt"); while () { $s=$_; if ($snext==1) { $snext=0; $datum=$s;$datum=~s/Datum;//g;@help=split(/ /,$datum);($mday,$month,$year)=split(/\./,$help[0]); } if ($snext==2) { $snext=1; $sid=$s;$sid=~s/User\-ID;//g;$sid=int($sid); } if ($s eq "Bestellnummer;$sid\n") {$snext=2;} } } else { # tag davor kontrollieren } if (length($mday)==1) {$mday="0".$mday;} if (length($month)==1) {$month="0".$month;} print "Content-Type: text/html\n\n"; print ""; $sok=0;$isfirst=0; for ($j=1;$j<=7;$j++) { if ($sok==1) {next;} if ($j>=2) { $help=$j-1; ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst)=localtime(time-60*60*24*$help); $month++;$year+=1900; if (length($month)==1) {$month="0".$month;} if (length($mday)==1) {$mday="0".$mday;} } @s=&read_data("../hws-temp/logall/$year-$month-$mday.txt"); foreach $s (@s) { @d=split(/\;/,$s); if ($d[1]==$sid) { if ($isfirst==0) {$isfirst=1; print "$mday.$month.$year
"; print ""; } ($dat,$zeit)=split(/ /,$d[0]);$brow=$d[3];$sok=1;$d[6]=~s/\&userid=(\d+)//g; $d[2] =~ tr/+/ /; $d[2] =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $d[2]=decode_utf8($d[2]); print qq!\n!; } } } print "
$zeit($d[4])$d[2]$d[6]

"; print "Browser: $brow

"; exit; } sub send_kaufabbruch { if (length($month)==1) {$month="0".$month;} open(f,"../hws-temp/logall/$year-$month-$mday.txt"); @data=; close(f);chop(@data); $myquery=""; foreach $data (@data){ @d=split(/\;/,$data); $session=$d[1]; $query=$d[2]; $anz=$d[4]; if ($session==$global[$id_global_userid] && $query=~/FIRMA1/) {$myquery=$query;} } if ($myquery ne "") { $buffer=$myquery; $buffer=&ReadParse2; $template_shop_mail="mailangebot.htm"; @basket=&format_warenkorb; $line=join("\n",&read_data("$tempdirectory$template_shop_mail")); $line=&parse_line($line); # $kunde_email='abc@shoppark.de'; $email='abc@shoppark.de'; $kunde_email=$input{"email"};$subject_shop_mail='Nachricht: Kaufabbruch [IF_(($now_tage,$now_minuten,$mday,$month,$year,$hour,$minute)=&now)][IF_END][IF_(length($month)==1)][$month="0".$month][IF_END][IF_(length($mday)==1)][$mday="0".$mday][IF_END][PRINT($year)][PRINT($month)][PRINT($mday)]-[ORDERNR] '.$input{"BESTELLER_VORNAME"}." ".$input{"BESTELLER"}; $subject_shop_mail=&parse_line($subject_shop_mail); $subject_shop_mail="Angebot BAUDIENST ONLINESHop - Kaufabbruch"; open (MAIL, "|$mailprog -t") || &abbruch("Fehler beim Versenden der Mails über Sendmail"); print MAIL qq!To: $kunde_email\n!; print MAIL qq!Bcc: $email\n!; print MAIL qq!From: $email\n!; print MAIL qq!Subject: $subject_shop_mail\n!; print MAIL qq!Content-Type: text/html\n\n!; print MAIL $line."\n"; close (MAIL); } print "Content-Type: text/html\n\n"; print "OK";exit; } sub kaufabbruch { $kdate=$input{"kdate"}; if ($kdate ne "") {($mday,$month,$year)=split(/\./,$kdate);} if (length($mday)==1) {$mday="0".$mday;} if (length($month)==1) {$month="0".$month;} open(f,"../hws-temp/logall/$year-$month-$mday.txt"); @data=; close(f);chop(@data); foreach $data (@data){ @d=split(/\;/,$data); $session=$d[1]; $query=$d[2]; $anz=$d[4]; if ($anz>0 && $query=~/FIRMA1/) {$wk{$session}=1;$wktime{$session}=$d[0];} if ($query=~/temsend/) {$wk{$session}=0;} } print "Content-Type: text/html\n\n"; print ""; print "$mday.$month.$year
"; foreach $key (sort(keys %wk)) { if ($wk{$key} eq "1") { print qq!$key - $wktime{$key}
\n!; } } print qq!

!; print qq!!; print qq!!; print qq! !; print qq!!; print ""; exit; } # **************************************************************** # Paypal Step 1 # *************************************************************** sub paypal_redirect { use Business::PayPal::NVP; use Encode; $pp_server="https://paypal.com/"; if ($pp_sandbox==1) {$pp_server="https://sandbox.paypal.com/";} $pp_url="https://api-3t.paypal.com/nvp"; if ($pp_sandbox==1) { $pp_url="https://api-3t.sandbox.paypal.com/nvp"} open(f,">$paypal_directory/$global[$id_global_userid].var"); foreach $keyval (@keyval) { print f "$keyval\n"; } close(f); @basket=&format_warenkorb; @o=&read_data("$datadirectory"."order.dat"); $o[0]++;$global[$id_global_ordernr]=$o[0]; if (length($month)==1) {$month="0".$month;} if (length($mday)==1) {$mday="0".$mday;} $help="$year$month$mday-$global[$id_global_ordernr]"; $kunde_email=$input{$shop_email_input}; # E-Mail auf korrekte Form testen $kunde_email=~s/^(\s+)//g;$kunde_email=~s/(\s+)$//g; if ($kunde_email!~/^([a-zA-Z0-9\-\.\_]+)@([a-zA-Z0-9\-\.\_]+\.[a-zA-Z]+)$/) { if ($kunde_email ne "") { # Falls keine leere Mail &abbruch(qq!Die E-Mail wurde in einer falschen Form oder unvollständig angegeben. Bitte kontrollieren Sie Ihren Eintrag im Feld E-Mail. Wenn Sie keine E-Mail haben oder diese Meldung weiterhin erscheint, lassen Sie das Feld bitte komplett leer!); } } $OrderTotal=$global[$id_global_sumallv]; if ($global[$id_global_sumall]==0) {&abbruch("Es befinden sich keine Artikel im Warenkorb.");} $BuyerEmail=$kunde_email; $InvoiceID=$global[$id_global_userid]."_".$help; $CancelURL=$paypal_cancel_return."&userid=".$global[$id_global_userid]; $ReturnURL=$paypal_notify_url."&userid=".$global[$id_global_userid]; # Authentifizierungsdaten an API-Modul übergeben my $nvp = new Business::PayPal::NVP( branch => 'live', live => { user => $pp_username, pwd => $pp_password, sig => $pp_signature, url => $pp_url } ); $CancelURL=&parse_line($CancelURL); $ReturnURL=&parse_line($ReturnURL); $itemamt=$OrderTotal-$global[$id_global_versandkosten]; $data{"DESC"}=&parse_line($paypal_item); $data{"CURRENCYCODE"}='EUR'; $data{"CUSTOM"}=&parse_line($paypal_item); $data{"INVNUM"}=$InvoiceID; $data{"PAYMENTACTION"}='Sale'; $data{"LOCALCODE"}='DE'; $data{"NOSHIPPING"}='2'; $data{"EMAIL"}=$input{"G_EMAIL"}; $data{"RETURNURL"}=$ReturnURL; $data{"CANCELURL"}=$CancelURL; $countrycode="DE"; if ($input{$shop_land_input} eq "Belgien") {$countrycode="BE";} if ($shop_land_input eq "Bulgarien") {$countrycode="BG";} if ($shop_land_input eq "Dänemark") {$countrycode="DK";} if ($shop_land_input eq "Estland") {$countrycode="EE";} if ($shop_land_input eq "Finnland") {$countrycode="FI";} if ($shop_land_input eq "Frankreich") {$countrycode="FR";} if ($shop_land_input eq "Griechenland") {$countrycode="GR";} if ($shop_land_input eq "Italien") {$countrycode="IT";} if ($shop_land_input eq "Lettland") {$countrycode="LV";} if ($shop_land_input eq "Litauen") {$countrycode="LT";} if ($shop_land_input eq "Luxemburg") {$countrycode="LU";} if ($shop_land_input eq "Malta") {$countrycode="MT";} if ($shop_land_input eq "Niederlande") {$countrycode="NL";} if ($shop_land_input eq "Norwegen") {$countrycode="NO";} if ($shop_land_input eq "Österreich") {$countrycode="AT";} if ($shop_land_input eq "Polen") {$countrycode="PO";} if ($shop_land_input eq "Portugal") {$countrycode="PT";} if ($shop_land_input eq "Rumänien") {$countrycode="RO";} if ($shop_land_input eq "Schweden") {$countrycode="SW";} if ($shop_land_input eq "Schweiz") {$countrycode="CH";} if ($shop_land_input eq "Slowakei") {$countrycode="SK";} if ($shop_land_input eq "Slowenien") {$countrycode="SI";} if ($shop_land_input eq "Spanien") {$countrycode="ES";} if ($shop_land_input eq "Tschechien") {$countrycode="CZ";} if ($shop_land_input eq "Ungarn") {$countrycode="HU";} if ($shop_land_input eq "Vereinigtes Königreich (UK)") {$countrycode="GB";} if ($shop_land_input eq "Zypern") {$countrycode="CY";} $tempname=$input{$shop_nachname_input}; if ($input{$shop_vorname_input} ne "") {$tempname=$input{$shop_vorname_input}." ".$tempname;} $data{"PAYMENTREQUEST_0_SHIPTONAME"}=encode("utf8",$tempname); $data{"PAYMENTREQUEST_0_SHIPTOSTREET"}=encode("utf8",$input{$shop_strasse_input}); $data{"PAYMENTREQUEST_0_SHIPTOSTREET2"}=""; $data{"PAYMENTREQUEST_0_SHIPTOCITY"}=encode("utf8",$input{$shop_ort_input}); $data{"PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE"}=$countrycode; $data{"PAYMENTREQUEST_0_SHIPTOZIP"}=$input{$shop_plz_input}; $data{"PAYMENTREQUEST_0_EMAIL"}=$input{$shop_email_input}; $data{"PAYMENTREQUEST_0_SHIPTOPHONENUM"}=encode("utf8",$input{$shop_tel_input}); if ($input{$shop_lieferabweichend_field} eq $shop_lieferabweichend_value) { $tempname=$input{$shop_leifernachname_input}; if ($input{$shop_liefervorname_input} ne "") {$tempname=$input{$shop_liefervorname_input}." ".$tempname;} $data{"PAYMENTREQUEST_0_SHIPTONAME"}=encode("utf8",$tempname); $data{"PAYMENTREQUEST_0_SHIPTOSTREET"}=encode("utf8",$input{$shop_lieferstrasse_input}); $data{"PAYMENTREQUEST_0_SHIPTOCITY"}=encode("utf8",$input{$shop_lieferort_input}); $data{"PAYMENTREQUEST_0_SHIPTOZIP"}=$input{$shop_lieferplz_input}; } $pmwst=&format_sum(($global[$id_global_sumallv]+$HIS_SCRIPTversandkosten_grundpauschale+$HIS_SCRIPTzoll_geb+$HIS_SCRITPeur1_geb+$HIS_SCRIPTpaypal_geb)/100*$HIS_SCRIPTmwst); $data{"PAYMENTREQUEST_0_ITEMAMT"}=$itemamt+$HIS_SCRIPTversandkosten_grundpauschale+$HIS_SCRIPTzoll_geb+$HIS_SCRIPTeur1_geb+$HIS_SCRIPTpaypal_geb+$pmwst; $data{"PAYMENTREQUEST_0_AMT"}=$OrderTotal+$HIS_SCRIPTversandkosten_grundpauschale+$HIS_SCRIPTzoll_geb+$HIS_SCRIPTeur1_geb+$HIS_SCRIPTpaypal_geb+$pmwst; $data{"PAYMENTREQUEST_0_CURRENCYCODE"}='EUR'; $data{"PAYMENTREQUEST_0_PAYMENTACTION"}='Sale'; $data{"PAYMENTREQUEST_0_SHIPPINGAMT"}=$global[$id_global_versandkosten]; $data{"PAYMENTREQUEST_0_INVNUM"}=$InvoiceID; for ($i=0;$i<=$#basket_dat;$i++) { @d=split(/\;/,$basket_dat[$i]); $costs=$d[$id_article_costs]; $aname=$d[$index{$basket_name_field}]; $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", $aname); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}=$d[$index{"NR"}], $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($costs), $data{"L_PAYMENTREQUEST_0_QTY$i"}=$d[$id_article_quantity] } if ($global[$id_global_min_order_zuschlag]>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "Mindermengen-Zuschlag"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="MZ", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($global[$id_global_min_order_zuschlag]), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($HIS_SCRIPTversandkosten_grundpauschale>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "Versandkosten/Versicherung/Maut"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="VK", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($HIS_SCRIPTversandkosten_grundpauschale), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($HIS_SCRIPTzoll_geb>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "Ausfuhranmeldung"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="ZO", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($HIS_SCRIPTzoll_geb), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($HIS_SCRIPTeur1_geb>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "Erstellung EUR1"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="EU", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($HIS_SCRIPTeur1_geb), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($HIS_SCRIPTpaypal_geb>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "PayPal-Gebühr"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="PP", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($HIS_SCRIPTpaypal_geb), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($pmwst>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "MwSt. $HIS_SCRIPTmwst%"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="MW", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($pmwst), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } %response = $nvp->SetExpressCheckout( %data ); if ($response{'ACK'} ne "Success") { &abbruch(qq!Leider hat uns PayPal mitgeteilt, dass die Zahlung nicht durchgeführt werden kann. Bitte gehen Sie zum Warenkorb zurück und wählen Sie im weiteren Verlauf der Bestellung eine andere Zahlungsart.
Aus Datenschutzgründen teilt uns PayPal nicht mit, warum die Zahlung nicht erfolgreich war. Bei Rückfragen dazu wenden Sie sich bitte direkt an PayPal.!); &abbruch("PayPal hat \"". $response{'Ack'} ."\" gemeldet: (" . $response{'Errors'}[0]->{'ErrorCode'} .") ". $response{'Errors'}[0]->{'LongMessage'} ." (CorrelationID: ". $response{'CorrelationID'} .")", 18 ); } my $token = $response{'TOKEN'}; &redirect($pp_server."cgi-bin/webscr?cmd=_express-checkout&token=$token"); exit; } # **************************************************************** # Paypal Step 2 # *************************************************************** sub paypal_checkout { use Business::PayPal::NVP; use Encode; $pp_server="https://paypal.com/"; if ($pp_sandbox==1) {$pp_server="https://sandbox.paypal.com/";} $pp_url="https://api-3t.paypal.com/nvp"; # Authentifizierungsdaten an API-Modul übergeben my $nvp = new Business::PayPal::NVP( branch => 'live', live => { user => $pp_username, pwd => $pp_password, sig => $pp_signature, url => $pp_url } ); $data{"TOKEN"}=$input{"token"}; %response = $nvp->GetExpressCheckoutDetails( %data ); if ($response{'ACK'} ne "Success") { &abbruch(qq!Leider hat uns PayPal mitgeteilt, dass die Zahlung nicht durchgeführt werden kann. Bitte gehen Sie zum Warenkorb zurück und wählen Sie im weiteren Verlauf der Bestellung eine andere Zahlungsart.
Aus Datenschutzgründen teilt uns PayPal nicht mit, warum die Zahlung nicht erfolgreich war. Bei Rückfragen dazu wenden Sie sich bitte direkt an PayPal.!); } foreach $key (sort(keys %response)) { $response{$key} = decode("utf-8", $response{$key}); } $userid=$response{"INVNUM"}; $userid=~s/_(.*)//g; $input{"userid"}=$userid; $input{"PayerID"}=$response{"PAYERID"}; $paypal_hidden_vars=""; $paypal_hidden_vars.=qq!!; $paypal_hidden_vars.=qq!!; $input{"PAYPAL_HIDDEN_VARS"}=$paypal_hidden_vars; @old_keyval=&read_data("$paypal_directory/$userid.var"); $ist_abweichend=0; foreach $old_keyval (@old_keyval) { @f=split(/\;/,$old_keyval); if ($f[0] ne "t") {$input{$f[0]}=$f[1];} if ($f[0] eq $shop_strasse_input && $response{"PAYMENTREQUEST_0_SHIPTOSTREET"} ne $f[1]) { $ist_abweichend=1; } $paypal_hidden_vars.=qq!\n!; } if ($ist_abweichend==1) { $paypal_hidden_vars.=qq!\n!; $tempname=$response{"PAYMENTREQUEST_0_SHIPTONAME"}; $paypal_hidden_vars.=qq!\n!; $tempstrasse=$response{"PAYMENTREQUEST_0_SHIPTOSTREET"}; $paypal_hidden_vars.=qq!\n!; $paypal_hidden_vars.=qq!\n!; $paypal_hidden_vars.=qq!\n!; } $input{"PAYPAL_HIDDEN_VARS"}=$paypal_hidden_vars; if (int(rand(500))==1) { # cleanup function opendir (VERZ, "$paypal_directory"); @datei= grep (!/^\.\.?$/, readdir VERZ); closedir VERZ; foreach $datei (@datei) { $age=-M $paypal_directory.$datei; if ($age>180) { unlink $paypal_directory.$datei; } } } } # **************************************************************** # Paypal Step 3 # *************************************************************** sub paypal_send_order { use Business::PayPal::NVP; use Encode; $pp_server="https://paypal.com/"; if ($pp_sandbox==1) {$pp_server="https://sandbox.paypal.com/";} $pp_url="https://api-3t.paypal.com/nvp"; @basket=&format_warenkorb; @o=&read_data("$datadirectory"."order.dat"); $o[0]++;$global[$id_global_ordernr]=$o[0]; if (length($month)==1) {$month="0".$month;} if (length($mday)==1) {$mday="0".$mday;} $help="$year$month$mday-$global[$id_global_ordernr]"; $InvoiceID=$global[$id_global_ordernr]; # Authentifizierungsdaten an API-Modul übergeben my $nvp = new Business::PayPal::NVP( branch => 'live', live => { user => $pp_username, pwd => $pp_password, sig => $pp_signature, url => $pp_url } ); open(f,">$paypal_directory$global[$id_global_userid]$help.info"); foreach $basket_dat (@basket_dat){ print f "$basket_dat\n"; } close(f); $data{"TOKEN"}=$input{"token"}; $data{"PAYERID"}=$input{"PayerID"}; $OrderTotal=$global[$id_global_sumallv]; if ($global[$id_global_sumall]==0) {&abbruch("Es befinden sich keine Artikel im Warenkorb.");} $itemamt=$OrderTotal-$global[$id_global_versandkosten]; $data{"DESC"}=&parse_line($paypal_item); $data{"CURRENCYCODE"}='EUR'; $data{"CUSTOM"}=&parse_line($paypal_item); $data{"INVNUM"}=$InvoiceID; $data{"PAYMENTACTION"}='Sale'; $data{"LOCALCODE"}='DE'; $data{"NOSHIPPING"}='2'; $data{"EMAIL"}=$input{"G_EMAIL"}; $data{"RETURNURL"}=$ReturnURL; $data{"CANCELURL"}=$CancelURL; $pmwst=&format_sum(($global[$id_global_sumallv]+$HIS_SCRIPTversandkosten_grundpauschale+$HIS_SCRIPTzoll_geb+$HIS_SCRITPeur1_geb+$HIS_SCRIPTpaypal_geb)/100*$HIS_SCRIPTmwst); $data{"PAYMENTREQUEST_0_ITEMAMT"}=$itemamt+$HIS_SCRIPTversandkosten_grundpauschale+$HIS_SCRIPTzoll_geb+$HIS_SCRIPTeur1_geb+$HIS_SCRIPTpaypal_geb+$pmwst; $data{"PAYMENTREQUEST_0_AMT"}=$OrderTotal+$HIS_SCRIPTversandkosten_grundpauschale+$HIS_SCRIPTzoll_geb+$HIS_SCRIPTeur1_geb+$HIS_SCRIPTpaypal_geb+$pmwst; $data{"PAYMENTREQUEST_0_CURRENCYCODE"}='EUR'; $data{"PAYMENTREQUEST_0_PAYMENTACTION"}='Sale'; $data{"PAYMENTREQUEST_0_SHIPPINGAMT"}=$global[$id_global_versandkosten]; $data{"PAYMENTREQUEST_0_INVNUM"}=$InvoiceID; for ($i=0;$i<=$#basket_dat;$i++) { @d=split(/\;/,$basket_dat[$i]); $costs=$d[$id_article_costs]; $aname=$d[$index{$basket_name_field}]; $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", $aname); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}=$d[$index{"NR"}], $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($costs), $data{"L_PAYMENTREQUEST_0_QTY$i"}=$d[$id_article_quantity] } if ($global[$id_global_min_order_zuschlag]>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "Mindermengen-Zuschlag"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="MZ", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($global[$id_global_min_order_zuschlag]), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($HIS_SCRIPTversandkosten_grundpauschale>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "Versandkosten/Versicherung/Maut"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="VK", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($HIS_SCRIPTversandkosten_grundpauschale), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($HIS_SCRIPTzoll_geb>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "Ausfuhranmeldung"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="ZO", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($HIS_SCRIPTzoll_geb), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($HIS_SCRIPTeur1_geb>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "Erstellung EUR1"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="EU", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($HIS_SCRIPTeur1_geb), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($HIS_SCRIPTpaypal_geb>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "PayPal-Gebühr"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="PP", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($HIS_SCRIPTpaypal_geb), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } if ($pmwst>0) { $data{"L_PAYMENTREQUEST_0_NAME$i"}=encode("utf8", "MwSt. $HIS_SCRIPTmwst%"); $data{"L_PAYMENTREQUEST_0_NUMBER$i"}="MW", $data{"L_PAYMENTREQUEST_0_AMT$i"}=&format_sum($pmwst), $data{"L_PAYMENTREQUEST_0_QTY$i"}=1; $i++; } $kunde_email=$input{$shop_email_input}; # E-Mail auf korrekte Form testen $kunde_email=~s/^(\s+)//g;$kunde_email=~s/(\s+)$//g; if ($kunde_email!~/^([a-zA-Z0-9\-\.\_]+)@([a-zA-Z0-9\-\.\_]+\.[a-zA-Z]+)$/) { if ($kunde_email ne "") { # Falls keine leere Mail &abbruch(qq!Die E-Mail wurde in einer falschen Form oder unvollständig angegeben. Bitte kontrollieren Sie Ihren Eintrag im Feld E-Mail. Wenn Sie keine E-Mail haben oder diese Meldung weiterhin erscheint, lassen Sie das Feld bitte komplett leer!); } } %response = $nvp->DoExpressCheckoutPayment( %data ); %details=%response; open(f,">$paypal_directory/$global[$id_global_userid]$help.pp"); foreach $key (sort(keys %response)) { print f "$key: ".$response{$key}."\r\n"; } if ($response{'ACK'} ne "Success") { &abbruch(qq!Leider hat uns PayPal mitgeteilt, dass die Zahlung nicht durchgeführt werden kann. Bitte gehen Sie zum Warenkorb zurück und wählen Sie im weiteren Verlauf der Bestellung eine andere Zahlungsart.
Aus Datenschutzgründen teilt uns PayPal nicht mit, warum die Zahlung nicht erfolgreich war. Bei Rückfragen dazu wenden Sie sich bitte direkt an PayPal.!); &abbruch("PayPal hat \"". $payinfo{'Ack'} ."\" gemeldet: (" . $payinfo{'Errors'}[0]->{'ErrorCode'} .") ". $payinfo{'Errors'}[0]->{'LongMessage'} ." (CorrelationID: ". $payinfo{'CorrelationID'} .")", 38 ); } $input{"TransactionID"}=$details{"PAYMENTINFO_0_TRANSACTIONID"}; $input{"PaymentStatus"}=$details{"PAYMENTINFO_0_PAYMENTSTATUS"}; $input{"Amount"}=$OrderTotal; push(@keyval,join(';',"TransactionID",$details{"PAYMENTINFO_0_TRANSACTIONID"})); push(@keyval,join(';',"PaymentStatus",$payinfo{"PAYMENTINFO_0_PAYMENTSTATUS"})); push(@keyval,join(';',"Amount",$OrderTotal)); } sub show_gutschein_text { local($gutschein_nr)=@_; ($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit,$gutschein_aktionvon,$gutschein_aktionbis,$gutschein_aktiontyp,$gutschein_laufzeit,$gutschein_ab,$gutschein_frei)=&get_gutschein_pass($gutschein_nr); print "Content-Type: text/html\n\n"; print ""; print $gutschein_frei."

"; print '

'; print "";exit; } sub gutschein_verwaltung { local($gutschein_nr,$ngutschein_bezahlt,$ngutschein_ausgeloest,$create_promo_gutschein,$ngutschein_wert,$ngutschein_ordermin,$ngutschein_ausgeloest,$ngutschein_gueltigkeit)=@_; if ($gutschein_nr ne "") { ($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit)=&get_gutschein_pass($gutschein_nr); if ($ngutschein_bezahlt==1) {$gutschein_bezahlt=1;} if ($ngutschein_ausgeloest==1) {$gutschein_ausgeloest=1;} &add_gutschein_to_db($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit); } if ($input{"gutschein_delete_nr"} ne "") { @g=&read_data($datadirectory."gutschein_db.txt"); $#gn=-1; foreach $g (@g) { ($gutschein_nr,$gutschein_wert,$gutschein_pw,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text)=split(/\;/,$g); if ($gutschein_nr ne $input{"gutschein_delete_nr"}) { push(@gn,$g); } } &save_array($datadirectory."gutschein_db.txt","gutschein",@gn); } if ($create_promo_gutschein ne "") { if ($ngutschein_wert==0) {&abbruch("Bitte einen Gutschein-Wert angeben.");} $gutschein_nr=&create_gutschein; $gutschein_wert=$ngutschein_wert; $gutschein_pass=""; $gutschein_bezahlt=1; $gutschein_ausgeloest=$ngutschein_ausgeloest; $gutschein_bestellt=time; $gutschein_absender=""; $gutschein_empfaenger=""; $gutschein_text=""; $gutschein_ordermin=$ngutschein_ordermin; $gutschein_gueltigkeit=$ngutschein_gueltigkeit; $gutschein_aktionvon=$input{"gutschein_aktionvon"}; $gutschein_aktionbis=$input{"gutschein_aktionbis"}; $gutschein_aktiontyp=$input{"gutschein_aktiontyp"}; $gutschein_laufzeit=$input{"gutschein_laufzeit"}; $gutschein_ab=$input{"gutschein_ab"}; $gutschein_frei=$input{"gutschein_frei"}; if ($gutschein_laufzeit==0 && $gutschein_aktionvon ne "") {&abbruch("Bitte die Laufzeit des Gutscheins angeben.");} if ($gutschein_gueltigkeit ne "") { ($gtag,$gmonat,$gjahr)=split(/\./,$gutschein_gueltigkeit);if ($gjahr<100) {$gjahr+=2000;} $gtage=&jday($gmonat,$gtag,$gjahr)-$start_tage; if ($gtage<$now_tage) {&abbruch("Das Datum zur Gültigkeit $gutschein_gueltigkeit muss in der Zukunft liegen.");} } if ($gutschein_aktiontyp ne "") { ($gtag,$gmonat,$gjahr)=split(/\./,$gutschein_aktionvon);if ($gjahr<100) {$gjahr+=2000;} $gtagevon=&jday($gmonat,$gtag,$gjahr)-$start_tage; ($gtag,$gmonat,$gjahr)=split(/\./,$gutschein_aktionbis);if ($gjahr<100) {$gjahr+=2000;} $gtagebis=&jday($gmonat,$gtag,$gjahr)-$start_tage; if ($gtagebis<$now_tage) {&abbruch("Das Datum Aktion bis $gutschein_aktionbis muss in der Zukunft liegen.");} if ($gtagebis<$gtagevon) {&abbruch("Das Datum Aktions bis $gutschein_aktionbis muss später als Aktion von $gutschein_aktionvon sein.");} } &add_gutschein_to_db($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit,$gutschein_aktionvon,$gutschein_aktionbis,$gutschein_aktiontyp,$gutschein_laufzeit,$gutschein_ab,$gutschein_frei); } print "Content-type: text/html\n\n"; print ""; @g=&read_data($datadirectory."gutschein_db.txt"); $#ng=-1; for ($i=$#g;$i>=0;$i--) { ($gutschein_nr,$gutschein_wert,$gutschein_pw,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text)=split(/\;/,$g[$i]); if ($gex{$gutschein_nr}==0 && $gutschein_bestellt>0) { push(@ng,$g[$i]); $gex{$gutschein_nr}=1; } } print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; # print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!\n!; foreach $ng (@ng) { ($gutschein_nr,$gutschein_wert,$gutschein_pw,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit,$gutschein_aktionvon,$gutschein_aktionbis,$gutschein_aktiontyp,$gutschein_laufzeit,$gutschein_ab,$gutschein_frei)=split(/\;/,$ng); ($gday,$gmon,$gyear)=split(/\./,$gutschein_gueltigkeit);$gdays=$gday+$gmon*31+$gyear*365; $myear=$year-2000;$odays=$mday+$month*31+$myear*365; if ($gdays<$odays && $gdays!=0) {next;} # if ($gutschein_aktiontyp==2){next;} local(@today) = localtime($gutschein_bestellt); local($d) = $today[3]; local($m) = $today[4]; local($y) = $today[5]; $m+=1;$y-=100; if (length($d)==1) {$d="0".$d;} if (length($m)==1) {$m="0".$m;} if (length($y)==1) {$y="0".$y;} if ($gutschein_aktiontyp eq "") {print qq!\n!;} if ($gutschein_aktiontyp eq "0") {print qq!\n!;} if ($gutschein_aktiontyp==2) {print qq!\n!;} $gutschein_status="OK"; $gutschein_new_status="OK"; if ($gutschein_bezahlt==0) { $gutschein_status="Warte auf Zahlung"; $gutschein_new_status="Zahlung ist erfolgt"; $gutschein_link="gutschein_bezahlt=1"; } if ($gutschein_bezahlt==1) { $gutschein_status="kann eingelöst werden"; if ($gutschein_ausgeloest<0) { $gutschein_status="beliebig oft einlösbar"; } $gutschein_new_status="Gutschein sperren"; $gutschein_link="gutschein_ausgeloest=999"; } if ($gutschein_ausgeloest==1) { $gutschein_status="wurde eingelöst"; $gutschein_new_status=""; $gutschein_link=""; } if ($gutschein_ausgeloest==999) { $gutschein_status="ist gesperrt"; $gutschein_new_status=""; $gutschein_link=""; } print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; if ($gutschein_aktiontyp ne "") { print qq!!; print qq!!; print qq!!; print qq!!; $x='vorhanden';if ($gutschein_frei eq "") {$x="";} print qq!!; } print qq!!; } print qq!
Status ändernAktueller StatusBestell-DatumGutschein-CodeGutschein-WertMindest-BestellwertGültig bisKäuferVersand anAktion von/bisLaufzeitab Bestellwertfreier Text
$gutschein_new_status - löschen$gutschein_status$d.$m.$y$gutschein_nr!.&format_sum($gutschein_wert).qq!!.&format_sum($gutschein_ordermin).qq!$gutschein_gueltigkeit$gutschein_absender$gutschein_aktionvon$gutschein_aktionbis$gutschein_laufzeit$gutschein_ab$x

!; print qq!

!; print qq!!; print qq!!; print qq!Promotions-Gutschein erstellen
!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!
Gutschein-Wert:
Mindest-Bestellwert:
Wie oft einlösbar?
Gültig bis: (TT.MM.JJ)
!; print qq!

!; print qq!Beispiele:
!; print qq!- Ein Werbe-Gutschein über 5 EUR, der frei verbreitet wird, muss beliebig oft einlösbar sein,\n!; print qq!da verschiedene Kunden den gleichen Gutschein-Code eingeben werden.
!; print qq!- Ein Hauptgewinn bei einem Gewinnspiel über einen Gutschein mit 25 EUR muss nur einmal einlösbar sein,\n!; print qq!da diesen Gutschein-Code nur genau ein Kunde erhalten soll.
!; print qq!

!; print qq!
!; print qq!
!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!Mail-Gutschein erstellen (wird automatisch per Mail an Kunde oder Shopinhaber geschickt)
!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!!; print qq!
Aktion von/bis (TT.MM.JJ) - (TT.MM.JJ)
Gutschein Laufzeit: (in Tagen)
Gutschein ausstellen
ab Bestellwert:
Mindest-Bestellwert:
Gutschein-Wert:
Gutschein-Text:
!; print qq!

!; print qq!- Mail-Gutscheine werden zu jeder Bestellung automatisch erstellt.
!; print qq!- der Code zu den Mail-Gutscheinen wird in den Vorlagen der Bestellungsmails mit der Variabel [GUTSCHEIN_MAIL] ausgegeben.
!; print qq!- Mail-Gutscheine sind in der Gutschein-Verwaltung mit grauem Hintergrund markiert.

!; print qq!

!; print ""; exit; } sub kunde_admin { @ofields=("U_USER","U_PASS","U_NAME1","U_EMAIL","U_STRASSE1","U_PLZ1","U_ORT1"); $admin_dif=50; print "Content-Type: text/html\n\n"; print ""; print qq!
!; print qq!!; print qq!!; print qq!Volltext: !; print qq!   !; print qq!U_NAME1: !; print qq!
!; print qq!
!; print ""; @kdaten=&read_data($kundetxt); if ($input{"sort"} ne "") { $groupby_index=$input{"sort"}; @kdaten=sort by_groupby @kdaten; } $kunde_search=&url_encode($input{"kunde_search"}); $kunde_uname1=&url_encode($input{"kunde_uname1"}); $start=$input{"start"}; $link=qq!$shoppl?kunde_admin=1&pass=$admin_passwort&start=$start&kunde_search=$kunde_search&kunde_uname1=$kunde_uname1!; print ""; foreach $ofields (@ofields) { $k=$uindex{$ofields}; print qq!!; } print ""; $anz=0;$all=0; foreach $kdaten (@kdaten) { $kdaten=~s/\"//g; @d=split(/\;/,$kdaten); $all++; if ((($input{"kunde_search"} eq "" && $input{"kunde_uname1"} eq "") || ($kdaten=~/$input{"kunde_search"}/i && $input{"kunde_search"} ne "") || ($d[$uindex{"U_NAME1"}]=~/$input{"kunde_uname1"}/i && $input{"kunde_uname1"} ne "")) && $all>=$input{"start"} && $anz<=$admin_dif) { $anz++; print ""; foreach $ofields (@ofields) { if ($ofields eq "U_USER") { print qq!!; } else { print ""; } } print "\n"; } } print "
$ofields
$d[$uindex{$ofields}]$d[$uindex{$ofields}]
"; print "
"; if ($input{"start"}>0) { $next=$input{"start"}-$admin_dif; print qq!Vorher  !; } if ($anz==$admin_dif+1) { $next=$input{"start"}+$admin_dif; print qq!Weiter!; } exit; } sub kunde_new { print "Content-Type: text/html\n\n"; print ""; print qq!
!; print qq!!; print qq!!; print qq!!; print ""; foreach $userf (@userf) { print ""; print ""; if ($userf ne "U_KNR") { if ($userf eq "U_ONLINEKUNDE") {$v="1";} else {$v="";} print qq!!; } else { print qq!!; } print ""; } print "
$userfautomatisch

"; print qq!   !; print "

"; exit; } sub kunde_edit { local($knr)=@_; @kdaten=&read_data($kundetxt); $#nkdaten=-1; foreach $kdaten (@kdaten) { $kdaten=~s/\"//g; @d=split(/\;/,$kdaten); if ($d[$uindex{$user_login_field}] eq $knr) { @myd=@d; if ($input{"do_edit"}==1 && $input{"do_kill"} eq "") { foreach $userf (@userf) { if (defined($input{$userf})) { $myd[$uindex{$userf}]=$input{$userf}; } } $kdaten=join(';',@myd); push(@nkdaten,$kdaten); } } else { push(@nkdaten,$kdaten); } } if ($input{"do_edit"}==1) { &save_array($kundetxt,"kundetxt",@nkdaten); } print "Content-Type: text/html\n\n"; print ""; if ($input{"do_ikunde"} ne "") { unlink "../exportfz73s/"."ikunde.txt"; @edaten=&read_data("./export/temp.txt"); foreach $edaten (@edaten) { $export{$edaten}=1; } foreach $kdaten (@kdaten) { @user_daten=split(/\;/,$kdaten); if ($export{$user_daten[$uindex{"U_KNR"}]}==1) { if ($user_daten[$uindex{"U_FIRMA"}] ne "") { $match{"Vorname"}=""; $match{"Name"}="U_FIRMA"; $match{"Name2"}="U_FIRMA"; $match{"Anrede"}="Firma"; $match{"xzanrede"}="U_ANREDE"; $match{"xzvorname"}="U_VORNAME"; $match{"xzname"}="U_NAME"; } else { $match{"Vorname"}="U_VORNAME"; $match{"Name"}="U_NAME"; $match{"Name2"}="U_NAME"; $match{"Anrede"}="U_ANREDE"; $match{"xzanrede"}=""; $match{"xzvorname"}=""; $match{"xzname"}=""; } $first=0; @l2=&read_data("../exportfz73s/"."ikunde.txt"); if ($#l2<=0) {$first=1;} open(f,">>"."../exportfz73s/"."ikunde.txt"); if ($first==1) {print f join("\t",@ikunde_fields)."\n";} foreach $ikunde_fields (@ikunde_fields) { if ($ikunde_fields eq "Name") { $help=$user_daten[$uindex{$match{$ikunde_fields}}]; $help=substr($help,0,40); print f "$help\t"; } elsif ($ikunde_fields eq "Name2") { $help=$user_daten[$uindex{$match{$ikunde_fields}}]; $help=substr($help,40,length($help)); print f "$help\t"; } elsif ($match{$ikunde_fields}!~/^U_/) { print f "$match{$ikunde_fields}\t"; } elsif ($match{$ikunde_fields}=~/\,/) { @ik=split(/\,/,$match{$ikunde_fields}); foreach $ik (@ik) { print f $user_daten[$uindex{$ik}]." "; } print f "\t"; } else { if (defined($match{$ikunde_fields})) { print f "$user_daten[$uindex{$match{$ikunde_fields}}]\t"; } else { print f "\t"; } } } print f "\n"; close(f); } } unlink "./export/temp.txt"; print qq!Export erfolgreich.
!; print qq!Download über rechte Maustaste, Ziel speichern unter:
!; print qq!ikunde.txt!; exit; } if ($input{"do_kill"} ne "") { print "Der Datensatz wurde gelöscht.";exit; } if ($input{"do_export"} ne "") { $#nedaten=-1; @edaten=&read_data("./export/temp.txt"); $new=1; foreach $edaten (@edaten) { if ($edaten eq $knr) { $new=0; } if ($input{"deselect"} eq "" || $edaten ne $input{"deselect_me"}) { push(@nedaten,$edaten); } } if ($new==1) {push(@nedaten,$knr);} @nedaten=sort(@nedaten); &save_array("./export/temp.txt","exporttxt",@nedaten); @edaten=@nedaten; print qq!
!; print qq!!; print qq!!; print qq!!; print qq!Export ikunde.txt:
!; print qq!!; print qq!
!; print qq!Zum Export markiert:
!; print qq!!; print qq!

!; print qq!
!; print qq!
!; exit; } print qq!
!; print qq!!; print qq!!; print qq!!; print ""; foreach $userf (@userf) { print ""; print ""; if ($userf ne "U_KNR") { print qq!!; } else { print qq!!; } print ""; } print "
$userf$myd[$uindex{$userf}]

"; print qq!   !; print qq!!; print "

"; # print qq!
!; # print qq!!; # print qq!!; # print qq!!; # print qq!!; # print qq!
!; exit; } sub merke { local($id,$merke_delete)=@_; $merke_menge=1; if ($merke_delete==1) {$merke_menge=0;} # if ($user_daten[$uindex{"$user_login_field"}] eq "") { # &abbruch(qq!Bitte zuerst einloggen, um die Merken-Funktion zu nutzen.!); # } if ($user_daten[$uindex{"$user_login_field"}] eq "") {return;} open(f,">>${datadirectory}merke.dat"); print f join(';',"$mday.$month.$year","$hour:$minute",$user_daten[$uindex{"$user_login_field"}],$id,$merke_menge)."\n"; close(f); } sub admin { print "Content-type: text/html\n\n"; print ""; print "

WebShop Administration:

"; print qq!
  1. !; print qq!!; print qq!Artikel editieren:
    !; print qq!Artikel-Nr.: \n!; print qq!!; print qq!
    !; print qq!
  2. !; print qq!!; print qq!!; print qq!
    !; print qq!
  3. !; print qq!Gutschein-Verwaltung:
    !; print qq!!; print qq!!; print qq!
    !; print qq!
  4. !; print qq!!; print qq! !; print qq!!; print qq!
    !; if ($use_partner_db==1) { print qq!
  5. !; print qq!!; print qq!Status einer Bestellung setzen:
    !; print qq!!; print qq!
    Bestell-Nr.:
    Neuer Status:
    (z.b. "OK" oder "Bestellung ungültig" etc.)
    !; print qq!!; print qq!
    !; print qq!
  6. !; print qq!!; print qq!Provisions-Korrekturen durch Stornierungen oder zurückgesendete Waren eintragen:
    !; print qq!!; print qq!!; print qq!!; print qq!
    Partner-ID (PID):
    Warenwert-Minderung um einen Betrag von:
    Begründung:
    !; print qq!!; print qq!
    !; print qq!
  7. !; print qq!!; print qq!Überweisung an Partner (Reseller) eintragen:
    !; print qq!!; print qq!
    Partner-ID (PID):
    Überwiesener Betrag:
    !; print qq!!; print qq!
    !; print qq!
  8. !; print qq!!; print qq!!; print qq!Übersicht aller Bestellungen über das Partnermodul:
    !; print qq!!; print qq!!; print qq!
    Monat
    Jahr
    Partner-ID (PID):
    !; print qq!!; print qq!
    !; } print qq!
!; print ""; exit; } sub pic_update { local($nr,$content,$ufile,$pass)=@_; $picnr=$CGI{"pic"}; $this_pic=$nr; @a=split(/ \* /,$this_pic); $this_pic=$a[0]; $this_pic=~s/\s//g; $this_pic=~s/[\\\/]//g; $endung=""; if ($ufile=~/\.gif/i) {$endung=".gif";} if ($ufile=~/\.jpg/i) {$endung=".jpg";} if ($ufile eq "") { unlink "$picverz[$picnr]$this_pic.gif"; unlink "$picverz[$picnr]$this_pic.jpg"; } else { open(f,">$picverz[$picnr]$this_pic$endung"); binmode f; print f $content; close(f); } &update($nr,$pass); } sub admindelete { local($pass)=@_; if ($pass ne $admin_passwort) {&abbruch("Falsches Passwort");} &get_input; foreach $keyval (@keyval) { @field=split(/\;/,$keyval); # Felder ermitteln if ($field[0]=~/^delete_(.*)/) { $del{$1}="ok"; } } $#new_article_dat=-1; foreach $article_dat (@article_dat) { @a=split(/$trennzeichen/,$article_dat); if ($del{$a[$id_article_id]} eq "") { push(@new_article_dat,$article_dat); } } @article_dat=@new_article_dat; &save_array($articledat,"article",@article_dat); } sub update { local($nr,$pass)=@_; if ($pass ne $admin_passwort) {&abbruch("Falsches Passwort");} @adata=&get_article_data($nr); $do_update=0; foreach $keyw (@keyw) { if (defined($input{"update_$keyw"})) { $adata[$index{$keyw}]=$input{"update_$keyw"}; $do_update=1; } } $gef=0; if ($do_update==1) { foreach $article_dat (@article_dat) { @a=split(/$trennzeichen/,$article_dat); if ($a[$id_article_id] eq $nr) { $article_dat=join(';',@adata); $gef=1; } } if ($gef==0) { push(@article_dat,join($trennzeichen,@adata)); } &save_array($articledat,"article",@article_dat); } $#article=-1; push(@article,join(';',@adata)); if ($input{"exit_update"}==1 || $CGI{"exit_update"}==1) {return;} $table=qq!
\n!; $table.=qq!\n!; $table.=qq!\n!; $table.=qq!\n!; $i=0; foreach $keyw (@keyw) { $value="$adata[$i]"; if ($input{$keyw} ne "") {$value=$input{$keyw}} if ($keyw eq "NR" && $nr eq "neu") {$value=time;} if ($keyw ne "BESCHREIBUNG") { $table.=qq!\n!; } else { $value=~s/\/\n/g; $table.=qq!\n!; } $i++; } $table.="
$keyw
$keyw
"; $table.=qq!!; $table.="
\n"; $i=-1; foreach $pichttp (@pichttp) { $i++;$j=$i+1; $table.=qq![REPEAT_ARTIKEL]
\n!; $table.=qq!\n!; $table.=qq!\n!; $table.=qq!\n!; $table.=qq![PIC$j]
$pichttp[$i]
!; $table.=qq!\n!; $table.=qq!!; $table.=qq!
[REPEAT_ARTIKEL_END]!; } print "Content-type: text/html\n\n"; print "".&parse_line($table).""; exit; } # ========================================================================================== # Hinzufügen eines Eintrags in die Datenbank über ein Web-Formular! # ========================================================================================== sub add_to_db { local($db)=@_; $#new_entry=-1; foreach $keyw (@keyw) { if ($input{"$keyw"} ne "") { $new_entry[$index{$keyw}]=$input{"$keyw"}; } } open(f,">>$datadirectory$db"); print f join(';',@new_entry)."\n"; close(f); } # ========================================================================================== # Funktion zum Entfernen "überflüssiger" Bilder, also i.d.R. Grafiken, die zu Artikeln # gehören, die gelöscht wurden. # ========================================================================================== sub pic_show_or_kill { local($pic_kill)=@_; foreach $article_dat (@article_dat) { @array=split(/$trennzeichen/,$article_dat); $array[$index{"NR"}]=~s/\s//g; $array[$index{"NR"}]=~s/[\\\/]//g; $is_ok{$array[$index{"NR"}]}=1; } print "Content-type: text/html\n\n"; print ""; $ok=1; foreach $picverz (@picverz) { opendir (VERZ, "$picverz"); @datei= grep (!/^\.\.?$/, readdir VERZ); closedir VERZ; foreach $datei (@datei) { if ($datei=~/\.gif$/i || $datei=~/\.jpg$/) { $d=$datei; $d=~s/\.gif//gi; $d=~s/\.jpg//gi; if ($is_ok{$d}==0 && $datei ne $default_pic) { if ($pic_kill==0) { $ok=0; print "Die Datei $picverz$datei kann gelöscht werden.
\n"; } else { $ok=0; unlink "$picverz[0]$datei"; print "Die Datei $picverz$datei wurde gelöscht.
\n"; } } } } } if ($ok==1) { print "Alles in Ordnung!"; } } sub shasign { local($secure)=@_; use Digest::MD5 qw(md5_hex); $digest = md5_hex($secure); return $digest; } # ========================================================================================== # Kontrolle der Felder der Bestellungsseite, die zwingend einen Inhalt haben müssen. # Um diese Felder zu definieren, kann das Formular auf der Bestellseite ein HIDDEN-Feld mit # Namen "required" enthalten. Beispiele: # # ========================================================================================== sub kontrolliere_required { local($required,@required); $c=&CC_Verify($input{"Kartentyp"},$input{"Kartennummer"}); if ($c==0) { &abbruch("Die Kreditkarten-Daten sind leider ungültig."); } $required=$input{"required"}; # Das Feld mit Namen "requried" einlesen @required=split(/\,/,$required); # Felder ermitteln foreach $required (@required) { # Alle Felder durchlaufen if ($input{$required} eq "") { # Falls das angegebene Feld nicht ausgefüllt wurde... &abbruch("Bitte füllen Sie das Feld $required aus. Vielen Dank!") # Fehlermeldung ausgeben! } } } # ========================================================================================== # Ermittelt die User-ID des Benutzers # ========================================================================================== sub get_user_id { @robots=split(/\,/,$robots); foreach $robots (@robots) { if ($ENV{'HTTP_USER_AGENT'}=~/$robots/) { return "9999"; } } if ($input{"userid"} ne "") { # Falls UserId per Formulareingabe uebergeben wird... $input{"userid"}=int($input{"userid"}); foreach $kunde_dat (@kunde_dat) { $kunde_dat=~s/\[USER_ID\]/$min_userid/g; @kunde=split(/\;/,$kunde_dat); # Kundendaten holen if ($input{"userid"} eq $kunde[$id_kunde_kundennr]) { @user_daten=split(/\|/,$kunde[$id_kunde_userdata]); } } return int($input{"userid"}); } $cookie_name="userid"; if($ENV{HTTP_COOKIE} ne "") { @ckArry = split(/; /,$ENV{HTTP_COOKIE}); foreach (@ckArry){ if($_ =~ /$cookie_name/) { ($cookieName, $cookieVal) = split (/=/,$_) } } if ($cookieVal ne "") {$input{"userid"}=$cookieVal; # open(f,">>session3.txt"); # print f "$mday.$month.$year $hour:$minute *".$input{"userid"}."* $knr $global[$id_global_remotehost] $buffer\n"; # close(f); return int(&search_user($input{"userid"}));} } if ($input{"userid"} ne "") { # Falls UserId per Formulareingabe uebergeben wird... $input{"userid"}=int($input{"userid"}); # open(f,">>session.txt"); # print f "$mday.$month.$year $hour:$minute *$neu_kunde* $knr $global[$id_global_remotehost] $buffer\n"; # close(f); return int(&search_user($input{"userid"})); } else { return int(&search_user("")); # Ansonsten UserId suchen } } # ========================================================================================== # Kontrolliert, ob zwei Angaben (zusammengesetzt aus REMOTE_HOST und HTTP_VIA) vom selben # Kunden stammen (inkl. Proxy Test!) # ========================================================================================== sub check_equal { local($r1,$r2)=@_; # Einlesen der zwei Angaben @host_http1=split(/\#/,$r1); # Angaben in REMOTE_HOST und HTTP_VIA zerlegen @host_http2=split(/\#/,$r2); if ($host_http1[3] ne $host_http2[3]) {return 0;} # Browser gleich? if ($host_http2[1] eq '' || $host_http1[1] eq '') { # Falls keine HTTP_VIA Angabe => Keine Proxys, direkte Verbindung, einfach zu handeln @ip1=split(/\./,$host_http1[0]); @ip2=split(/\./,$host_http2[0]); if ( ( ($ip1[0]==195 && $ip1[1]==14) || ($ip1[0]==194 && $ip1[1]==8)) && ( ($ip2[0]==195 && $ip2[1]==14) || ($ip2[0]==194 && $ip2[1]==8))) {return 1;} if ($ip1[0]==195 && $ip1[1]==93) { if ($ip1[0] ne $ip2[0] || $ip1[1] ne $ip2[1]) {return 0;} # Falls IPs ungleich => nicht derselbe Kunde } else { if ($ip1[0] ne $ip2[0] || $ip1[1] ne $ip2[1] || $ip1[2] ne $ip2[2]) {return 0;} # Falls IPs ungleich => nicht derselbe Kunde } return 1; # Ansonsten ist es derselbe Kunde } if ($host_http1[1] eq $host_http2[1]) {return 1;} # Falls HTTP_VIA gleich => derselbe Kunde @http_via1=split(/ /,$host_http1[1]); # HTTP_VIA z.B.: "HTTP/1 speth13.dort01.t-online.de" @http_via2=split(/ /,$host_http2[1]); @p1=split(/\./,$http_via1[1]); # Untersucht werden soll der Teil: speth13.dort01.t-online.de @p2=split(/\./,$http_via2[1]); if ($p1[1] ne $p2[1]) {return 0;} # 2. Teil untersuchen if ($p1[2] ne $p2[2]) {return 0;} # 3. Teil untersuchen $first1=$p1[0]; # 1. Teil untersuchen $first2=$p2[0]; $min=length($first1); # min. Zeichenfolge ermitteln if (length($first2)<$min) {$min=length($first2)} $first1=substr($first1,0,3); # jeweils vom 1. Teil nur die ersten Zeichen verwenden $first2=substr($first2,0,3); if ($first1 ne $first2) {return 0;} # Zeichenketten vergleichen return 1; } sub get_global_data { local($g)=@_; @global_keyvalues=split(/\~/,$g); foreach $global_keyvalues (@global_keyvalues) { @kv=split(/\=/,$global_keyvalues); if (!defined($input{"$kv[0]"})) { $input{"$kv[0]"}=$kv[1]; $global{$kv[0]}=$kv[1]; } } } sub get_global_data_string { local($g); local($key); foreach $key (sort(keys %global)) { $global{$key}=~ s/\cM\n/ /g; $g.=$key. '='. $global{$key}. "~"; } return $g; } # ========================================================================================== # Sucht nach einem User und gibt dessen Kunden-Nr. zurueck. # Wenn User nicht in Liste oder laenger als max_minuten_inaktiv in Liste, wird auf die # Prozedur create_new_kunde verwiesen. # Wenn der User gefunden wurde und im Bereich max_minuten_inaktiv ist, wird der alte Eintrag # geloescht, der User mit neuer Zeit am Anfang der Liste eingefuegt und die Kundennummer # zurueckgegeben. # ========================================================================================== sub search_user { local($opt_id)=@_; local($is_equal); my @kunde; my @kd; $knr=0; $#new_kunde_dat=-1; foreach $kunde_dat (@kunde_dat) { $kunde_dat=~s/\[USER_ID\]/$min_userid/g; @kunde=split(/\;/,$kunde_dat); # Kundendaten holen $vergangene_minuten=$now_tage*24*60+$now_minuten-($kunde[$id_kunde_tage]*24*60+$kunde[$id_kunde_minuten]); if ($vergangene_minuten<=$max_minuten_inaktiv) { # Vergangene Minuten mit eingestellter Zeit vergleichen $is_equal=0; if ($opt_id eq "") { if (&check_equal($kunde[$id_kunde_remotehost],$global[$id_global_remotehost])==1) { # Falls IP-Adresse+HTTP_VIA uebereinstimmen $is_equal=1; } } else { if ($opt_id eq $kunde[$id_kunde_kundennr]) { $is_equal=1; } } if ($is_equal==1) { $kunde[$id_kunde_tage]=$now_tage; # Kundendaten zuweisen $kunde[$id_kunde_minuten]=$now_minuten; &get_global_data($kunde[$id_kunde_global]); $kunde[$id_kunde_global]=&get_global_data_string; $knr=$kunde[$id_kunde_kundennr]; @user_daten=split(/\|/,$kunde[$id_kunde_userdata]); @partner_daten=split(/\|/,$kunde[$id_kunde_partnerdata]); } push(@new_kunde_dat,join(';',@kunde)); } else { $killdat=&get_basketdat($kunde[$id_kunde_kundennr]); # Warenkorb holen unlink "$killdat"; # Warenkorb loeschen if ($dif_porto!=0) { $killdat2=&get_portodat($kunde[$id_kunde_kundennr]); # Portodat unlink "$killdat2"; # löschen } } } @okunde_dat=@kunde_dat;$neu_kunde=0; if ($knr==0) { $neu_kunde=1; @nk=&create_new_kunde; if ($opt_id ne "" && $is_equal==0) { $nk[$id_kunde_kundennr]=$opt_id; } $nk[$id_kunde_global]=&get_global_data_string; push(@new_kunde_dat,join(';',@nk)); @kunde_dat=@new_kunde_dat; $knr=$nk[$id_kunde_kundennr]; } # open(f,">>session.txt"); # print f "$mday.$month.$year $hour:$minute *$neu_kunde* $knr $global[$id_global_remotehost] $buffer\n"; # close(f); if ($vergangene_minuten>3 || join("\n",@new_kunde_dat) ne join("\n",@okunde_dat)) { &save_array($kundedat,"kunde",@new_kunde_dat); # Speichern } return $knr; # neuer Kunde } # ========================================================================================== # Ein neuer Kunde wird erstellt und in die Kundenliste am Anfang eingefuegt. # Falls die Kundenliste mehr als max_user Eintraege hat, werden die aeltesten Eintraege # (stehen hinten) geloescht. Die Profil-Dateien werden ebenfalls geloescht. # Anschliessend wird solange eine beliebige Zuf-Zahl aus dem Bereich min_userid-max_userid # gewaehlt, bis es KEINE Profil-Datei zu der Kundennr. gibt. Der neue Kunde ist dann # gefunden. Die Kunden-Felder werden gesetzt und er wird an den Anfang der Liste eingefuegt. # ========================================================================================== sub create_new_kunde { srand(); # Zuf-Generator initialisieren # &lock("stat"); @s=&read_data($statistikdat); $found=0; foreach $s (@s) { @z=split(/\;/,$s); if ($z[0]=~/$mday\.$month\.$year/) { $z[1]++; $s=join(';',@z); $found=1; } } if ($found==0) { push(@s,join(';',"$mday.$month.$year",1)); } &save_array($statistikdat,"statistik",@s); # &unlock("stat"); do { # Wiederhole solange... $zuf=int rand($max_userid-$min_userid+1)+$min_userid; # und berechne eine Zuf-Zahl $basketdat=&get_basketdat($zuf); # und den dazugeh. Warenkorb } while (&exist($basketdat)); # wie der Warenkorb exisitert &new($basketdat,$basketdat); # Warenk. ex. nicht. Wird also neu erstellt. if ($dif_porto!=0) { $portodat=&get_portodat($zuf); &new($portodat,$portodat); } $#new_kunde=-1; # Kundendaten zuweisen $new_kunde[$id_kunde_remotehost]=$global[$id_global_remotehost]; $new_kunde[$id_kunde_kundennr]=$zuf; $new_kunde[$id_kunde_tage]=$now_tage; $new_kunde[$id_kunde_minuten]=$now_minuten; $new_kunde[$id_kunde_userdata]=""; $new_kunde[$id_kunde_partnerdata]=""; $new_kunde[$id_kunde_global]=""; return @new_kunde; } # ========================================================================================== # Fuer eine Kundennr (Input) wird die zugehoerige Profil-Datei zurueckgegeben. # ========================================================================================== sub get_basketdat { local($filename)=@_; # Kundennr. als Paramter while (length($filename)<7) {$filename="0".$filename;} # "0.." am Anfang einfuegen return ($profiledirectory."k$filename.txt"); # Rückgabe } sub get_portodat { local($filename)=@_; # Kundennr. als Paramter while (length($filename)<7) {$filename="0".$filename;} # "0.." am Anfang einfuegen return ($profiledirectory."p$filename.txt"); # Rückgabe } # ========================================================================================== # Gibt anhand der Art.Nr die Daten eines Artikels zurueck. # ========================================================================================== sub get_article_data { local($id)=@_; # ID einlesen local(@article_fields,$article_dat); foreach $article_dat (@article_dat) { # Artikel durchlaufen @article_fields=split(/$trennzeichen/,$article_dat); # Felder ermitteln @id_search=split(/ \, /,$article_fields[$id_article_id]); foreach $id_search (@id_search) { if ($id_search eq $id) { # Falls ID gefunden... $article_fields[$id_article_id]=$id_search; return @article_fields; # Artikel Daten zurückgeben } } } foreach $article_dat (@article_dat) { # Artikel durchlaufen @article_fields=split(/$trennzeichen/,$article_dat); # Felder ermitteln @id_search=split(/ \, /,$article_fields[$index{"NUMMER"}]); foreach $id_search (@id_search) { if ($id_search eq $id) { # Falls ID gefunden... # $article_fields[$id_article_id]=$id_search; return @article_fields; # Artikel Daten zurückgeben } } } return -1; } sub get_article_data_nummer { local($id)=@_; # ID einlesen local(@article_fields,$article_dat); foreach $article_dat (@article_dat) { # Artikel durchlaufen @article_fields=split(/$trennzeichen/,$article_dat); # Felder ermitteln @id_search=split(/ \, /,$article_fields[$index{"NUMMER"}]); foreach $id_search (@id_search) { if ($id_search eq $id) { # Falls ID gefunden... $article_fields[$id_article_id]=$id_search; return @article_fields; # Artikel Daten zurückgeben } } } return -1; } sub by_groupby_num { @b = split(/\;/,$b); @a = split(/\;/,$a); $a[$groupby_index] <=> $b[$groupby_index]; # presuming integers } sub by_groupby { @b = split(/\;/,$b); @a = split(/\;/,$a); $a[$groupby_index] cmp $b[$groupby_index]; # presuming integers } sub aliste { local($t)=@_; @aliste=split(/\,/,$user_daten[$uindex{"U_LISTE"}]); foreach $aliste (@aliste) { $l{$aliste}=1; } $#article=-1; foreach $article_dat (@article_dat) { @afelder=split(/$trennzeichen/,$article_dat); if ($l{$afelder[$id_article_id]}==1) { push(@article,$article_dat); } } $line=join("\n",&read_data("$tempdirectory$t.htm")); # Vorlage einlesen $line=&parse_line($line); # Variablen ersetzen print "Content-type: text/html\n\n"; print $line; # ausgeben exit; } sub special_request { local($f,$c,$t,$start,$dif,$aliste)=@_; $start=int($start); $c=~s/_(.*)$//g;$input{"c"}=~s/_(.*)$//g; if ($start==0) {$start=1;$dif=999;$input{"start"}=1;$input{"dif"}=999;} local(%group)=(); if ($input{"c"}=~/\[/) { $input{"c"}=~s/\[/\-/g; $input{"c"}=~s/\]/\-/g; } $oinput{"c"}=$input{"c"}; if ($input{"c"}=~/\-/) { $hf=$input{"f"};$hf=~s/\*//g; @d=split(/\|/,$input{"c"}); foreach $d (@d) { if ($d=~/(.*?)\-(.*?)\-/) { $mainartikel=$1; $subartikel=$2; $ende=$'; $mainartikel=~s/[\(\)]//g; foreach $article_dat (@article_dat) { @h=split(/$trennzeichen/,$article_dat); if ($h[$index{$hf}] eq $mainartikel) { $subartikel=~s/\*/\#/g; @help=split(/\,/,$subartikel); for ($hh=0;$hh<=$#help;$hh++) { $hh2=$hh+1; $h[$index{"OPTION$hh2"}]=$help[$hh]; } $article_dat=join(';',@h); } } if (length($mainartikel)>5) {$d=$mainartikel.$ende;} } } $input{"c"}=join('|',@d);$input{"c"}=~s/\)//g;$input{"c"}=~s/\(//g; } if ($input{"c"}=~/\{/) { $hf=$input{"f"};$hf=~s/\*//g; @d=split(/\|/,$input{"c"}); foreach $d (@d) { if ($d=~/(.*?)\{(.*?)\}/) { $mainartikel=$1; $subartikel=$2; $ende=$'; $mainartikel=~s/[\(\)]//g; if ($hf eq "NUMMER") { @mdata=&get_article_data_nummer($mainartikel); # Daten aus Datenbank holen } else { @mdata=&get_article_data($mainartikel); # Daten aus Datenbank holen } $mainartikel_preis=$mdata[$index{"PREIS"}]; $mainartikel_binfo=$mdata[$index{"BESTELLUNGSINFO"}]; $mainartikel_anr=$mdata[$index{"NUMMER"}]; $mainartikel_nr=$mdata[$index{"NR"}]; @e=split(/\,/,$subartikel); foreach $e (@e) { @help=split(/\~/,$e); if ($#help>0) {$hhelp=$help[0];$e=$help[1];} if ($hhelp==0) {$hhelp=2;} if ($hf eq "NUMMER") { @edata=&get_article_data_nummer($e); # Daten aus Datenbank holen } else { @edata=&get_article_data($e); # Daten aus Datenbank holen } $mainartikel_preis.=" * ".$edata[$index{"PREIS"}]; # $mainartikel_binfo.=" * ".$edata[$index{"BESTELLUNGSINFO"}]; if ($hhelp==1) {$mainartikel_binfo.=" * ".$edata[$index{"NAME"}];} if ($hhelp==2) {$mainartikel_binfo.=" * ".$edata[$index{"BESTELLUNGSINFO"}];} if ($hhelp==3) {$mainartikel_binfo.=" * ".$edata[$index{"BESCHREIBUNG"}];} $mainartikel_anr.=" * ".$edata[$index{"NUMMER"}]; $mainartikel_nr.=" * ".$edata[$index{"NR"}]; } foreach $article_dat (@article_dat) { @h=split(/$trennzeichen/,$article_dat); if ($h[$index{$hf}] eq $mainartikel) { $h[$index{"PREIS"}]=$mainartikel_preis; $h[$index{"BESTELLUNGSINFO"}]=$mainartikel_binfo; $h[$index{"ANR"}]=$mainartikel_anr; $input{"newNR_".$mdata[$index{"NR"}]}=$mainartikel_nr; $article_dat=join(';',@h); } } $d=$mainartikel.$ende; } } $input{"c"}=join('|',@d);$input{"c"}=~s/\)//g;$input{"c"}=~s/\(//g; # print "$mainartikel_preis";exit; } if ($f ne "GRUPPE") { $lfile=$datadirectory."search.txt"; $#slist=-1; push(@slist,$f,$c); $i=1; while ($input{"f$i"} ne "") { push(@slist,$input{"f$i"},$input{"c$i"}); $i++; } # open(f,">>$lfile"); # print f join(';',@slist,$dif)."\n"; # close(f); } &process_order; $global[$id_global_content]=$c; $global[$id_global_content]=~s/\\s/ /g; if ($input{"mliste"}==1) { $global[$id_global_content]="Merkliste"; @d=&read_data($datadirectory."merke.dat"); foreach $d (@d) { @f=split(/\;/,$d); if ($f[2] eq $user_daten[$uindex{"$user_login_field"}]) { $l{$f[3]}=$f[4]; } } $#article=-1; foreach $article_dat (@article_dat) { @afelder=split(/$trennzeichen/,$article_dat); if ($l{$afelder[$id_article_id]}==1) { push(@new_article_dat,$article_dat); } } } elsif ($aliste==1) { $global[$id_global_content]="Auftragsliste"; $#new_article_dat=-1; @al=&read_data($orderstat); foreach $al (@al) { @aliste_dat=split(/\;/,$al); if ($aliste_dat[2] eq $user_daten[$uindex{"$user_login_field"}]) { $l{$aliste_dat[3]}=1; } } $#article=-1; foreach $article_dat (@article_dat) { @afelder=split(/$trennzeichen/,$article_dat); if ($l{$afelder[$id_article_id]}==1) { push(@new_article_dat,$article_dat); } } } else { $groupby=$input{"groupby"}; if ($input{"v"}=~/or/i) { $or_mode=1; } else { $or_mode=0; } $#new_article_dat=-1; $#search_c=-1; $i=""; do { $f=$input{"f$i"}; $cs=$input{"c$i"}; if ($f=~/^\>\=/) {$input{"c$i"}=">=".$cs;$input{"f$i"}=~s/^\>\=//;} elsif ($f=~/^\<\=/) {$input{"c$i"}="<=".$cs;$input{"f$i"}=~s/^\<\=//;} elsif ($f=~/^\>/) {$input{"c$i"}=">".$cs;$input{"f$i"}=~s/^\>//;} elsif ($f=~/^\/g; $cs=qq!$vor$treffer$hinter!; } push(@search_c,$cs); $i++; } while ($f ne ""); foreach $article_dat (@article_dat) { @afelder=split(/$trennzeichen/,$article_dat); $i=0; $co=0; $mo=0; $#this_term_ok=-1; do { $this_field_ok=0; if ($i>0) { $f=$input{"f$i"}; $cs=$search_c[$i]; $c=$input{"c$i"}; } else { $f=$input{"f"}; $cs=$search_c[0]; $c=$input{"c"}; } if ($f eq "OPTION8") {$f="OPT8";} if ($f eq "*OPTION8") {$f="*OPT8";} @felder=split(/\,/,$f); if ($input{"f"} ne "*NAME,*GRUPPE" && $input{"v"} ne "OR") { @terms = split(/\s+/, $cs); } else { $terms[0]=$cs; } $term_or_mode=0; $#is_a_not_term=-1; $q=0; foreach $terms (@terms) { if ($terms=~/^or$/i || $terms=~/^ODER$/i) { $term_or_mode=1; } if ($terms=~/^and$/i || $terms=~/^UND$/i) { $terms=""; } if ($terms=~/^-(.*)/) { $terms=$1; $is_a_not_term[$q]=1; } $q++; } $#this_term_ok=-1; foreach $felder (@felder) { if ($felder=~/^\*(.*)/) { $index=$index{"$1"}; if ($#terms==-1) { $this_field_ok=1; } $q=0; foreach $terms (@terms) { $suche=$terms; $suche=~s/\<_\>/ /g; if ($afelder[$index]=~/$suche/i) { if ($is_a_not_term[$q]==0) { $this_term_ok[$q]=1; } else { $this_term_ok[$q]=-1; } } elsif ($is_a_not_term[$q]==1) { if ($this_term_ok[$q]!=-1) { $this_term_ok[$q]=1; } } $q++; } } else { $this_field_ok=0; $index=$index{$f}; if ($c=~/^(\<\=|\>\=|\>|\<)/) { $v=$1; $vergleich=$c; $vergleich=~s/[\>\<\=]//g; if ($vergleich eq "") { $this_field_ok=1; } elsif ( ($afelder[$index]>$vergleich && $v eq '>') || ($afelder[$index]<$vergleich && $v eq '<') || ($afelder[$index]>=$vergleich && $v eq '>=') || ($afelder[$index]<=$vergleich && $v eq '<=') ) {$this_field_ok=1;} } elsif ($afelder[$index] eq $c || $c eq "") { $this_field_ok=1; } } } if ($#this_term_ok>=0) { # &abbruch($f.$article_dat.$or_mode); $this_field_ok=1; for ($zz=0;$zz<=$#terms;$zz++) { if ($this_term_ok[$zz]<=0) {$this_field_ok=0;} } if ($term_or_mode==1) { $this_field_ok=1; } } if ($this_field_ok==1) {$co++} $mo++; $i++; $f=$input{"f$i"}; $c=$input{"c$i"}; } while ($f ne ""); if ($co==$mo || ($co>=1 && $or_mode==1)) { if (defined($index{"NICHT_LIEFERBAR"})==0 || $afelder[$index{"NICHT_LIEFERBAR"}]!=1) { if ($groupby eq "" || $group{$afelder[$index{$groupby}]}==0) { $article_dat=~s/\r//g; push(@new_article_dat,$article_dat); } if ($groupby ne "") { $group{$afelder[$index{$groupby}]}=1; $input{"COUNT_$afelder[$index{$groupby}]"}++; } } } } } if ($t eq "") {$t=$template_basket} @basket=&format_warenkorb; @article=@new_article_dat; if ($input{"t"}=~/datenbanksitemap/) { @d=split(/\;/,$article[0]); if ($d[$index{"NAME"}]=~/Makita/ || $d[$index{"BESTELLUNGSINFO"}]=~/Makita/) { $dnr=$d[$index{"NR"}]; &redirect("https://baudienst.shop/?post_type=product&s=$dnr");exit; } if ($d[$index{"NAME"}]=~/Hymer/ || $d[$index{"BESTELLUNGSINFO"}]=~/Hymer/) { $dnr=$d[$index{"NR"}]; &redirect("https://baudienst.shop/?post_type=product&s=$dnr");exit; } if ($d[$index{"NAME"}]=~/Eibenstock/ || $d[$index{"BESTELLUNGSINFO"}]=~/Eibenstock/) { $dnr=$d[$index{"NR"}]; &redirect("https://baudienst.shop/?post_type=product&s=$dnr");exit; } } if ($groupby ne "") { $groupby_index=$index{$groupby}; @article= sort by_groupby @article; } if ($input{"sort"} ne "") { $old_index=$groupby_index; $groupby_index=$index{$input{"sort"}}; @article= sort by_groupby @article; $groupby_index=$old_index; } if ($input{"nsort"} ne "") { $old_index=$groupby_index; $groupby_index=$index{$input{"nsort"}}; @article= sort by_groupby_num @article; $groupby_index=$old_index; } if ($oinput{"c"}=~/\((.*?)\)/) { $mysort=$1; @mysort=split(/\|/,$mysort); $i=0; foreach $mysort (@mysort) { $j=$i; $mysort=~s/\{.*\}//g; $mysort=~s/\-.*\-//g; while (length($j)<4) {$j="0".$j;} $sindex{$mysort}=$j; $i++; } $fsort=$input{"f"};$fsort=~s/\*//g; foreach $article (@article) { @d=split(/\;/,$article); $article=$sindex{$d[$index{"$fsort"}]}.";".$article; } @article=sort @article; foreach $article (@article) { @d=split(/\;/,$article); shift(@d); $article=join(";",@d); } } $input{"c"}=$oinput{"c"}; if ($start ne "") { if ($start eq "0") { srand(); $start=int(rand( int($#article/$dif)+1)); $start=$start*$dif+1; } if ($start>0) { $end=$start+$dif-1; if ($end-1>$#article) {$end=$#article+1} } $hit_menu=""; $input{"hcounter"}=$input{"hcounter"}+1; for ($page=1;$page<=int($#article/$dif)+1;$page++) { $page_start=($page-1)*$dif+1; if ($page_start==1 && $#article==-1) {$page_start=0;} $page_end=$page_start+$dif-1; if ($page_end>$#article+1) {$page_end=$#article+1} $query=$global[$id_global_query]; $query=~s/start=(\d+)/start=$page_start/g; $query=~s/hcounter=(\d+)//g; if ($page_start!=$start) { $hit_menu.=qq![$page_start - $page_end] !; } else { $hit_menu.=qq![$page_start - $page_end] !; } } # PAGE BACK ermitteln if ($start>1) { $vorher=$start-$dif; if ($vorher<1) {$vorher=1} $query=$global[$id_global_query]; $query=~s/start=(\d+)/start=$vorher/g; $global[$id_global_hit_back]=$shoppl."?".$query; } if ($start+$dif<=$#article+1) { $forward=$start+$dif; $query=$global[$id_global_query]; $query=~s/start=(\d+)/start=$forward/g; $global[$id_global_hit_forward]=$shoppl."?".$query; } $global[$id_global_hit_start]=$start; $global[$id_global_hit_end]=$end; $global[$id_global_hit_max]=$#article+1; $global[$id_global_hit_menu]=$hit_menu; $#new_article=-1; for ($i=$start-1;$i<=$end-1;$i++) { push(@new_article,$article[$i]); } if ($global[$id_global_hit_start]>$global[$id_global_hit_end]) { $global[$id_global_hit_start]=$global[$id_global_hit_end]; } @article=@new_article; } foreach $article_dat (@article) { @d=split(/\;/,$article_dat); $#do=-1; $only_one=0; @causwahl=split(/ \/ /,$d[$index{"AUSWAHL"}]);$cchange=0; foreach $causwahl (@causwahl) { if ($causwahl=~/\~/) { ($copt,$canr)=split(/\~/,$causwahl); @d2=split(/\;/,$adata{$canr}); if ($copt==1) {$hstring=$d2[$index{"NAME"}];$hpreis=&format_sum($d2[$index{"PREIS"}]);} if ($copt==2) {$hstring=$d2[$index{"BESTELLUNGSINFO"}];$hpreis=&format_sum($d2[$index{"PREIS"}]);} if ($copt==3) {$hstring=$d2[$index{"BESCHREIBUNG"}];$hpreis=&format_sum($d2[$index{"PREIS"}]);} # print "$causwahl -$copt-$canr- = $hpreis $hstring
\n"; $causwahl="$hstring (+$hpreis EUR)";$cchange=1; } } if ($cchange==1) { $d[$index{"AUSWAHL"}]=join(' / ',@causwahl);} for ($i=1;$i<=20;$i++) { if (defined($index{"OPTION$i"}) && length($d[$index{"OPTION$i"}])>=2) { if ($d[$index{"OPTION$i"}]!~/\#/ && $d[$index{"OPTION$i"}]!~/\~/) { @d2=split(/\;/,$adata{$d[$index{"OPTION$i"}]}); push(@do,$d2[$index{"NAME"}]." ".&format_sum($d2[$index{"GEWICHT"}])."kg ".&format_sum($d2[$index{"PREIS"}])); } if ($d[$index{"OPTION$i"}]=~/\#(dif|op|)([a-z]|)/) { $optnr=$2; $opttype=$1; #print "*$optnr*$opttype
\n"; $hopt=$d[$index{"OPTION$i"}];$hopt=~s/\#.*//g; $d[$index{"OPTION$i"}]=~s/(\d+|)\#(dif|op|)([a-z]|)//g; # print $d[$index{"OPTION$i"}]." *$optnr*
\n"; @d2=split(/\;/,$adata{$d[$index{"OPTION$i"}]}); # print qq!= $d2[$index{"NR"}] - $d2[$index{"BESTELLUNGSINFO"}]
\n!; if ($opttype ne "op") {$d2[$index{"PREIS"}]=$d2[$index{"PREIS"}]-$d[$index{"PREIS"}];} if ($opttype eq "op") {$d2[$index{"PREIS"}]=$d2[$index{"PREIS"}];} @hhelp=split(//,$hopt); $hstring="#".$opttype.$optnr.$d2[$index{"NR"}]." "; foreach $hhelp (@hhelp) { $hstring.=" "; if ($hhelp==1) {$hstring.=$d2[$index{"NAME"}];} if ($hhelp==2) {$hstring.=$d2[$index{"BESTELLUNGSINFO"}];} if ($hhelp==3) {$hstring.=$d2[$index{"BESCHREIBUNG"}];} } push(@do,$hstring." ".&format_sum($d2[$index{"GEWICHT"}])."kg ".&format_sum($d2[$index{"PREIS"}])); } if ($d[$index{"OPTION$i"}]=~/\~/) { $only_one=1; $hopt=$d[$index{"OPTION$i"}];$hopt=~s/\~.*//g; $d[$index{"OPTION$i"}]=~s/(\d+|)\~//g; @d2=split(/\;/,$adata{$d[$index{"OPTION$i"}]}); $d2[$index{"PREIS"}]=$d2[$index{"PREIS"}]-$d[$index{"PREIS"}]; @hhelp=split(//,$hopt); $hstring="#".$d2[$index{"NR"}]." "; foreach $hhelp (@hhelp) { $hstring.=" ";$hstringgrund.=" "; if ($hhelp==1) {$hstring.=$d2[$index{"NAME"}];$hstringgrund.=$d[$index{"NAME"}];} if ($hhelp==2) {$hstring.=$d2[$index{"BESTELLUNGSINFO"}];$hstringgrund.=$d[$index{"BESTELLUNGSINFO"}];} if ($hhelp==3) {$hstring.=$d2[$index{"BESCHREIBUNG"}];$hstringgrund.=$d[$index{"BESCHREIBUNG"}];} } if ($#do==-1) { push(@do,$hstringgrund." ".&format_sum(0)); } push(@do,$hstring." ".&format_sum($d2[$index{"GEWICHT"}])."kg ".&format_sum($d2[$index{"PREIS"}])); } } } if ($only_one==0) {$d[$index{"OPTIONEN"}]=join(', ',@do);} if ($only_one==1) {$d[$index{"OPTIONEN"}]=join('~ ',@do);} #print "Content-Type: text/html\n\n"; #print $d[$index{"OPTIONEN"}]."
\n"; $article_dat=join(';',@d); } $check_no_variants.="$no_variants,"; $sd=-1; foreach $article (@article) { $sd++; @fields=split(/\;/,$article); while ($#fields<$max_keyw) {push(@fields,"");} if ($fields[$index{"PREIS"}]!~/ \* /) { $pp=&format_sum($fields[$index{"PREIS"}]); $input{"js$sd"}.=qq!document.aform$process_id.field$sd.value='$pp EUR';document.aform$process_id.cfield$sd.value='$pp'\n!; } $war_schon=0; for ($i=0;$i<=$#keyw;$i++) { if ($fields[$i]=~/ \/ / && $check_no_variants!~/$keyw[$i]\,/) { @auswahl=split(/ \/ /,$fields[$i]); $binfo{$keyw[$i]."-".$fields[$id_article_id]}.=qq!!; if ($fields[$index{"OPTTEXT"}] ne "") { $binfo{$keyw[$i]."-".$fields[$id_article_id]}.=qq!!; $binfo{$keyw[$i]."-".$fields[$id_article_id]}.=qq!!; } $fields[$id_article_binfo].=qq! !; $binfo{$keyw[$i]."-".$fields[$id_article_id]}.=qq! !; $binfoleer{$keyw[$i]}=qq!!; $article=join(';',@fields); } elsif ($fields[$i]=~/ \* / && $check_no_variants!~/$keyw[$i]\,/) { @auswahl=split(/ \* /,$fields[$i]); @pauswahl=split(/ \* /,$fields[$id_article_costs]); if ($i!=$id_article_costs && $i!=$id_article_id) { $binfo{$keyw[$i]."-".$fields[$id_article_id]}.=qq!!; for ($j=0;$j<=$#auswahl;$j++) { $binfo{$keyw[$i]."-".$fields[$id_article_id]}.=qq!!; $fields[$id_article_binfo].=qq!!; } $binfo{$keyw[$i]."-".$fields[$id_article_id]}.=qq! !; $fields[$id_article_binfo].=qq! !; $article=join(';',@fields); } } } } if ($cdmodul_ist_aktiv==1) { return @article; } if ($input{"redirect"} ne "") { &redirect($input{"redirect"}); exit; } if ($input{"mailcheck"}==1) { $check_mail=$input{"email"}; @old_mail=&read_data($datadirectory."checkmail.txt"); if ($old_mail[0] ne $check_mail) { open(f,">".$datadirectory."checkmail.txt"); print f "$check_mail\n"; close(f); use LWP; require LWP::Protocol::http; require LWP::UserAgent; my $ua = new LWP::UserAgent 'lwp-spider/0.1', '$email', 30;; # create a useragent to test $timeout=5;if ($input{"timeout"}>0) {$timeout=$input{"timeout"};} $ua->timeout($timeout); $uurl = "https://shop.baudienst.com/shop/validator.php?email=".$check_mail; my $request = new HTTP::Request('GET', $uurl); $response = $ua->request($request, undef, undef); $content = $response->as_string; $content=~/\n\n/; $content=$'; @lc=split(/\n/,$content); $email_gueltig=$lc[$#lc]; if ($email_gueltig eq "E-Mail ungueltig") {&abbruch("Ihre E-Mail ist ungültig. Bitte kontrollieren Sie die E-Mail $check_mail.");} } } $line=join("\n",&read_data("$tempdirectory$t.htm")); # Vorlage einlesen if ($line eq "") { $line=join("\n",&read_data("$tempdirectory$t.txt")); # Vorlage einlesen } $fline=' '; if ($t=~/^s/) {$line=~s/<\/head>/$fline<\/head>/;$line=~s/<\!DOCTYPE(.*?)>/<\!DOCTYPE html>/;} if ($t=~/^a(\d+)/) {$line=$fline.$line;$line=~s/<\!DOCTYPE(.*?)>/<\!DOCTYPE html>/;} $line=~s//[INCLUDE=.\/template\/temwk.htm]/g; $line=~s//[INCLUDE=..\/hws-temp\/$1]/g; $line=~s//[INCLUDE=.\/template\/$2.htm]/g; while ($line=~//) { $myurl=$1;$davor=$`;$danach=$'; $res=&get_url("https://shop.baudienst.com/cgi-bin/hws/bilderrandom.php?$myurl"); $line=$davor.$res.$danach; } # $line=~s/https/http/g; $line=&parse_line($line); # Variablen ersetzen # $line=~s/his-webshop.pl/zhis-webshop.pl/g; if ($input{"noctype"}!=1) { # if ($input{"t"} ne "") { $cookie_time=gmtime(time+60*60*6); # Cookie für 6 Std. aktivieren $cookie_name="userid"; $cookie_value=$global[$id_global_userid]; print "Set-Cookie: $cookie_name=$cookie_value; expires=$cookie_time;path=/;domain=baudienst.com\n"; print "Content-type: text/html; charset=iso-8859-1\n\n"; } $line=~s/\<\\>/\]/g; $line=~s/_gaq.push\(\);/ _gaq.push(['_setAccount', 'UA-490295-1']);/; $line=~s/_gaq.push\(\);/ _gaq.push(['_trackPageview']);/; $line=~s/ByTagName\('script'\);/ByTagName('script')[0];/; # $line=~s/\&\&/\&/g; $line=~s/www\.shop\./shop./g; # $line=~s/http:\/\/www.shop.baudienst.com/https:\/\/www.shop.baudienst.com/g; # $line=~s/https:\/\/shop.baudienst.com/https:\/\/www.shop.baudienst.com/g; $line=~s///g; print $line; # ausgeben exit; } sub get_url { local($url)=@_; use LWP; require LWP::Protocol::http; require LWP::UserAgent; my $ua = new LWP::UserAgent 'lwp-spider/0.1', '$email', 30;; # create a useragent to test $timeout=5;if ($input{"timeout"}>0) {$timeout=$input{"timeout"};} $ua->timeout($timeout); $uurl =$url; my $request = new HTTP::Request('GET', $uurl); $response = $ua->request($request, undef, undef); $content = $response->as_string; $content=~/\n\n/; $content=$'; } sub create_gutschein { srand(time); @l=split(//,$gutschein_code_chars); $gutschein=""; for ($i=1;$i<=$gutschein_code_length;$i++) { $gutschein.=substr($gutschein_code_chars,rand($#l+1),1); } return $gutschein; } sub get_gutschein_pass { local($nr)=@_; @this=(-1,0,0,0); @g=&read_data($datadirectory."gutschein_db.txt"); foreach $g (@g) { @d=split(/\;/,$g); if ($d[0] eq $nr) { @this=@d; } } return @this; } sub add_gutschein_to_db { local($gutschein_nr,$gutschein_wert,$gutschein_pw,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit,$gutschein_aktionvon,$gutschein_aktionbis,$gutschein_aktiontyp,$gutschein_laufzeit,$gutschein_ab,$gutschein_frei)=@_; @new_g=($gutschein_nr,$gutschein_wert,$gutschein_pw,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit,$gutschein_aktionvon,$gutschein_aktionbis,$gutschein_aktiontyp,$gutschein_laufzeit,$gutschein_ab,$gutschein_frei); open(f,">>$datadirectory"."gutschein_db.txt"); print f join(';',@new_g)."\n"; close(f); } sub change_gutschein_status { local($adminpass,$gutschein_nr,$new_bezahlt,$new_ausgeloest)=@_; if ($adminpass ne $admin_passwort) {&abbruch("Falsches Passwort");} ($pass,$wert,$bezahlt,$ausgeloest)=&get_gutschein_pass($gutschein_nr); if ($pass eq "-1") {&abbruch("Die Gutschein Nr. $gutschein_nr existiert nicht.")} if ($new_bezahlt ne "") {$bezahlt=$new_bezahlt} if ($new_ausgeloest ne "") {$ausgeloest=$new_ausgeloest} &add_gutschein_to_db($gutschein_nr,$wert,$pass,$bezahlt,$ausgeloest); print "Content-type: text/html\n\n"; print "Der Status wurde neu gesetzt."; exit; } # ======================================================================================== # Redirect auf eine beliebige URL # ========================================================================================== sub redirect { $url=$_[0]; print "Status: 302 Found\n"; print "Location: $url\n"; print "URI: <$url>\n"; print "Content-type: text/html\r\n\r\n"; } # ========================================================================================== # Gibt die "Vielen Dank!" Seite aus, nachdem eine Bestellung abgeschickt wurde. # Falls eine Redirect-Bedingung definiert wurde und diese zutrifft, wird ein Redirect # ausgeführt. Dies können Sie nutzen, um die Bestellung auf ein SSL-Bestellformular # für Kreditkarten-Daten weiterzuleiten. # Beispiel: #
# # ... #
# ========================================================================================== sub output_order { # Bestandverwaltung! if ($bestand_verwaltung==1) { foreach $basket_dat (@basket_dat) { @f=split(/\;/,$basket_dat); $stock{$f[$id_article_id]}=$f[$id_article_quantity]; } foreach $article_dat (@article_dat) { @f=split(/$trennzeichen/,$article_dat); $f[$index{"STOCK"}]-=$stock{$f[$id_article_id]}; if ($f[$index{"STOCK"}]<0) { $f[$index{"STOCK"}]=0; } $article_dat=join(';',@f); } &save_array($articledat,"article",@article_dat); } $rurl=$input{"redirect_url"}; if ($rurl ne "") { @rtypes=split(/\;/,$rurl); foreach $rtypes (@rtypes) { @condition_url=split(/\-\>/,$rtypes); @keyvalue=split(/\=/,$condition_url[0]); $key=$keyvalue[0]; $value=$keyvalue[1]; if ($input{"$key"} eq $value) { &redirect($condition_url[1]); exit; } } } if ($input{"t"} ne "") { $template_send=$input{"t"}; } $line=join("\n",&read_data("$tempdirectory$template_send.htm")); # Vorlage einlesen $line=&parse_line($line); # Varibalen ersetzen $line=~s/\<\\>/\]/g; $line=~s/http:\/\/www.shop.baudienst.com/https:\/\/www.shop.baudienst.com/g; $line=~s/https:\/\/shop.baudienst.com/https:\/\/www.shop.baudienst.com/g; # $line=~s/https/http/g; print "Content-type: text/html\n\n"; print $line; # ausgeben unlink "$basketdat"; # Warenkorb löschen } # ========================================================================================== # Liefert Menge zurück # ========================================================================================== sub get_menge { local($menge)=@_; # String einlesen $menge=~s/\,/\./g; # Bei der Menge "," durch "." ersetzen if ($menge>0) {return $menge}; # Falls Wert > 0, Wert zurückgeben if (defined($menge) && $menge==0) { # Falls Menge=0 if ($menge ne "" && $menge ne "0") {return 1;} # Falls String nicht "0" oder leer, 1 zurückgeben } return 0; # sonst 0 zurückgeben } sub add_basket2 { local($nr,$name,$preis,$menge)=@_; if ($global[$id_global_userid]==9999) {return;} if ($menge==0) {$menge=1;} foreach $basket_dat (@basket_dat) { @f=split(/\;/,$basket_dat); if ($f[$index{"NAME"}] eq $name) {return;} } $#basket_new=-1; @basket_new=&get_article_data($nr); # Daten aus Datenbank holen $basket_new[$index{"NR"}]=$nr; # $basket_new[$index{"NAME"}]=$name; $basket_new[$id_article_quantity]=$menge; $basket_new[$index{"PREIS"}]=$preis; $basket_new=join(';',@basket_new); push(@basket_dat,$basket_new); @basket=@basket_dat; } # ========================================================================================== # Aktualisiert den Warenkorb. # ========================================================================================== sub add_basket { local($i)=@_; local($#basket_new)=-1; # Leeren Warenkorb-Array erstellen @basket_new=&get_article_data($input{"id$i"}); # Daten aus Datenbank holen $onr=$basket_new[$index{"NR"}]; if ($input{"NR_new".$basket_new[$index{"NR"}]} ne "") { for ($j=0;$j<=$#keyw;$j++) { if ($input{"${keyw[$j]}_multipreis$basket_new[$id_article_id]"} ne "") { $mpreisnr=$input{"${keyw[$j]}_multipreis$basket_new[$id_article_id]"}; } } @auswahl=split(/ \* /,$input{"NR_new".$basket_new[$index{"NR"}]}); $new_nr=$auswahl[$mpreisnr]; @basket_new=&get_article_data($new_nr); } $basket_new[$id_article_costs]=&format_sum($basket_new[$id_article_costs]); $basket_new[$index{"GEWICHT"}]=&format_sum($basket_new[$index{"GEWICHT"}]); $gestrichen=$basket_new[$index{"GESTRICHEN"}];$gestrichen=~s/\r//g;$no_loop=0; $ersatzartikel_liste=$basket_new[$index{"NUMMER"}]."
\n"; while (length($gestrichen)>2 && $gestrichen!~/gestrichen/ && $gestrichen!~/lager/i && $no_loop<4) { @basket_new=&get_article_data($gestrichen); $wantnr=$input{"wantnr_".$input{"id$i"}}; $ersatzartikel_liste.=$basket_new[$index{"NUMMER"}]."
\n"; if ($basket_new[$index{"NR"}] eq "") { $absender=$email;$empfaenger=$email;$subject="Fehler zu Ersatz-Artikel";$mailtext="\n\nDatenbankfehler Ersatzartikel
\n$wantnr
\n$ersatzartikel_liste\n\n"; &send_email($absender,$empfaenger,$subject,$mailtext); @basket=&format_warenkorb; &abbruch("Datenbankfehler Ersatzartikel
$wantnr
$ersatzartikel_liste Bitte melden Sie das Problem/den Fehler!"); } $gestrichen=$basket_new[$index{"GESTRICHEN"}];$gestrichen=~s/\r//g; $no_loop++; } if ($no_loop==4) {&abbruch("Fehler: Der Artikel kann nicht bestellt werden.");} if ($gestrichen=~/gestrichen/i) { $wantnr=$input{"wantnr_".$input{"id$i"}}; if ($wantnr ne "") { $absender=$email;$empfaenger=$email;$subject="Fehler zu Ersatz-Artikel";$mailtext="\n\nDatenbankfehler Ersatzartikel
\n$wantnr
\n$ersatzartikel_liste\n\n"; &send_email($absender,$empfaenger,$subject,$mailtext); &abbruch("Datenbankfehler Ersatzartikel
$wantnr
$ersatzartikel_liste Bitte melden Sie das Problem/den Fehler!"); } &abbruch("Fehler: Der Artikel kann nicht bestellt werden."); } if ($input{"BESTELLUNGSINFO_new".$basket_new[$index{"NR"}]} ne "") { $basket_new[$index{"BESTELLUNGSINFO"}]=$input{"BESTELLUNGSINFO_new".$basket_new[$index{"NR"}]}; } if ($input{"PREIS_new".$basket_new[$index{"NR"}]} ne "") { $basket_new[$index{"PREIS"}]=$input{"PREIS_new".$basket_new[$index{"NR"}]}; } if ($input{"OPTION_select".$onr}=~/(\d+)(\.|\,)(\d+) EUR/) { #print "Content-Type: text/html\n\n"; #print $input{"OPTION_select".$basket_new[$index{"NR"}]};exit; $#new_e=-1; @e=split(/\, /,$input{"OPTION_select".$onr}); foreach $e (@e) { if ($e=~/\#(dif|)([a-z]|)(\d+)/) { $new_nr=$3; @basket_new=&get_article_data($new_nr); # Daten aus Datenbank holen } else { $e=~s/\#(op|)([a-z]|)//g; push(@new_e,$e); } } $input{"OPTION_select".$new_nr}=join(', ',@new_e); } if ($#basket_new==-1) { &abbruch(qq!Der Artikel $input{"id$i"} existiert nicht (mehr).!); } if ($basket_new[$index{"STOCK"}]<$input{"quantity$i"} && $bestand_verwaltung==1 && $fehlermeldung_bei_bestand_von_null==1) { &abbruch(qq!Sie möchten die Menge $input{"quantity$i"} des Artikels $basket_new[$index{"NR"}] bestellen, wir haben zur Zeit aber nur einen Bestand von $basket_new[$index{"STOCK"}] verfügbar.

Wenn Sie sich besonders für diesen Artikel interessieren, kontaktieren Sie uns bitte per Mail.!); } if ($basket_new[$index{"VPME"}]>$input{"quantity$i"}) { $s='

'; foreach $key (sort(keys %input)) { if ($key ne "Nr".$basket_new[$index{"NR"}] && $key ne "Nr".$basket_new[$index{"NR"}].".x" && $key ne "Nr".$basket_new[$index{"NR"}].".y") { $s.= qq!!; } } $s.=qq!!; $s.=qq!
!; $s.="
"; &abbruch("Die Mindestbestellmenge (Verkaufsmengen-Einheit) für den Artikel ".$basket_new[$index{"NAME"}]." beträgt ".$basket_new[$index{"VPME"}].".
Soll der Artikel mit der Menge ".$basket_new[$index{"VPME"}]." in den Warenkorb gelegt werden?
\n$s"); } if ($basket_new[$index{"VPME"}]>0 && $input{"quantity$i"}%$basket_new[$index{"VPME"}]>0) { $neue_menge=(int($input{"quantity$i"}/$basket_new[$index{"VPME"}])+1)*$basket_new[$index{"VPME"}]; $s='
'; foreach $key (sort(keys %input)) { if ($key ne "Nr".$basket_new[$index{"NR"}] && $key ne "Nr".$basket_new[$index{"NR"}].".x" && $key ne "Nr".$basket_new[$index{"NR"}].".y") { $s.= qq!!; } } $s.=qq!!; $s.=qq!
!; $s.="
"; &abbruch("Die Verkaufsmengen-Einheit für den Artikel ".$basket_new[$index{"NAME"}]." beträgt ".$basket_new[$index{"VPME"}].".
Soll der Artikel mit der Menge ".$neue_menge." in den Warenkorb gelegt werden?
\n$s"); } $basket_new[$id_article_quantity]=0; # zum vergleichen $basket_new[$id_article_costs]=~s/\,/\./g; # Beim Preis "," durch "." ersetzen if ($basket_new[$id_article_costs]=~/\?/) { @p=split(/\ /,$basket_new[$id_article_costs]); @pq=split(/\?/,$p[0]); if ($input{"quantity$i"}<$pq[1]) {$input{"quantity$i"}=$pq[1];} } $basket_new[$id_article_quantity]=$input{"quantity$i"}; # Menge zuweisen $basket_new[$id_article_quantity]=~s/\,/\./g; # Bei der Menge "," durch "." ersetzen foreach $keyw (@keyw) { if (defined($input{"${keyw}_select$basket_new[$id_article_id]"})) { if ($input{"${keyw}_select$basket_new[$id_article_id]"}=~/REQUIRED/) { $r=$input{"${keyw}_select$basket_new[$id_article_id]"};$r=~s/(.*?)_//g; &abbruch("Bitte treffen Sie auf der Artikelseite eine Auswahl zum Artikel
". $basket_new[$index{"NAME"}].":
$r"); } $basket_new[$index{$keyw}]=$input{"${keyw}_select$basket_new[$id_article_id]"}; $basket_new[$index{$keyw}]=~s/\s\/\s/\//g; } } for ($j=0;$j<=$#keyw;$j++) { if ($input{"${keyw[$j]}_multipreis$basket_new[$id_article_id]"} ne "") { $mpreisnr=$input{"${keyw[$j]}_multipreis$basket_new[$id_article_id]"}; foreach $basket_new (@basket_new) { if ($basket_new=~/ \* /) { @auswahl=split(/ \* /,$basket_new); $basket_new=$auswahl[$mpreisnr] } } } } $eanz=0; @e=split(/\, /,$basket_new[$index{"OPTION"}]); foreach $e (@e) { if ($e=~/\#(dif|op|)([a-z]|)/) { $opttyp=$1;$optnr=$2; if ($opttyp ne "" && $optnr eq "") {next;} if ($optnr ne "") { $eanz{$optnr}++; if ($eanz{$optnr}>1) {&abbruch("Fehler: Bitte wählen Sie nur eine der mit dem Zeichen # markierten Optionen aus.");} } } } if ($input{"ANR_new".$basket_new[$index{"NR"}]} ne "") { @auswahl=split(/ \* /,$input{"ANR_new".$basket_new[$index{"NR"}]}); $basket_new[$index{"NUMMER"}]=$auswahl[$mpreisnr]; } foreach $keyw (@keyw) { if ($input{$keyw."_new".$basket_new[$index{"NR"}]} ne "") { @auswahl=split(/ \* /,$input{$keyw."_new".$basket_new[$index{"NR"}]}); $basket_new[$index{"$keyw"}]=$auswahl[$mpreisnr]; } } #print "Content-Type: text/html\n\n"; #print "*".$basket_new[$index{"AUSWAHL"}]."
\n"; if ($basket_new[$index{"AUSWAHL"}]=~/\(\+(\d+)(\.|\,)(\d+) EUR\)/) { # $basket_new[$index{"AUSWAHL"}]=$`; $aufpreis="$1.$3"; $basket_new[$index{"PREIS"}]+=$aufpreis; #print "Content-Type: text/html\n\n"; #print "-$aufpreis-";exit; } if ($basket_new[$index{"OPTION"}]=~/(\d+)(\.|\,)(\d+) EUR/) { $basket_new[$index{"OPTION"}]=~s/\#(dif|op|op[a-z]|)//g; @e=split(/\, /,$basket_new[$index{"OPTION"}]); foreach $e (@e) { $d=$e; if ($d=~/(-|)(\d+)(\.|\,)(\d+) EUR/) { $basket_new[$index{"PREIS"}]+="$1$2$3$4"; } if ($d=~/(-|)(\d+)(\.|\,)(\d+)kg/) { $basket_new[$index{"GEWICHT"}]+="$1$2$3$4"; } $basket_new[$index{"OPTION"}]=~s/(-|)(\d+)(\.|\,)(\d+) EUR//; $basket_new[$index{"OPTION"}]=~s/(-|)(\d+)(\.|\,)(\d+)kg//; $basket_new[$index{"OPTION"}]=~s/ \,/,/g; $basket_new[$index{"OPTION"}]=~s/^op(\d+)/$1/g; } } $basket_new=join(';',@basket_new); $gef=0; foreach $basket_dat (@basket_dat) { @bf=split(/\;/,$basket_dat); $old_quantity=$bf[$id_article_quantity]; $bf[$id_article_quantity]=$basket_new[$id_article_quantity]; if (join(';',@bf) eq join(';',@basket_new)) { $gef=1; if ($mengen_im_warenkorb_addieren==1) { $bf[$id_article_quantity]=$basket_new[$id_article_quantity]+$old_quantity; } $basket_dat=join(';',@bf); } } if ($gef==0) { push(@basket_dat,$basket_new); push(@basket_dat_new,$basket_new); } } sub process_order { local($i); local(@keys,@values,@field); if ($process_order_ok==1) {return;} $process_order_ok=1; $#keys=-1; $#values=-1; foreach $keyval (@keyval) { # Array keval durchlaufen @field=split(/\;/,$keyval); # Felder ermitteln push(@keys,$field[0]); # key in Array keys speichern push(@values,$field[1]); # value in Array values speichern } $#basket_new=-1; for ($i=0;$i<=$#basket_dat;$i++) { $input{"wk_quantity$i"}=~s/\,/\./g; if ($input{"wk_delete$i"} ne "" || $input{"wk_delete$i.x"} ne "") { $input{"wk_quantity$i"}=0; } if ($input{"wk_quantity$i"} ne "" || $input{"ok$i"} ne "") { @basket_fields=split(/\;/,$basket_dat[$i]); if ($basket_fields[$id_article_quantity]!=$input{"wk_quantity$i"}) { if ($input{"wk_quantity$i"} ne "") { # GUTSCHEIN if ($basket_fields[$index{"NR"}]=~/^GE_/ && $input{"wk_quantity$i"}>0 ) { &abbruch("Die Menge eines Gutscheins kann nur in 0 geändert werden."); } if ($basket_fields[$index{"VPME"}]>0 && $input{"wk_quantity$i"} >0) { if ($input{"wk_quantity$i"}<$basket_fields[$index{"VPME"}]) { $input{"wk_quantity$i"}=$basket_fields[$index{"VPME"}]; $input{"MENGE_ANGEPASST"}= $input{"wk_quantity$i"};$input{"MENGE_VPME"}= $basket_fields[$index{"VPME"}]; } if ($input{"wk_quantity$i"}%$basket_fields[$index{"VPME"}]>0) { $input{"wk_quantity$i"}=(int($input{"wk_quantity$i"}/$basket_fields[$index{"VPME"}])+1)*$basket_fields[$index{"VPME"}]; $input{"MENGE_ANGEPASST"}= $input{"wk_quantity$i"};$input{"MENGE_VPME"}= $basket_fields[$index{"VPME"}]; } } # GUTSCHEIN if ($basket_fields[$index{"STOCK"}]=~/GE_/ && $input{"wk_quantity$i"}>0 ) { &abbruch("Die Menge eines Gutscheins kann nur in 0 geändert werden."); } if ($basket_fields[$index{"STOCK"}]<$input{"wk_quantity$i"} && $bestand_verwaltung==1 && $fehlermeldung_bei_bestand_von_null==1) { &abbruch(qq!Sie möchten die Menge $input{"wk_quantity$i"} des Artikels $basket_fields[$index{"NR"}] bestellen, wir haben zur Zeit aber nur einen Bestand von $basket_fields[$index{"STOCK"}] verfügbar.

Wenn Sie sich besonders für diesen Artikel interessieren, kontaktieren Sie uns bitte per Mail.!); } $basket_fields[$id_article_quantity]=$input{"wk_quantity$i"}; $basket_dat[$i]=join(';',@basket_fields); } } if ($input{"ok$i"} ne "") { foreach $keyw (@keyw) { if ($input{"${keyw}_select$i"} ne "") { $basket_fields[$index{$keyw}]=$input{"${keyw}_select$i"}; $basket_fields[$index{$keyw}]=~s/\s\/\s/\//g; } } for ($j=0;$j<=$#keyw;$j++) { if ($input{"${keyw[$j]}_multipreis$i"} ne "") { $mpreisnr=$input{"${keyw[$j]}_multipreis$i"}; foreach $basket_fields (@basket_fields) { if ($basket_fields=~/ \* /) { @auswahl=split(/ \* /,$basket_fields); $basket_fields=$auswahl[$mpreisnr] } } } } } if ($input{"wk_quantity$i"}!=0 || $input{"wk_quantity$i"} eq "") {push(@basket_new,join(';',@basket_fields))}; } else {push(@basket_new,$basket_dat[$i]);} } @basket_dat=@basket_new; if ($input{"change"}==0) { # falls Aufruf NICHT vom Warenkorb kommt (keine Änderung, nur NEUE Artikel) $i=0; ########################################################### ## Überprüfung einer Übergabe durch: ## oder ## ## for ($k=0;$k<=$#keys;$k++) { # Alle Keys durchlaufen if ($keys[$k]=~/^NrAddWk$/) { $input{"id$i"}=$values[$k]; $input{"quantity$i"}=1; if ($input{"MengeAddWk"} ne "") {$input{"quantity$i"}=$input{"MengeAddWk"}} &add_basket($i); $i++; } elsif ($keys[$k]=~/^Nr(.*)$/) { # Falls Key = NrXXX $nr_field=$1; if ($nr_field=~/\.y$/) { # Bei Übergabe durch "type=image" .y nicht berücksichtigen $menge=0; } elsif ($nr_field=~/\.x$/ && $war_schon{$nr_field}==0) { # Bei Übergabe durch "type=image" .x = Menge 1 $nr_field=~s/\.x$//; $menge=1; } elsif ($war_schon{$nr_field}==0) { $menge=&get_menge($values[$k]); # Menge aus Value ermitteln } if ($menge>0 && $war_schon{$nr_field}==0) { # Falls Menge>0 $war_schon{$nr_field}=1; $input{"id$i"}=$nr_field; # Neuer Warenkorbeintrag mit NrXXX $input{"quantity$i"}=$menge; # und Menge &add_basket($i); $i++; # nächster freier Platz } } } ## ########################################################### ########################################################### ## Überprüfung einer Übergabe durch: ## ## ### for ($k=0;$k<=$#keys;$k++) { # Alle Keys durchlaufen if ($keys[$k]=~/^Def(.*)$/) { # Falls Key = DefXXX $defnr=$1; # DefNr ermitteln $artnr=$values[$k]; # ArtikelNummer ist der Value $menge=&get_menge($input{"Menge$defnr"}); # Menge ermitteln if ($menge>0) { # Falls Menge>0 $input{"id$i"}=$artnr; # Neuer Warenkorbeintrag $input{"quantity$i"}=$menge; # Menge if ($input{"AUSWAHL1"} ne "") { $input{"AUSWAHL_select$artnr"}=$input{"AUSWAHL1"}; } &add_basket($i); $i++; # nächster freier Platz } } } ## ########################################################### } $i=0; while ($input{"id$i"} ne "") { # Alle Einträge des WKs durchlaufen, um $i auf einen freien Eintrag zu setzen $i++; } ########################################################### ## Manuelle Eingabe erlauben! ## $z=0; do { $#basket_new=-1; if ($z==0) {$nr="";} else {$nr=$z} for ($k=0;$k<=$#keys;$k++) { # Alle Keys durchlaufen if ($keys[$k]=~/add_(.*)$nr$/) { # Falls Key = add_XXXX $basket_new[$index{$1}]=$values[$k]; $basket_new[$index{"MENGE"}]=1; } } if ($basket_new[$index{"MENGE"}]>0 || $basket_new[$index{"MENGE"}] ne "") { if ($basket_new[$index{"MENGE"}]==0) {$basket_new[$index{"MENGE"}]=1;} $gef=0; foreach $basket_dat (@basket_dat) { @bf=split(/\;/,$basket_dat); $old_quantity=$bf[$id_article_quantity]; $bf[$id_article_quantity]=$basket_new[$id_article_quantity]; if (join(';',@bf) eq join(';',@basket_new)) { $gef=1; if ($mengen_im_warenkorb_addieren==1) { $bf[$id_article_quantity]=$basket_new[$id_article_quantity]+$old_quantity; } $basket_dat=join(';',@bf); } } if ($gef==0) { push(@basket_dat,join(';',@basket_new)); push(@basket_dat_new,join(';',@basket_new)); } } $z++; } while (defined($input{"add_MENGE$nr"}) || $z<=1); ## ########################################################### if ($check_process_order==1) {return;} &save_array($basketdat,$basketdat,@basket_dat); # Warenkorb speichern @basket=@basket_dat; @basket=&format_warenkorb; @l=&read_data($tempdirectory."basket_config.txt"); $l=join("\n",@l); $l2=&parse_line($l); @basket=@basket_dat; foreach $basket (@basket) { @d=split(/\;/,$basket); $input{"WARENKORB_".$d[$index{"NR"}]}=1; } } # ========================================================================================== # Liest und formatiert die Variablen fuer den Warenkorb # ========================================================================================== sub format_warenkorb { local($is_mail,$divident)=@_; local($index); if ($divident==0) {$divident=1;} local(@article); # Artikel Array erstellen $global[$id_global_sumall]=0; # Bestellsume auf "0" setzen $i=0; # Zähler auf 0 setzen $#article=-1; # Artikel Array leeren $check_no_variants.="$no_variants,"; $only_gutschein=1;$wk_ohne_gutschein=0; foreach $basket_dat (@basket_dat) { @f=split(/\;/,$basket_dat); if ($f[$index{"NR"}]!~/^G_(.*)/) { $only_gutschein=0; } if ($f[$index{"NR"}]!~/^GE_(.*)/) { $wk_ohne_gutschein+= &format_sum($f[$id_article_quantity]*&format_sum($f[$id_article_costs]/$divident)); } } foreach $basket_dat (@basket_dat) { # Warenkorbeinträge durchlaufen @fields=split(/\;/,$basket_dat); # Felder ermitteln $#article_fields=-1; # Leeren Artikel Array erstellen foreach $keyw (@keyw) { $index=$index{$keyw}; if ($fields[$index]=~/ \/ / && $check_no_variants!~/$keyw\,/) { if ($is_mail==1) { $fausgabe= qq!Die Bestelldaten können noch nicht verschickt werden, da Sie noch Angaben im Warenkorb zu mindestens einem Artikel festlegen müssen. Im Warenkorb können Sie dazu in einer!; $fausgabe.=qq! Auswahlbox die Einstellung auswählen. Anschliessend drücken Sie bitte jeweils auf den OK-Button neben der Auswahlbox.!; &abbruch($fausgabe); } @auswahl=split(/ \/ /,$fields[$index]); $article_fields[$index]=qq! !; } elsif ($fields[$index]=~/ \* / && $check_no_variants!~/$keyw\,/) { if ($is_mail==1) { $fausgabe= qq!Die Bestelldaten können noch nicht verschickt werden, da Sie noch Angaben im Warenkorb zu mindestens einem Artikel festlegen müssen. Im Warenkorb können Sie dazu in einer!; $fausgabe.=qq! Auswahlbox die Einstellung auswählen. Anschliessend drücken Sie bitte jeweils auf den OK-Button neben der Auswahlbox.!; &abbruch($fausgabe); } @auswahl=split(/ \* /,$fields[$index]); if ($index!=$id_article_costs && $index!=$id_article_id) { $article_fields[$index]=qq! !; } else {$article_fields[$index]=$auswahl[0];} } else { $article_fields[$index]=$fields[$index]; } } $article_fields[$id_article_quantity]=$fields[$id_article_quantity]; # Menge if ($fields[$index{"NR"}]!~/^GE_/) { $article_fields[$id_article_newquantity].=qq!!; # Menge als Text Feld } else { $article_fields[$id_article_newquantity]=$fields[$id_article_quantity]; # Menge } if ($fields[$id_article_costs]=~/\?/) { @p=split(/\ /,$fields[$id_article_costs]); foreach $p (@p) { @pq=split(/\?/,$p); if ($fields[$id_article_quantity]>=$pq[1]) { $article_fields[$id_article_sum]= &format_sum($fields[$id_article_quantity]*&format_sum($pq[0]/$divident)); } } } else { $fields[$index{"GEWICHT"}]=&format_sum($fields[$index{"GEWICHT"}]); $fields[$id_article_costs]=&format_sum($fields[$id_article_costs]); $article_fields[$id_article_sum]=&format_sum($fields[$id_article_quantity]*&format_sum($fields[$id_article_costs]/$divident)); # Summe berechnen } $global[$id_global_sumall]+=$article_fields[$id_article_sum]; # Gesamtbestellsumme push(@article,join(';',@article_fields)); # Neuen Artikel einfügen $i++; } if ($dif_porto==1) { # Falls untersch. Versandk.art if ($input{"porto"} ne "") { # Falls Versandk.art angegeben $porto=$input{"porto"}; # Versandk.art einlesen &save_array($portodat,"porto",$porto); # ... und speichern } $gef=0; # Flag gefunden auf 0 sezten foreach $porto_daten (@porto_daten) { # Alle Versandk.arten durchlaufen @pdaten=split(/\;/,$porto_daten); if ($pdaten[0] eq $porto) { # Falls zur Zeit ausgewählte Versandk.art $gef=1; # Flag gefunden auf 0 setzen last; } } if ($gef==0) {@pdaten=split(/\;/,$porto_daten[0]);} # Falls nicht gefunden, Versandk. der 1.Zeile nehmen $porto=$pdaten[0]; $this_porto=$pdaten[1]; $global[$id_global_versandkfreiab]=$pdaten[2]; $global[$id_global_versandkosten]=&format_sum($this_porto/$divident); # sonst Versandkosten = Porto $ptext=""; foreach $porto_daten (@porto_daten) { @pdaten=split(/\;/,$porto_daten); if ($pdaten[0] eq $porto) {$selec="SELECTED "} else {$selec=""} $ptext.= qq!

!; $spdf.=qq!!; $lastpdf="pdfgallery${gid}";$dptitel="Prospekte";$lastpdftitel=$dptitel; } else { # $spdf.=qq! !; $spdf.=qq!!; } } } } if (&exist("../..".$fpdf) && $fpdf ne "") { # $spdf.=qq!

PDF PDF-Katalog


!; $pdfcount++;$hpdf=$fpdf;$hpdf=~s/\/bilder\/artikel\///g; $spdf.=qq!!; } $sl="verfügbare Detailbilder";if ($pdfcount>0 || 1==1) {$sl='Detailbilder';} if ($filenamed ne "") { $snew=qq!$spdf

!; if ($fancybox==1) {$snew.=qq!

Vergrößern $sl
!;} if ($pdfcount>0) {$snew.=qq!
Prospekte
!;} $snew.=qq!!.$array[$index]."

"; $array[$index]=$snew; } if ($filenamed eq "" && $lastpdf ne "") {$array[$index]=qq!
$spdf
$lastpdftitel Vergrößern
!.$array[$index].qq!!;} #$array[$index]="TEST"; $xy=1; do { $xok=0;$xz=$xy+1; if (&exist("../../bilder/pic/".$array[$index{"NUMMER"}]."_$xy.jpg")) {$filenamed="/bilder/pic/".$array[$index{"NUMMER"}]."_$xy.jpg";$array[$index].=qq!!;$xok=1; } if (&exist("../../bilder/pic/".$array[$index{"NR"}]."_$xy.jpg")) {$filenamed="/bilder/pic/".$array[$index{"NR"}]."_$xy.jpg";$array[$index].=qq!!;$xok=1; } if (&exist("../../bilder/pic/".$array[$index{"NUMMER"}]."_$xy.gif")) {$filenamed="/bilder/pic/".$array[$index{"NUMMER"}]."_$xy.gif";$array[$index].=qq!!;$xok=1; } if (&exist("../../bilder/pic/".$array[$index{"NR"}]."_$xy.gif")) {$filenamed="/bilder/pic/".$array[$index{"NR"}]."_$xy.gif";$array[$index].=qq!!;$xok=1; } if (&exist("../../bilder/pic/".$array[$index{"NUMMER"}]."_$xy.png")) {$filenamed="/bilder/pic/".$array[$index{"NUMMER"}]."_$xy.png";$array[$index].=qq!!;$xok=1; } if (&exist("../../bilder/pic/".$array[$index{"NR"}]."_$xy.png")) {$filenamed="/bilder/pic/".$array[$index{"NR"}]."_$xy.png";$array[$index].=qq!!;$xok=1; } $xy++; } while ($xok==1 || $xy<5); $pdfok{$array[$index{"NR"}]}=$array[$index]; # $array[$index]=qq!

Vergrößern verfügbare Detailbilder


!.$array[$index].""; } if ($fancybox==1 && ($input{"t"} eq "a1")) { # $array[$index]=qq!

Vergrößern verfügbare Detailbilder


!.$array[$index].""; } #NewWindow_pdf3(URL) } elsif ($pichttpnr==0) { if ($pichttpnr==0 && $pdfok{$array[$index{"NR"}]} ne "") { $array[$index]=$pdfok{$array[$index{"NR"}]}; } else { $fpdf="../../bilder/pic/".$array[$index{"NUMMER"}].".pdf"; $spdf="";$pdfcount=0;$gid=$array[$index{"NR"}]; if ($#pdfartikel==-1) { @pdfartikel=&read_data("/www/fairzone.de/web/media/cgi-bin/suche/pdfartikel/pdfsuche.txt"); @pdfartikel2=&read_data("/www/fairzone.de/web/media/cgi-bin/suche/pdfersatzteil/pdfsuche.txt"); foreach $pdfartikel2 (@pdfartikel2) { @dp=split(/\|/,$pdfartikel2);$dp[5]=1; push(@pdfartikel,join('|',@dp)); } } $mynr1=$array[$index{"NUMMER"}];$mynr2=$array[$index{"NR"}]; foreach $pdfartikel (@pdfartikel) { @dp=split(/\|/,$pdfartikel);$pdfpath="prospekt";if ($dp[5]==1) {$pdfpath="ersatzteilliste";} $dptitel="PDF-Katalog";if ($dp[2] ne "") {$dptitel=$dp[2];} if ($pdfcount<=50) { if (($dp[4]=~/(^| )$mynr1($| )/ && $mynr1 ne "") || ($dp[4]=~/(^| )$mynr2($| )/ && $mynr2 ne "")) { $pdfcount++; if ($pdfcount==1) { # $spdf.=qq!PDF!; # $spdf.=qq! $dptitel

!; # $spdf=qq!

PDF $dptitel


!; $lastpdf="pdfgallery${gid}"; $spdf=qq!
Prospekte
!; $spdf.=qq!!; } else { # $spdf.=qq! !; $spdf.=qq!!; } } } } if (&exist("../..".$fpdf)) {$spdf.=qq!

PDF PDF-Katalog


!;} if ($spdf ne "") {$spdf=qq!

$spdf


!;} $array[$index]=$spdf; $pdfok{$array[$index{"NR"}]}=$array[$index]; } } } else { if ($array_typ==1 || $array_typ==2) { if ($code=~/BINFO(\d+)/) {$array_typ=1;} if ($repeat_mode==1) {@array=split(/\;/,$article[$count[$array_typ]])} if ($repeat_mode==2) {@array=split(/\;/,$basket[$count[$array_typ]])} if ($repeat_mode==3) {@array=split(/\;/,$basket_dat_new[$count[$array_typ]])} if ($repeat_mode==4) { @oarray=split(/\;/,$article[$count[1]]); @array=split(/\;/,$article[$count[1]]); @array=split(/ \* /,$array[$index]); $array[$index]=$array[$count[2]]; } }; if ($repeat_mode==5) { if ($#partner_daten!=-1) { @array=@partner_daten; } else { @array=&get_partner_data($input{"G_pid"}); } $index=$pindex{"$code"}; } if ($array_typ==5) {@array=@global;}; if ($array_typ==6) {@array=split(/\;/,$keyval[$count[$array_typ]])}; if ($repeat_mode==8) {@array=split(/\|/,$order_list[$count[$array_typ]])}; } if ($code=~/^(U_(.*))/ && $repeat_mode!=5) { $fieldname=$1; if ($fieldname=~/\=/) { @kv_ausgabe=split(/\-\>/,$fieldname); @kv=split(/\=/,$kv_ausgabe[0]); if ($user_daten[$uindex{$kv[0]}] eq $kv[1]) { $array[$index]=$kv_ausgabe[1]; $uindex{$code}=1; } else { $array[$index]=""; } } else { $array[$index]=$user_daten[$uindex{$1}]; } } if ($code=~/^(P_(.*))/) { $fieldname=$1; if ($fieldname=~/\=/) { @kv_ausgabe=split(/\-\>/,$fieldname); @kv=split(/\=/,$kv_ausgabe[0]); if ($partner_daten[$pindex{$kv[0]}] eq $kv[1]) { $array[$index]=$kv_ausgabe[1]; $uindex{$code}=1; } else { $array[$index]=""; } } else { $array[$index]=$partner_daten[$pindex{$1}]; } } if ($code eq "PREIS") { $array[$index]=&format_sum($array[$index]); } if ($code eq "OPTIONEN") { if ($array[$index]=~/\~/) { @d=split(/\~/,$array[$index]); $this="";$dc=0;$radiocount++; $this.=qq!!; $array[$index]=$this; } elsif ($array[$index]=~/\:/) { @d=split(/\:/,$array[$index]); $this="";$dc=0; foreach $d (@d) { $radiocount++; $dc++;if ($dc==1) {$dsel=" checked";} else {$dsel="";} $np=0.00; if ($d=~s/\-(\d+)(\.|\,)(\d+)/-$1$2$3 EUR/g) { $np=qq!-$1.$3!; } elsif ($d=~s/(\d+)(\.|\,)(\d+)/ $1$2$3 EUR/g) { $np=qq!$1.$3!; } $dout=$d;$dout=~s/\#(\d+) //g; $this.=qq! $dout
!; $input{"js$count[$array_typ]"}.=qq!if (document.getElementById('radio$process_id$radiocount').checked) {document.aform$process_id.field!.$count[$array_typ].qq!.value=formatPrice(parseFloat(document.aform$process_id.cfield!.$count[$array_typ].qq!.value)!.qq!+(!.&format_sum($np).qq!))+' EUR';}\n!; } $array[$index]=$this; } else { @d=split(/\,/,$array[$index]); $this=""; $input{"js$count[$array_typ]"}.=qq!var anz=0;\n!; %warschon_opt=(); foreach $d (@d) { $optnr=""; if ($d=~/\#(dif|op|)([a-z]|)/) { $optnr=$2; if ($warschon_opt{$optnr}==0) { $warschon_opt{$optnr}=1; $input{"js$count[$array_typ]"}.=qq!var anz$optnr=0;\n!; } } $elecount++; $np=0.00; if ( $d=~s/\-(\s|)(\d+)(\.|\,)(\d+)$/-$2$3$4 EUR/g) { $np=qq!-$2.$4!; } elsif ($d=~s/(\s|)(\d+)(\.|\,)(\d+)$/ $2$3$4 EUR/g) { $np=qq!$2.$4!; } $dout=$d;$dout=~s/\#(dif|op|)([a-z]|)(.*?) //g;$dout=~s/(\d+)(\.|\,)(\d+)kg//g; $this.=qq! $dout
\n!; if ($d=~/\#(dif|op|)([a-z]|)(.*?) /) { $optnr=$2; if ($optnr ne "") { $input{"js$count[$array_typ]"}.=qq!if (document.getElementById('check$process_id$elecount').checked && anz$optnr==1) {alert("Bitte nur eine Option auswählen.");document.getElementById('check$process_id$elecount').checked=false;}\n!; $input{"js$count[$array_typ]"}.=qq!if (document.getElementById('check$process_id$elecount').checked && anz$optnr==0) {document.aform$process_id.field!.$count[$array_typ].qq!.value=formatPrice(parseFloat(document.aform$process_id.field!.$count[$array_typ].qq!.value)+($np))+' EUR';anz$optnr=anz$optnr+1;}\n!; } if ($optnr eq "") { $input{"js$count[$array_typ]"}.=qq!if (document.getElementById('check$process_id$elecount').checked) {document.aform$process_id.field!.$count[$array_typ].qq!.value=formatPrice(parseFloat(document.aform$process_id.field!.$count[$array_typ].qq!.value)+($np))+' EUR';anz$optnr=anz$optnr+1;}\n!; } } else { $input{"js$count[$array_typ]"}.=qq!if (document.getElementById('check$process_id$elecount').checked && anz==0) {document.aform$process_id.field!.$count[$array_typ].qq!.value=formatPrice(parseFloat(document.aform$process_id.field!.$count[$array_typ].qq!.value)+($np))+' EUR';}\n!; } } #print "Content-Type: text/html\n\n"; #print $input{"js$count[$array_typ]"};exit; $array[$index]=$this; } } if ($code eq "MPREIS") { $array[$index]=$array[$index{"PREIS"}]; } if ($code eq "OPREIS") { if ($oarray[$index{"OPTIONEN"}]=~/\:/) { @d=split(/\:/,$oarray[$index{"OPTIONEN"}]); $d=$d[0]; $d=~s/(\d+)(\.|\,)(\d+)/+$1$2$3 EUR/g; $np=qq!$1.$3!; if ( $d=~s/\-(\d+)(\.|\,)(\d+)/-$1$2$3 EUR/g) { $np=qq!-$1.$3!; } $array[$index]=&format_sum(&format_sum($array[$index{"PREIS"}])+$np) } else { $array[$index]=&format_sum($array[$index{"PREIS"}]); } } if ($code eq "APREIS") { @p=split(/\ /,$array[$id_article_costs]); foreach $p (@p) { @pq=split(/\?/,$p); if ($array[$id_article_quantity]>=$pq[1]) { $preis=&format_sum($pq[0]); } } if ($array[$id_article_quantity]==0) { @pq=split(/\?/,$p[0]); $preis=&format_sum($pq[0]); } $array[$index]=&format_sum($preis); } if ($index{"$code"} eq "" && $uindex{"$code"} eq "" && $pindex{"$code"} eq "" ) { $array[$index]=$input{"$code"}; } if ($code eq "KEYWORDS") { $k=""; foreach $key (sort(keys %input)) { if ($key=~/G_KEYWORD_(.*)/) { $kw=$input{$key}; $key=$1; $k.=qq!$kw
\n!; } } $array[$index]="$k"; } if ($code=~/BINFO(\d+)/) { $array_typ=1; @array=split(/\;/,$article[$count[$array_typ]]); $nr=$1; $binfo=$array[$id_article_binfo]; @binfo=split(/\!; $array[$index]=$s; } if ($code eq "TELEFON1_FIELD" || $code eq "TELEFON2_FIELD" || $code eq "FAX1_FIELD" || $code eq "FAX2_FIELD") { $style="";$myfield=$code;$myfield=~s/_FIELD//g;$nfield=$myfield; if ($code!~/TELEFON1/) {$style='style="background-color:#E5E5E5"';} if ($input{"$nfield"} ne "") {@parts=split(/ /,$input{"$nfield"},3);} if ($input{"$nfield"} eq"") {@parts=split(/ /,$user_daten[$uindex{"U_$nfield"}],3);} if ($user_daten[$uindex{"U_${nfield}PRE"}] ne "" && $parts[1] eq "") {$parts[0]=$user_daten[$uindex{"U_${nfield}PRE"}];} if ($user_daten[$uindex{"U_${nfield}VORWAHL"}] ne "" && $parts[1] eq "") {$parts[1]=$user_daten[$uindex{"U_${nfield}VORWAHL"}];} if ($user_daten[$uindex{"U_${nfield}REST"}] ne "" && $parts[2] eq "") {$parts[2]=$user_daten[$uindex{"U_${nfield}REST"}];} $val=$parts[2];if ($val eq "" && $code eq "TELEFON1_FIELD") {$val="Rufnummer";} $s=qq!!; $array[$index]=$s; } if ($code eq "TELEFON1PRE_FIELD" || $code eq "TELEFON2PRE_FIELD" || $code eq "FAX1PRE_FIELD" || $code eq "FAX2PRE_FIELD") { $style="";$myfield=$code;$myfield=~s/_FIELD//g;$nfield=$myfield;$nfield=~s/PRE//g; if ($code!~/TELEFON1/) {$style='background-color:#E5E5E5';} @telcodes=("","+34","+41","+42","+49","+1","+1868","+20","+212","+213","+216","+218","+220","+221","+222","+223","+224","+225","+226","+227","+228","+229","+230","+231","+232","+233","+234","+235","+236","+237","+240","+241","+242","+243","+244","+245","+246","+248","+249","+250","+251","+252","+253","+254","+255","+256","+257","+258","+260","+261","+263","+264","+265","+266","+267","+268","+269","+27","+284","+290","+291","+297","+298","+299","+30","+31","+32","+33","+34","+350","+351","+352","+353","+354","+355","+356","+357","+358","+359","+36","+370","+371","+372","+373","+374","+375","+379","+380","+381","+382","+385","+386","+387","+389","+39","+40","+41","+420","+421","+423","+43","+44","+46","+47","+48","+49","+500","+501","+502","+503","+505","+506","+507","+509","+51","+52","+5399","+54","+55","+56","+57","+58","+591","+592","+593","+595","+597","+598","+599","+60","+61","+63","+64","+65","+66","+673","+674","+675","+676","+677","+678","+679","+680","+681","+682","+683","+686","+687","+688","+690","+691","+692","+7","+809","+81","+82","+84","+850","+852","+853","+856","+880","+886","+91","+92","+93","+94","+95","+960","+961","+962","+963","+964","+965","+966","+967","+968","+971","+973","+974","+975","+976","+977","+98","+993","+994","+995","+996","+998"); if ($input{"$nfield"} ne "") {@parts=split(/ /,$input{"$nfield"},3);} if ($input{"$nfield"} eq"") {@parts=split(/ /,$user_daten[$uindex{"U_$nfield"}],3);} if ($user_daten[$uindex{"U_${nfield}PRE"}] ne "" && $parts[1] eq "") {$parts[0]=$user_daten[$uindex{"U_${nfield}PRE"}];} if ($user_daten[$uindex{"U_${nfield}VORWAHL"}] ne "" && $parts[1] eq "") {$parts[1]=$user_daten[$uindex{"U_${nfield}VORWAHL"}];} if ($user_daten[$uindex{"U_${nfield}REST"}] ne "" && $parts[2] eq "") {$parts[2]=$user_daten[$uindex{"U_${nfield}REST"}];} $val=$parts[0];if ($val eq "" && 1==0) {$val="+49";} $s=qq!!; $array[$index]=$s; } if (($code eq "GESAMTSUMME" || $code eq "GESAMTSUMME_VERSAND" || $code eq "VERSANDKOSTEN") && $divident==0) { &format_warenkorb(0,1); $array[$index{"GESAMTSUMME_VERSAND"}]=$global[$id_global_sumallv]; $array[$index{"GESAMTSUMME"}]=$global[$id_global_sumall]; $array[$index{"VERSANDKOSTEN"}]=$global[$id_global_versandkosten]; } if ($divident!=0) { if ($code eq "SUMME") { if ($array[$id_article_costs]=~/\?/) { @p=split(/\ /,$array[$id_article_costs]); foreach $p (@p) { @pq=split(/\?/,$p); if ($array[$id_article_quantity]>=$pq[1]) { $preis=&format_sum($pq[0]/$divident); } } $array[$index]=&format_sum($preis*$array[$id_article_quantity]); } else { $array[$index]=&format_sum($array[$index{"PREIS"}]/$divident); $array[$index]=$array[$index]*$array[$id_article_quantity]; $array[$index]=&format_sum($array[$index]); } } elsif ($code eq "GESAMTSUMME") { &format_warenkorb(0,$divident); $array[$index]=$global[$id_global_sumall]; } elsif ($code eq "GESAMTSUMME_VERSAND") { &format_warenkorb(0,$divident); $array[$index]=$global[$id_global_sumallv]; } elsif ($code eq "VERSANDKOSTEN") { &format_warenkorb(0,$divident); $array[$index]=$global[$id_global_versandkosten]; } else { $array[$index]=&format_sum($array[$index]/$divident); } } if ($urlenc==1) {$array[$index]=&url_encode($array[$index]);} if ($cd==1) {$array[$index]=&cd_encode($array[$index]);} if ($cdname==1) {$array[$index]=&cdname_encode($array[$index]);} if ($klein==1) { $array[$index]=~ y/A-Z/a-z/; $array[$index]=~s/ /\-/g; } if ($first==1) { @a=split(/ \* /,$array[$index]); $array[$index]=$a[0]; } if ($html==1) { foreach $html_convert (@html_convert) { @d=split(/\=/,$html_convert); $array[$index]=~s/$d[0]/$d[1]/g; } } if ($textarea==1) { $array[$index]=~s/
/ /g; $array[$index] =~ s/<([^f\/])([^>]|\n)*>//g; } if ($code eq "NEXT_REPEAT") { $count[1]++; $count[2]++; $array[$index]=""; } if ($code eq "NEXT_INFO") { $count[2]++; $array[$index]=""; } if ($code=~/^INCLUDE\=(.*)/) { $include_src=$1; $lines=join("\n",&read_data($include_src)); $array[$index]=$lines; } if ($code=~/^INCLUDE_SCRIPT\=(.*)/) { $include_src=$1; if ($include_src=~/\?/) { @s=split(/\?/,$include_src); $include_src=$s[0]; $include_query=$s[1]; } $ENV{'QUERY_STRING'}="$include_query"; open(f,"$include_src |"); @include_lines=; close(f); $array[$index]=join("\n",@include_lines); $array[$index]=~s/Content-Type: text\/html//ig; } if ($left!=0 || $right!=0) {$array[$index]=&correct_length($array[$index],$left,$right);} if ($his_off==1 && $code ne "HIS_OFF") { $array[$index]="*+~$code~+*"; } $linesave=$vorher.$array[$index].$nachher; } } $linesave=~s/\*\+\~/[/g; $linesave=~s/\~\+\*/]/g; $linesave=~s/>/>/g; $linesave=~s/</>$datadirectory"."orderlog.txt"); print f ("-" x80)."\n"; print f join("\n",@b)."\n\n"; foreach $keyval (@keyval) { @f=split(/\;/,$keyval); if ($f[1] ne "") { print f $keyval."\n"; } } print f "\nBestellnummer;$global[$id_global_ordernr]\n"; print f "Bestellsumme;$HIS_SCRIPTendsumme\n\n"; close (f); @save_keyval=@keyval; foreach $save_keyval (@save_keyval) { $save_keyval=~ s/\cM\n/
/g; } open(f,">>$datadirectory"."orderlog$my.dat"); print f join('|',$datetime,$global[$id_global_ordernr],$global[$id_global_sumall],$global[$id_global_remotehost],$partner_provision,,$input{"G_pid"},join(';',@save_keyval),@basket)."\n"; # ^^ Platzhalter für ORDER_STATUS ! close(f); } # ========================================================================================== # Schickt Bestellungsmail an Kunde und Geschaeftsinhaber. # ========================================================================================== sub send_mail { @basket=&format_warenkorb(1); # Warenkorb einlesen # Ermittlung automatische Gutscheine per Mail $input{"GUTSCHEIN_MAIL"}=""; @g=&read_data($datadirectory."gutschein_db.txt"); @g=reverse(@g); foreach $g (@g) { ($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit,$gutschein_aktionvon,$gutschein_aktionbis,$gutschein_aktiontyp,$gutschein_laufzeit,$gutschein_ab,$gutschein_frei)=split(/\;/,$g); if ($gutschein_aktiontyp eq "0") { ($gtag,$gmonat,$gjahr)=split(/\./,$gutschein_aktionvon);if ($gjahr<100) {$gjahr+=2000;} $gtagevon=&jday($gmonat,$gtag,$gjahr)-$start_tage; ($gtag,$gmonat,$gjahr)=split(/\./,$gutschein_aktionbis);if ($gjahr<100) {$gjahr+=2000;} $gtagebis=&jday($gmonat,$gtag,$gjahr)-$start_tage; if ($gtagevon<=$now_tage && $gtagebis>=$now_tage && $global[$id_global_sumall]>= $gutschein_ab) { if ($input{"GUTSCHEIN_MAIL"} eq "") { $gutschein_aktiontyp=2;$gutschein_ausgeloest=0;$gutschein_nr=&create_gutschein; ($gsec,$gmin,$ghour,$gmday,$gmon,$gyear,$gwday,$gyday,$gisdst) = localtime(time+60*60*24*$gutschein_laufzeit); $gmon++;$gyear+=1900;$gyear-=2000; if (length($gmon)==1) {$gmon="0".$gmon;} if (length($gmday)==1) {$gmday="0".$gmday;} $gutschein_gueltigkeit="$gmday.$gmon.$gyear"; &add_gutschein_to_db($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit,$gutschein_aktionvon,$gutschein_aktionbis,$gutschein_aktiontyp,"","",$gutschein_frei); $input{"GUTSCHEIN_MAIL"}="Gutschein im Wert von ".&format_sum($gutschein_wert)." € netto - gültig bis zum $gutschein_gueltigkeit - GUTSCHEIN-CODE $gutschein_nr"; $input{"GUTSCHEIN_NR"}="$gutschein_nr"; $input{"GUTSCHEIN_WERT"}=&format_sum($gutschein_wert); $input{"GUTSCHEIN_GUELTIG"}="$gutschein_gueltigkeit"; $input{"GUTSCHEIN_TEXT"}=$gutschein_frei; } } } } # Name der Mail-Templates kann frei definiert werden, wenn Übergabe per Paramter erfolgt! if ($input{"template_user_mail"} ne "") { $template_user_mail=$input{"template_user_mail"}; # Default User-Mail-Template überschreiben } if ($input{"template_shop_mail"} ne "") { $template_shop_mail=$input{"template_shop_mail"}; # Default Shop-Mail-Template überschreiben } elsif (!&exist($tempdirectory.$template_shop_mail)) { $template_shop_mail=$template_user_mail; } if ($global[$id_global_sumall]<$global[$id_global_min_order] && $min_order_typ==1) { &abbruch("Die Bestellsumme von $global[$id_global_sumall] liegt unter der Mindest-Bestellsumme von $global[$id_global_min_order]."); } $kunde_email=$input{"email"}; # E-Mail auf korrekte Form testen $kunde_email=~s/^(\s+)//g;$kunde_email=~s/(\s+)$//g; if ($kunde_email!~/^([a-zA-Z0-9\-\.\_]+)@([a-zA-Z0-9\-\.\_]+\.[a-zA-Z]+)$/) { if ($kunde_email ne "") { # Falls keine leere Mail &abbruch(qq!Die E-Mail $kunde_email wurde in einer falschen Form oder unvollständig angegeben. Bitte kontrollieren Sie Ihren Eintrag im Feld E-Mail. Wenn Sie keine E-Mail haben, lassen Sie das Feld bitte komplett leer!); } } # Gutschein! foreach $basket_dat (@basket_dat) { @f=split(/\;/,$basket_dat); if ($f[$index{"NR"}]=~/GE_(.*)/) { $gutschein_nr=$1; ($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit)=&get_gutschein_pass($gutschein_nr); if ($gutschein_nr eq "-1") {&abbruch("Diese Gutschein Nr. existiert nicht.")} if ($gutschein_bezahlt==0) {&abbruch("Der Gutschein $gutschein_nr ist noch nicht bezahlt.")} if ($gutschein_ausgeloest>0) {&abbruch("Der Gutschein $gutschein_nr ist bereits ausgelöst.")} if ($global[$id_global_sumall]<$gutschein_ordermin) { &abbruch("Der Gutschein $gutschein_nr erfordert einen Mindestbestellwert von ".&format_sum($gutschein_ordermin)." EUR (im Warenkorb sind aktuell: ".&format_sum($global[$id_global_sumall])." EUR) . Bitte erhöhen Sie das Auftragsvolumen, oder entfernen Sie den Gutschein aus dem Warenkorb."); } } } foreach $basket_dat (@basket_dat) { @f=split(/\;/,$basket_dat); if ($f[$index{"NR"}]=~/GE_(.*)/) { $gutschein_nr=$1; ($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit)=&get_gutschein_pass($gutschein_nr); $gutschein_ausgeloest+=1; &add_gutschein_to_db($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin); } } @provision=&read_data($datadirectory."provision.txt"); foreach $provision (@provision) { @d=split(/\;/,$provision); $provi{$d[0]}=&format_sum($d[1]); $provi_days{$d[0]}=$d[2]; } $provision=0;$provision_days=999; foreach $basket_dat (@basket_dat) { @d=split(/\;/,$basket_dat); if ($provi{$d[$index{"NR"}]}>0) { $provision+=$provi{$d[$index{"NR"}]}; if ($provi_days{$d[$index{"NR"}]}<$provision_days) {$provision_days=$provi_days{$d[$index{"NR"}]};} } } if ($provision>0) { if ($provision_days==0) {$provision_days=30;} ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+60*60*24*$provision_days); $mon++;$year+=1900; if (length($mon)==1) {$mon="0".$mon;} if (length($mday)==1) {$mday="0".$mday;} $gutschein_nr=&create_gutschein; $gutschein_wert=$provision; $gutschein_pass=""; $gutschein_bezahlt=1; $gutschein_ausgeloest=0; # nur einmal einläsbar $gutschein_bestellt=time; $gutschein_absender=""; $gutschein_empfaenger=""; $gutschein_text=""; $gutschein_ordermin=""; $gutschein_gueltigkeit="$mday.$mon.$year"; $mailtext=join("\n",&read_data($tempdirectory."mail_provision.htm")); $mailtext=~s/\[GUTSCHEIN_WERT\]/$gutschein_wert/g; $mailtext=~s/\[GUTSCHEIN_GUELTIGKEIT\]/$gutschein_gueltigkeit/g; $mailtext=~s/\[GUTSCHEIN_NR\]/$gutschein_nr/g; $absender=$email; $subject="Ihr Gutschein!"; $empfaenger=$kunde_email; $bcc=$email; &add_gutschein_to_db($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit); &send_email($absender,$empfaenger,$subject,$mailtext,$bcc); } if ($input{"refnr"} ne "") {$fix_orderid=$input{"refnr"};} if ($fix_orderid eq "") { @o=&read_data("$datadirectory"."order.dat"); # Eindeutige Bestell-Nr. generieren $o[0]++; $global[$id_global_ordernr]=$o[0]; open(f,">$datadirectory"."order.dat"); print f "$o[0]"; close(f); } else { $global[$id_global_ordernr]=$fix_orderid; } $subject_user_mail=&parse_line($subject_user_mail); $subject_shop_mail=&parse_line($subject_shop_mail); if ($no_log==0) { &log_mail;} # Mail loggen open(f,">>$orderstat"); foreach $basket (@basket) { @d=split(/\;/,$basket); print f join(';',"$mday.$month.$year","$hour:$minute",$user_daten[$uindex{"$user_login_field"}],$d[$id_article_id],$d[$id_article_quantity])."\n"; } close(f); if ($#user_daten!=-1 && ($uindex{"U_LISTE"} ne "" || $uindex{"U_ORDERS"} ne "" || $uindex{"U_UMSATZ"} ne "")) { if ($uindex{"U_UMSATZ"} ne "") { $input{"U_UMSATZ"}=$user_daten[$uindex{"U_UMSATZ"}]+$global[$id_global_sumall]; } if ($uindex{"U_ORDERS"} ne "") { @orders=split(/\,/,$user_daten[$uindex{"U_ORDERS"}]); push(@orders,$global[$id_global_ordernr]); $input{"U_ORDERS"}=join(',',@orders); } if ($uindex{"U_GESCHENKELISTE"} ne "") { @liste=split(/\,/,$user_daten[$uindex{"U_GESCHENKELISTE"}]); foreach $basket (@basket) { @d=split(/\;/,$basket); if ($input{$d[$id_article_id]."_REMOVE_FROM_ALIST"} ne "") { push(@liste,$d[$id_article_id]); } } $input{"U_GESCHENKELISTE"}=join(',',@liste); } if ($uindex{"U_LISTE"} ne "") { @liste=split(/\,/,$user_daten[$uindex{"U_LISTE"}]); foreach $basket (@basket) { @d=split(/\;/,$basket); if ($l{$d[$id_article_id]}==0 && $input{$d[$id_article_id]."_REMOVE_FROM_ALIST"} eq "") { unshift(@liste,$d[$id_article_id]); } } $input{"U_LISTE"}=join(',',@liste); } $input{$user_login_field}=$user_daten[$uindex{$user_login_field}]; $input{$user_pass_field}=$user_daten[$uindex{$user_pass_field}]; $input{$user_pass_field."_VERIFY"}=$user_daten[$uindex{$user_pass_field}]; &edituser; } if ($kunde_email eq "") {$kunde_email=$email} # Falls Kunde keine E-Mail angegeben hat, als Ersatz E-Mail des Shopbetreibers wählen if ($sendmail_def==0) { &send_mail_using_sendmail($email,$kunde_email); # Mails mit Sendmail senden } else { &send_mail_using_smtp($email,$kunde_email); # Mails über SMTP Server verschicken } if ($input{"NEWSLETTER"} eq "ja" && $kunde_email ne "" && $kunde_email ne $email) { use LWP; require LWP::Protocol::http; require LWP::UserAgent; my $ua = new LWP::UserAgent 'lwp-spider/0.1', '$email', 30;; # create a useragent to test # $content="email=$kunde_email&emailconfirm=$kunde_email&attribute2=".&url_encode($input{"ANREDE"})."&attribute3=".&url_encode($input{"BESTELLER"})."&htmlemail=1&list[1]=signup&listname[1]=newsletter&VerificationCodeX=&subscribe=NEWSLETTER++ANMELDUNG"; # $uurl="https://news.baudienst.com/lists/?p=subscribe"; $content="email=$kunde_email&lastname=".&url_encode($input{"BESTELLER"})."&salutation=".&url_encode($input{"ANREDE"}); $uurl="https://shop.baudienst.com/cgi-bin/hws/newsletter_add.pl"; my $request = new HTTP::Request('POST', $uurl); $request->content_type('application/x-www-form-urlencoded'); $request->content($content); $response = $ua->request($request, undef, undef); $tcontent = $response->as_string; } } sub send_email { local($absender,$empfaenger,$subject,$mailtext,$bcc)=@_; if ($sendmail_def==0) { # open(MAIL, ">ma.txt"); open (MAIL, "|$mailprog -t") || &abbruch("Fehler beim Versenden der Mails über Sendmail"); print MAIL qq!To: $empfaenger\n!; print MAIL qq!From: $absender\n!; print MAIL qq!Content-Type: text/html\n!; if ($bcc ne "") { print MAIL qq!Bcc: $bcc\n!; } print MAIL qq!Subject: $subject\n\n!; print MAIL $mailtext."\n"; close (MAIL); } if ($sendmail_def!=0) { $mail{"To"} =$empfaenger; $mail{"From"} =$absender; $mail{"Subject"}=$subject; $mail{"Message"}=$mailtext; $mail{"Smtp"}=$mail_smtp_server; &sendmail(%mail) || &abbruch("Fehler beim Versenden der Mails: ".$sendmail_error); } } sub post_mail_to_script { local($script_url,$text)=@_; require LWP::Protocol::http; require LWP::UserAgent; $url=$script_url; my $ua = new LWP::UserAgent 'lwp-spider/0.1', '$email', 30; $uurl = new URI::URL($url); my $form = "mailtext=".&url_encode($text); my $request = new HTTP::Request('POST', $uurl, undef, $form); $request->content_type("application/x-www-form-urlencoded"); $request->content($form); $response = $ua->request($request, undef, undef); $content = $response->as_string; } sub hencode_utf8 { local($mys)=@_; use Encode; return encode('utf8', $mys); } sub encode_base64 { $res = ""; $eol = $_[1]; $eol = "\n" unless defined $eol; pos($_[0]) = 0; # ensure start at the beginning while ($_[0] =~ /(.{1,45})/gs) { $res .= substr(pack('u', $1), 1); chop($res); } $res =~ tr|` -_|AA-Za-z0-9+/|; # `# help emacs # fix padding at the end my $padding = (3 - length($_[0]) % 3) % 3; $res =~ s/.{$padding}$/'=' x $padding/e if $padding; # break encoded string into lines of no more than 76 characters each if (length $eol) { $res =~ s/(.{1,72})/$1$eol/g; } $res; } # ========================================================================================== # Bearbeitet die Mail-Daten # ========================================================================================== sub gen_boundary { $BCount=0; return ((int(time)).$BCount++); } # ========================================================================================== # Schickt Bestellungsmail an Kunde und Geschaeftsinhaber über Sendmail (UNIX-Prog.). # ========================================================================================== sub send_mail_using_sendmail { local($email,$kunde_email)=@_; local(@b)=@basket_dat; local(@b2)=@basket; $line=join("\n",&read_data("$tempdirectory$template_user_mail")); $line=&parse_line($line); $line_plain=join("\n",&read_data("$tempdirectory"."mail.txt")); $line_plain=&parse_line($line_plain); if ($kunde_email ne $email) { $boundary=&gen_boundary; open (MAIL, "|$mailprog -t -f onlineshop\@baudienst.com") || &abbruch("Fehler beim Versenden der Mails über Sendmail"); print MAIL qq!To: $kunde_email\n!; print MAIL qq!From: $email\n!; if ($bcc_mail_email ne ""){ print MAIL qq!Bcc: $bcc_mail_email\n!; } print MAIL qq!Subject: $subject_user_mail\n!; print MAIL "MIME-Version: 1.0\n"; print MAIL qq!Content-Type: multipart/alternative; boundary="$boundary"\n\n!; print MAIL "\nDies ist eine Multipart-Message im MIME Format.\n"; print MAIL "--".$boundary."\n"; print MAIL "Content-Type: text/plain; charset=iso-8859-1\n"; print MAIL $line_plain."\n\n"; print MAIL "--".$boundary."\n"; print MAIL "Content-Type: text/html; charset=iso-8859-1\n"; print MAIL $line."\n\n"; print MAIL "\n--".$boundary."--\n"; close (MAIL); } @basket_dat=@b; @basket=@b2; $line=join("\n",&read_data("$tempdirectory$template_shop_mail")); $line=&parse_line($line); if ($post_order_mail_to_script_url ne "") { &post_mail_to_script($post_order_mail_to_script_url,$line); } else { open (MAIL, "|$mailprog -t") || &abbruch("Fehler beim Versenden der Mails über Sendmail"); print MAIL qq!To: $email\n!; if ($bcc_email ne "") { print MAIL qq!Bcc: $bcc_email\n!; } print MAIL qq!From: $kunde_email\n!; print MAIL qq!Subject: $subject_shop_mail\n!; print MAIL qq!Content-Type: text/html\n\n!; select(MAIL); print $line."\n"; close (MAIL); } select(STDOUT); if ($input{"G_pid"} ne "") { @partner_daten=&get_partner_data($input{"G_pid"}); $line=join("\n",&read_data("$tempdirectory$template_partner_mail")); $line=&parse_line($line); open (MAIL, "|$mailprog -t") || &abbruch("Fehler beim Versenden der Mails über Sendmail"); print MAIL qq!To: $partner_daten[$pindex{"P_EMAIL"}]\n!; print MAIL qq!From: $email\n!; print MAIL qq!Subject: $subject_shop_mail\n\n!; select(MAIL); print $line."\n"; close (MAIL); select(STDOUT); } # Gutschein! foreach $basket_dat (@basket_dat) { @f=split(/\;/,$basket_dat); if ($f[$index{"NR"}]=~/G_(.*)/) { $gutschein_nr=$1; ($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit)=&get_gutschein_pass($gutschein_nr); $gutschein_bestellt=time; &add_gutschein_to_db($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit); $global[$id_global_bonus_nr]=$gutschein_nr; $global[$id_global_bonus_value]=$gutschein_wert; $global[$id_global_bonus_pass]=$gutschein_pass; $global[$id_global_bonus_email]=$gutschein_absender; $global[$id_global_bonus_message]=$gutschein_text; $line=join("\n",&read_data("$tempdirectory"."gutschein.txt")); $line=&parse_line($line); open (MAIL, "|$mailprog -t") || &abbruch("Fehler beim Versenden der Mails über Sendmail"); print MAIL qq!To: $gutschein_empfaenger\n!; print MAIL qq!BCC: $gutschein_absender\n!; print MAIL qq!From: $email\n!; print MAIL qq!Subject: $subject_gutschein_mail\n\n!; select(MAIL); print $line; close (MAIL); select(STDOUT); } } } # ========================================================================================== # Schickt Bestellungsmail an Kunde und Geschaeftsinhaber über SMTP-Server (für NT). # ========================================================================================== sub send_mail_using_smtp { local($email,$kunde_email)=@_; local(@b)=@basket_dat; $line=join("\n",&read_data("$tempdirectory$template_user_mail")); # Vorlage einlesen $line=&parse_line($line); # Variablen ersetzen if ($kunde_email ne $email) { $mail{"To"} =$kunde_email; $mail{"From"} =$email; $mail{"Subject"}=$subject_user_mail; $mail{"Message"}=$line; $mail{"Smtp"}=$mail_smtp_server; &sendmail(%mail) || &abbruch("Fehler beim Versenden der Mails: ".$sendmail_error); } @basket_dat=@b; $line=join("\n",&read_data("$tempdirectory$template_shop_mail")); # Vorlage einlesen $line=&parse_line($line); # Variablen ersetzen $mail{"To"} =$email; if ($bcc_email ne "") { $mail{"Bcc"}=$bcc_email; } $mail{"From"} =$email; $mail{"Subject"}=$subject_shop_mail; $mail{"Message"}=$line; $mail{"Smtp"}=$mail_smtp_server; &sendmail(%mail) || &abbruch("Fehler beim Versenden der Mails: ".$sendmail_error); if ($input{"G_pid"} ne "") { @partner_daten=&get_partner_data($input{"G_pid"}); $line=join("\n",&read_data("$tempdirectory$template_partner_mail")); # Vorlage einlesen $line=&parse_line($line); # Variablen ersetzen $mail{"To"} =$partner_daten[$pindex{"P_EMAIL"}]; $mail{"From"} =$email; $mail{"Subject"}=$subject_shop_mail; $mail{"Message"}=$line; $mail{"Smtp"}=$mail_smtp_server; &sendmail(%mail) || &abbruch("Fehler beim Versenden der Mails: ".$sendmail_error); } # Gutschein! foreach $basket_dat (@basket_dat) { @f=split(/\;/,$basket_dat); if ($f[$index{"NR"}]=~/G_(.*)/) { $gutschein_nr=$1; ($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit)=&get_gutschein_pass($gutschein_nr); $gutschein_bestellt=time; &add_gutschein_to_db($gutschein_nr,$gutschein_wert,$gutschein_pass,$gutschein_bezahlt,$gutschein_ausgeloest,$gutschein_bestellt,$gutschein_absender,$gutschein_empfaenger,$gutschein_text,$gutschein_ordermin,$gutschein_gueltigkeit); $global[$id_global_bonus_nr]=$gutschein_nr; $global[$id_global_bonus_value]=$gutschein_wert; $global[$id_global_bonus_pass]=$gutschein_pass; $global[$id_global_bonus_email]=$gutschein_absender; $global[$id_global_bonus_message]=$gutschein_text; $line=join("\n",&read_data("$tempdirectory"."gutschein.txt")); $line=&parse_line($line); $mail{"To"} =$global{"G_BonusEMAILTOBONUS$gutschein_nr"}; $mail{"Cc"} =$global{"G_BonusEMAILFROMBONUS$gutschein_nr"}; $mail{"From"} =$email; $mail{"Subject"}=$subject_gutschein_mail; $mail{"Message"}=$line; $mail{"Smtp"}=$mail_smtp_server; &sendmail(%mail) || &abbruch("Fehler beim Versenden der Mails: ".$sendmail_error); } } } # ========================================================================================== # Formatiert einen String fuer Geld-Ausgabe nach Tausender. # ========================================================================================== sub format_tausender { local($n)=@_; if ($n=~/ab/) { return $n; } $n=~s/\,/\./g; $n=sprintf("%.3f",$n);return $n; $n=~s/\.(\d)(\d)$/,$1$2/g; @m=split(//,$n); $n=""; $q=0; for ($ic=0;$ic<=$#m;$ic++) { $q++; $n=$m[$#m-$ic].$n; if ($m[$#m-$ic] eq ',') { $q=0; } elsif ($q==3 && $ic!=$#m) { $n=".".$n; $q=0; } } # $n=~s/\,(\d)(\d)/,-/g; return $n; } # ========================================================================================== # Formatiert einen String fuer Geld-Ausgabe. # ========================================================================================== sub format_sum { local($n)=@_; local(@p); local($pc); if ($n=~/\?/) { local($ausgabe)=""; @p=split(/\ /,$n); for ($pc=0;$pc<=$#p;$pc++) { @pq=split(/\?/,$p[$pc]); $pq[0]=&format_sum($pq[0]); if ($divident!=0) { $pq[0]=&format_sum($pq[0]/$divident); } $ausgabe.="(ab $pq[1]) $pq[0]"; if ($pc ne $#p) {$ausgabe.=" $acurrency
";} } $divident=0; return $ausgabe; } $n=~s/\,/\./g; return sprintf ("%.2f",$n); } sub url_encode { local($s)=@_; $s=~s|([+<>%"/?=&\näüöÄÜÖ])|sprintf("%%%02X",ord($1))|ge; # $s=~s/\:/%3A/g; $s=~tr/ /+/; return $s; } # ========================================================================================== # Liest Daten aus File. # ========================================================================================== sub read_data { local($filename)=$_[0]; local(@line); if (open(f,$filename)) { @line=; if ($#line!=-1) {$lastline=$line[$#line];} $lastline=~s/\n//; chop @line; if ($#line!=-1) {$line[$#line]=$lastline;} close(f); } else { if ($filename eq $kundedat) { &new($kundedat); } } if ($filename eq $articledat && $use_multiline_csv==1) { local($lines,$s,$davor,$danach); $lines=join("\n",@line); while ($lines=~/\;\"(.*?)\"\;/s) { $s=$&; $davor=$`; $danach=$'; $s=~s/\;\"//sg; $s=~s/\"\;//sg; $s=~s/\n/
/sg; $lines=$davor.';'.$s.';'.$danach; # print "Content-Type: text/html\n\n"; # print "$lines";exit; open(f,">$filename"); print f $lines; close(f); @line=split(/\n/,$lines); } } return @line; } # ========================================================================================== # Speichert Daten in File. # ========================================================================================== sub save_array { local($filename,$lock,@sp_array)=@_; if ($filename eq "") {return;} open(f,">$filename") || &abbruch("Die Datei $filename kann nicht geschrieben werden."); foreach $sp_array (@sp_array){ print f ("$sp_array\n"); } close(f); chmod 0766, "$filename"; } # ========================================================================================== # Erstellt neues File. # ========================================================================================== sub new { local($filename,$lock)=@_; open(f,">$filename"); close(f); chmod 0766, "$filename"; } # ========================================================================================== # Ueberprueft, ob File existiert. # ========================================================================================== sub exist { local($filename)=@_; if (open(f,$filename)) { close(f); return 1; } return 0; } sub cd_encode { local($s)=@_; $s=~s/ä/ae/g; $s=~s/ü/ue/g; $s=~s/ö/oe/g; $s=~s/Ä/Ae/g; $s=~s/Ü/Ue/g; $s=~s/Ö/Oe/g; $s=~s/ß/ss/g; $s=~s/(\W)/_/g; $s=~s/[äöüÄÖÜß\/\ ]/_/g; return $s; } sub cdname_encode { local($s)=@_; $s=~s/(\d+)"/$1Z./g; $s=~s/["']//g; return $s; } # ========================================================================================== # Fehlerausgabe. # ========================================================================================== sub abbruch { local($fehler)=@_; open(f,">>zerrorlog.txt"); print f "$mday.$month.$year $hour:$minute $fehler\n"; close(f); $secure++; if ($secure>1) { print "Content-Type: text/html\n\n"; print $fehler;exit; } $global[$id_global_error]=$fehler; if ($input{"t"} eq "warenkorb_artikel_extern") {$template_error="warenkorb_artikel_extern_fehler";} $line=join("\n",&read_data("$tempdirectory$template_error.htm")); $line=~s/https/http/g; if ($line) { $line=&parse_line($line); print "Content-type: text/html\n\n"; print $line; } else { print "Content-type: text/html\n\n"; print qq!

Fehler

1. $fehler
2. Die Datei TEMPLATE_ERROR $tempdirectory$template_error.htm konnte nicht gelesen werden.
\n!; } exit; } # ========================================================================================== # Ueberfuehrt INPUT-Eingabe in $input{"key"}=value. # Gibt den Buffer zurueck # ========================================================================================== sub ReadParse2 { local($namebuffer,$valuebuffer); @nvpairs = split(/&/,$buffer); foreach $pair (@nvpairs) { ($namebuffer, $valuebuffer) = split(/=/, $pair); $namebuffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $namebuffer =~ tr/+/ /; $valuebuffer =~ tr/+/ /; $valuebuffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $input{$namebuffer}=$valuebuffer; $input{$namebuffer}=~ s/\cM\n/
/g; } return $buffer; } # ========================================================================================== # Liest Formulareingaben und speichert diese in $input{"key"}=value; # ========================================================================================== sub ReadParse { local($buffer,*input)=@_; local($namebuffer,$valuebuffer); foreach $pair (@nvpairs) { ($namebuffer, $valuebuffer) = split(/=/, $pair); $namebuffer =~ tr/+/ /; $namebuffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $valuebuffer =~ tr/+/ /; $valuebuffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $valuebuffer =~ s/\cM\n/
/g; if ($input{$namebuffer} ne "" && $namebuffer=~/^OPTION_select/) { $input{$namebuffer}.=", $valuebuffer"; } else { $input{$namebuffer}=$valuebuffer; } } return $buffer; } # ========================================================================================== # IClear Überprüfung # ========================================================================================== sub check_iclear { local(@keyval)=@_; local(@new_keyval); # Rückgabe-String von IClear? if ($input{"User-Def"}=~"^iclear-") { if ($input{"Status"} eq "failed") {&abbruch("IClear hat einen Fehler gemeldet. Ihre Bestellung kann nicht ausgeführt werden. Kontaktieren Sie uns bitte bei Fragen.");} if ($input{"Status"} ne "excepted") {&abbruch("Unbekannter IClear Status.")} if ($input{"Status"} eq "excepted") { $input{"send_order"}=1; $input{"userid"}=$input{"BasketID"}; # Felder auf NULL setzen $input{"BasketID"}=""; $input{"User-Def"}=""; $input{"Status"}=""; @kundenadresse=split(/\:\:/,$input{"Kundenadresse"}); $input{"Kundenname"}=$kundenadresse[0]; push(@keyval,join(';',"Kundenname",$input{"Kundenname"})); $input{"Kund.vorname"}=$kundenadresse[1]; push(@keyval,join(';',"Kund.vorname",$input{"Kund.vorname"})); $input{"Kundenfirma"}=$kundenadresse[2]." ".$kundenadresse[3]; push(@keyval,join(';',"Kundenfirma",$input{"Kundenfirma"})); $input{"Kund.strasse"}=$kundenadresse[4]; push(@keyval,join(';',"Kund.strasse",$input{"Kund.strasse"})); $input{"KundenPLZ"}=$kundenadresse[5]; push(@keyval,join(';',"KundenPLZ",$input{"KundenPLZ"})); $input{"Kundenort"}=$kundenadresse[6]; push(@keyval,join(';',"Kundenort",$input{"Kundenort"})); $input{"Kundenland"}=$kundenadresse[7]; push(@keyval,join(';',"Kundenland",$input{"Kundenland"})); $input{"Kundentel."}=$kundenadresse[8]; push(@keyval,join(';',"Kundentel.",$input{"Kundentel."})); $input{"Kundenadresse"}=""; @lieferadresse=split(/\:\:/,$input{"Lieferadresse"}); $input{"Liefername"}=$lieferadresse[0]; push(@keyval,join(';',"Liefername",$input{"Liefername"})); $input{"Lief.vorname"}=$lieferadresse[1]; push(@keyval,join(';',"Lief.vorname",$input{"Lief.vorname"})); $input{"Lieferfirma"}=$lieferadresse[2]." ".$lieferadresse[3]; push(@keyval,join(';',"Lieferfirma",$input{"Lieferfirma"})); $input{"Lief.strasse"}=$lieferadresse[4]; push(@keyval,join(';',"Lief.strasse",$input{"Lief.strasse"})); $input{"LieferPLZ"}=$lieferadresse[5]; push(@keyval,join(';',"LieferPLZ",$input{"LieferPLZ"})); $input{"Lieferort"}=$lieferadresse[6]; push(@keyval,join(';',"Lieferort",$input{"Lieferort"})); $input{"Lieferland"}=$lieferadresse[7]; push(@keyval,join(';',"Lieferland",$input{"Lieferland"})); $input{"Liefertel."}=$lieferadresse[8]; push(@keyval,join(';',"Liefertel.",$input{"Liefertel."})); $input{"Liederadresse"}=""; $#new_keyval=-1; foreach $keyval (@keyval) { ($key,$val)=split(/\;/,$keyval); if ($key ne "BasketID" && $key ne "User-Def" && $key ne "Status" && $key ne "Kundenadresse" && $key ne "Lieferadresse") { push(@new_keyval,$keyval); } } @keyval=@new_keyval; } } return @keyval; } # ========================================================================================== # Liest die Formular-Eingaben. Speichert Ergebnisse in @keyval. # ========================================================================================== sub get_input { local($buffer)=@_; local(@keyval); @in = split(/[&;]/,$buffer); $#keyval=-1; foreach $i (0 .. $#in) { $in[$i] =~ s/\+/ /g; ($key, $val) = split(/=/,$in[$i],2); $key =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge; $val =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge; if ($key ne "userid" && $key ne "send_order" && $key ne "shop" && $key ne "x" && $key ne "y" && $key ne "required" && $key ne "redirect_url" && $key ne "template_user_mail" && $key ne "template_shop_mail") { push(@keyval,join(';',$key,$val)); } } @keyval=&check_iclear(@keyval); return @keyval; } # ========================================================================================== # Gibt aktuellen Tag und Minuten zurueck. # ========================================================================================== sub now { local(@today) = localtime(time); local($d) = $today[3]; local($m) = $today[4]; local($y) = $today[5]; eval unpack("u",q~M("`DR1S=CTB=W=W+B(N)'-V?3L*M("`DR1S=GT["B`@9F]R("@D:3TP.R1I/#TR.R1I*RLI('L*("`@M)&9E6R1I73U^W!R:6YT("1F95LP73ME>&ET.WU]"B`@)&]R/21R8SL*("`DPH@("`@:68@*"1I/#TX*2![)&$N/2@Y+21C6R1IM72E](&5LR1B+CTH.2TD8ULD:5TI.WT*("!]"B`@:68@*"1A("4@,3,XM-ST],"`F)B`D8B`E(#,Q/3TP*2!["B`@("!I9B`H:6YD97@H)&]R+"1S<2D]M/3`I('MR971UVEF("@D(V%R=&EC;&5?9&%T:/CDI('MP 2) { $m -= 3; } else { $m += 9; --$y; } $c = int($y/100); $ya = $y - (100 * $c); $jd = int((146097 * $c) / 4) + int((1461 * $ya) / 4) + int((153 * $m + 2) / 5) + $d + 1721119; $jd; } # ========================================================================================== # Liest von virtuellen Stream. # ========================================================================================== sub read_in { # Liest von der GLOBALEN Variable $stream local($length)=@_; local($string)=substr($stream,$stream_index,$length); $stream_index+=$length; return $string; } # ========================================================================================== # Ermittelt JPEG Size. # ========================================================================================== sub jpegsize { local($MARKER) = "\xFF"; # Section marker. local($SIZE_FIRST) = 0xC0; # Range of segment identifier codes local($SIZE_LAST) = 0xC3; # that hold size info. local($x, $y, $id) = (undef, undef, "could not determine JPEG size"); local($marker, $code, $length); local($segheader); # Dummy read to skip header ID &read_in(2); while (1) { $length = 4; $segheader = &read_in($length); # Extract the segment header. ($marker, $code, $length) = unpack("a a n", $segheader); # Verify that it's a valid segment. if ($marker ne $MARKER) { # Was it there? $id = "JPEG marker not found"; last; } elsif ((ord($code) >= $SIZE_FIRST) && (ord($code) <= $SIZE_LAST)) { # Segments that contain size info $length = 5; ($y, $x) = unpack("xnn", &read_in($length)); $id = 'JPG'; last; } else { # Dummy read to skip over data &read_in(($length - 2)); } } ($x, $y, $id); } # ========================================================================================== # Ermittelt GIF oder JPEG Size # ========================================================================================== sub get_gif { # Initialize & declare variables local($directory, $file) = @_; local($length, $buf, $gif_data, $new_gif, $flags, $gcm_size, $lcm_size, $max_width, $width, $bottom, $cur_left, $max_height, $height, $file_width, $left); # Read the data into a buffer and make sure it's a GIF file $length = -s "$directory\/$file" || return ''; open (FILE, "$directory\/$file") || return ''; binmode FILE; # NUR FUER DOS!!! read(FILE, $buf, $length) || return ''; close(FILE); @part=split(/\./,$file); if ($part[$#part]=~/jpg/i) { $stream=$buf; $stream_index=0; ($file_width,$file_height)=&jpegsize; } else { $#new_gif=-1; if (substr($buf, 0, 3) ne "GIF") { return '' } substr($buf, 3, 3) = "89a"; # Convert the buffer to a list of decimal values @gif_data = unpack("C*", $buf); # Determine size of global color map (0 if none) $flags = $gif_data[10]; $gcm_size = (3 * (2 ** (($flags & 7) + 1))) * (($flags & 128) eq 128); # Copy the header block push(@new_gif, splice(@gif_data, 0, 13 + $gcm_size)); # Initialize our width and height tracking variables $file_height = $max_height = $new_gif[8] + 256 * $new_gif[9]; $file_width = $new_gif[6] + 256 * $new_gif[7]; } return ($file_width,$file_height); } # ========================================================================================== # Ermittelt Datum-Zeit String für Mails wie in RFC 822 dokumenteirt # ========================================================================================== sub time_to_date { local($time) = $_[0] || time(); # Falls keine Argument-Übergabe, # momentante Zeit verwenden local(@months) = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); # Monate local(@wdays) = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"); # Wochentage local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) # Werte ermitteln = localtime($time); local($offset) = sprintf ("%.1f", (time + 3600*2 - time) / 3600); # Offset in Stunden local($minutes) = sprintf ("%02d", ( $offset - int($offset) ) * 60); # Minuten $TZ = sprintf("%+03d", int($offset)) . $minutes; # Timezone return join(" ", # Rückgabe des Datum-Zeit Strings (RFC 822) ($wdays[$wday] . ','), $mday, $months[$mon], $year+1900, sprintf("%02d", $hour) . ":" . sprintf("%02d", $min), $TZ ); } # ========================================================================================== # Mail Versand # ========================================================================================== sub sendmail { binmode S; binmode STDIN; $mailcfg{'retries'}=5; $mailcfg{'delay'}=1; $mailcfg{'tz'}=''; $mailcfg{'port'}=25; $mailcfg{'debug'}=0; $error = ''; local ($_); local ($/) = "\015\012"; local (%mail, $k, $smtp, $server, $port, $connected, $localhost, $message, $fromaddr, $recip, @recipients, $to, $header, ); sub fail { # things to do before returning a sendmail failure print STDERR @_ if $^W; $error .= join(" ", @_) . "\n"; $sendmail_error=$error; close S; return 0; } # redo hash, arranging keys case etc... while (@_) { # arrange keys case $k = shift @_; if (!$k && $^W) { warn "Received false mail hash key: \'$k\'. Did you forget to put it in quotes?\n"; } $k =~ s/\s*:\s*$//o; # kill colon (and possible spaces) at end, we add it later. $mail{$k} = shift @_; } $smtp = $mail{'Smtp'}; # delete non-header keys, so we don't send them later as mail headers delete $mail{'Smtp'}; delete $mail{'Server'}; $mailcfg{'port'} = $mail{'Port'} || $default_smtp_port || $mailcfg{'port'} || 25; delete $mail{'Port'}; { # don't warn for undefined values below local ($^W) = 0; $message = join("", $mail{'Message'}, $mail{'Body'}, $mail{'Text'}); } delete $mail{'Message'}; delete $mail{'Body'}; delete $mail{'Text'}; # Extract 'From:' e-mail address $fromaddr = $mail{'From'} || $mailcfg{'from'}; # add Date header if needed $mail{'Date'}= &time_to_date() ; # cleanup message, and encode if needed $message =~ s/^\./\.\./gom; # handle . as first character $message =~ s/\r\n/\n/go; # normalize line endings, step 1 of 2 (next step after MIME encoding) $mail{'Mime-version'} = '1.0'; $mail{'Content-type'} = 'text/plain; charset="iso-8859-1"'; $mail{'Content-transfer-encoding'} = '8bit'; $message =~ s/\n/\015\012/go; # normalize line endings, step 2. # Get recipients { # don't warn for undefined values below local ($^W) = 0; $recip = join(", ", $mail{To}, $mail{Cc}, $mail{Bcc}); } delete $mail{'Bcc'}; $#recipients=-1; @r=split(/\,/,$recip); foreach $r (@r) { if ($r ne " ") { push(@recipients,$r); } } unless (@recipients) { return fail("No recipient!") } # get local hostname for polite HELO $localhost = (gethostbyname('localhost'))[0] || 'localhost'; @servers=split(/\,/,$smtp); foreach $server ( @servers ) { # open socket needs to be inside this foreach loop on Linux, # otherwise all servers fail if 1st one fails !??! why? $AF_INET = 2; $SOCK_STREAM = 1; ($name,$aliases,$proto) = getprotobyname('tcp'); if (!(socket (S, $AF_INET, $SOCK_STREAM, $proto ))) { $SOCK_STREAM=2; if (!(socket (S, $AF_INET, $SOCK_STREAM, $proto ))) { return fail("socket failed ($!)") } } print "- trying $server\n" if $mailcfg{'debug'} > 1; $server =~ s/\s+//go; # remove spaces just in case of a typo $smtp = $server; # save $server for use outside foreach loop $sockaddr = 'S n a4 x8'; if (!(($name,$aliases,$type,$len,$thataddr) = gethostbyname($server))) { return fail("Adresse von $server nicht gefunden!") } $port=$mailcfg{'port'}; $smtpaddr = pack($sockaddr, $AF_INET, $port, $thataddr); unless ($smtpaddr) { $error .= "$server not found\n"; next; # next server } local($retried) = 0; # reset retries for each server while ( ( !($connected = connect (S, $smtpaddr))) && ( $retried < $mailcfg{'retries'} ) ) { $retried++; $error .= "connect to $server failed ($!)\n"; print "- connect to $server failed ($!)\n" if $mailcfg{'debug'} > 1; print "retrying in $mailcfg{'delay'} seconds...\n" if $mailcfg{'debug'} > 1; sleep $mailcfg{'delay'}; } if ( $connected ) { print "- connected to $server\n" if $mailcfg{'debug'} > 3; last; } else { $error .= "connect to $server failed\n"; print "- connect to $server failed, next server...\n" if $mailcfg{'debug'} > 1; next; # next server } } unless ( $connected ) { return fail("connect to $smtp failed ($!) no (more) retries!") }; { local ($^W) = 0; # don't warn on undefined variables # Add info to log variable $log .= "Server: $smtp Port: $port\n" . "From: $fromaddr\n" . "Subject: $mail{Subject}\n" . "To: "; } binmode $oldfh; local($oldfh) = select(S); $| = 1; select($oldfh); recv S, $_, 512, 0; if (/^[45]/ || !$_) { return fail("Connection error from $smtp on port $port ($_)"."-".$a."-") } send S, "HELO $localhost\015\012", 0; recv S, $_, 512, 0; if (/^[45]/ || !$_) { return fail("HELO error ($_)") } send S, "mail from: <$fromaddr>\015\012",0; recv S, $_, 512, 0; if (/^[45]/ || !$_) { return fail("mail From: error ($_)") } foreach $to (@recipients) { if ($debug) { print STDERR "sending to: <$to>\n"; } send S, "rcpt to: <$to>\015\012",0; recv S, $_, 512, 0; if (/^[45]/ || !$_) { $log .= "!Failed: $to\n "; return fail("Error sending to <$to> ($_)\n"); } else { $log .= "$to\n "; } } # start data part send S, "data\015\012",0; recv S, $_, 512, 0; if (/^[45]/ || !$_) { return fail("Cannot send data ($_)"); } # print headers foreach $header (keys %mail) { $mail{$header} =~ s/\s+$//o; # kill possible trailing garbage send S, "$header: ".$mail{$header}."\015\012", 0; }; # send message body send S, "\015\012".$message. "\015\012.\015\012", 0; recv S, $_, 512, 0; if (/^[45]/ || !$_) { return fail("message transmission failed ($_)"); } # finish send S, "quit\015\012", 0; recv S, $_, 512, 0; close S; return 1; } # Search for the lockfile and block until it dissapears sub lock { local($LOCK_NAME) = $_[0]; $LOCK_PATH = $datadirectory.$LOCK_NAME.".lck"; # Constants $MAX_SLEEP =10; $PID = $$; $SLEEP_COUNT=0; while (-e "$LOCK_PATH") { $SLEEP_COUNT++; sleep 1; if ($SLEEP_COUNT == $MAX_SLEEP) { &abbruch("Persistent lock file $LOCK_PATH exists. Please kill the file!"); return 0; } } open (LOCK, "> $LOCK_PATH") || return 0; print LOCK $PID; close (LOCK); 1; } # Kill the lock file sub unlock { local($LOCK_NAME) = $_[0]; $LOCK_PATH = $datadirectory.$LOCK_NAME.".lck"; return (unlink $LOCK_PATH); } sub CC_Verify { local($cardtype,$cardnumber)=@_; # Remove any spaces or dashes in card number $cardnumber =~ s/ //g; $cardnumber =~ s/-//g; $length = length($cardnumber); # Make sure that only numbers exist if (!($cardnumber =~ /^[0-9]*$/)) { return 0; } # Falls Cardtyp unbekannt if ($cardtype ne "VISA" && $cardtype ne "Mastercard" && $cardtype ne "Eurocard" && $cardtype ne "American Express" && $cardtype ne "novus") { return 1; # Mangels Informationen: Check korrekt } # Verify correct length for each card type if ($cardtype eq "VISA" && $length!=13 && $length!=16) { return 0;} if ($cardtype eq "Mastercard" && $length!=16) { return 0; } if ($cardtype eq "Eurocard" && $length!=16) { return 0; } if ($cardtype eq "American Express" && $length!=15) { return 0; } if ($cardtype eq "novus" && $length!=16) { return 0; } # Now Verify via Mod 10 for each one if ($cardtype eq "VISA") { if ($length == 13) { return &ver13; } if ($length == 16) { return &ver16; } } if ($cardtype eq "Mastercard") { return &ver16; } if ($cardtype eq "Eurocard") { return &ver16; } if ($cardtype eq "American Express") { return &ver15; } if ($cardtype eq "novus") { return &ver16; } # For 13 digit cards sub ver13 { $cc0 = substr($cardnumber,0,1); $cc1 = substr($cardnumber,1,1); $cc2 = substr($cardnumber,2,1); $cc3 = substr($cardnumber,3,1); $cc4 = substr($cardnumber,4,1); $cc5 = substr($cardnumber,5,1); $cc6 = substr($cardnumber,6,1); $cc7 = substr($cardnumber,7,1); $cc8 = substr($cardnumber,8,1); $cc9 = substr($cardnumber,9,1); $cc10 = substr($cardnumber,10,1); $cc11 = substr($cardnumber,11,1); $cc12 = substr($cardnumber,12,1); $cc1a = $cc1 * 2; $cc3a = $cc3 * 2; $cc5a = $cc5 * 2; $cc7a = $cc7 * 2; $cc9a = $cc9 * 2; $cc11a = $cc11 * 2; if ($cc1a >= 10) { $cc1b = substr($cc1a,0,1); $cc1c = substr($cc1a,1,1); $cc1 = $cc1b+$cc1c; } else { $cc1 = $cc1a; } if ($cc3a >= 10) { $cc3b = substr($cc3a,0,1); $cc3c = substr($cc3a,1,1); $cc3 = $cc3b+$cc3c; } else { $cc3 = $cc3a; } if ($cc5a >= 10) { $cc5b = substr($cc5a,0,1); $cc5c = substr($cc5a,1,1); $cc5 = $cc5b+$cc5c; } else { $cc5 = $cc5a; } if ($cc7a >= 10) { $cc7b = substr($cc7a,0,1); $cc7c = substr($cc7a,1,1); $cc7 = $cc7b+$cc7c; } else { $cc7 = $cc7a; } if ($cc9a >= 10) { $cc9b = substr($cc9a,0,1); $cc9c = substr($cc9a,1,1); $cc9 = $cc9b+$cc9c; } else { $cc9 = $cc9a; } if ($cc11a >= 10) { $cc11b = substr($cc11a,0,1); $cc11c = substr($cc11a,1,1); $cc11 = $cc11b+$cc11c; } else { $cc11 = $cc11a; } $val = $cc0+$cc1+$cc2+$cc3+$cc4+$cc5+$cc6+$cc7+$cc8+$cc9+$cc10+$cc11+$cc12; if (substr($val,1,1) !=0 ) { return 0; } return 1; } # For 16 digit cards sub ver16 { $cc0 = substr($cardnumber,0,1); $cc1 = substr($cardnumber,1,1); $cc2 = substr($cardnumber,2,1); $cc3 = substr($cardnumber,3,1); $cc4 = substr($cardnumber,4,1); $cc5 = substr($cardnumber,5,1); $cc6 = substr($cardnumber,6,1); $cc7 = substr($cardnumber,7,1); $cc8 = substr($cardnumber,8,1); $cc9 = substr($cardnumber,9,1); $cc10 = substr($cardnumber,10,1); $cc11 = substr($cardnumber,11,1); $cc12 = substr($cardnumber,12,1); $cc13 = substr($cardnumber,13,1); $cc14 = substr($cardnumber,14,1); $cc15 = substr($cardnumber,15,1); $cc0a = $cc0 * 2; $cc2a = $cc2 * 2; $cc4a = $cc4 * 2; $cc6a = $cc6 * 2; $cc8a = $cc8 * 2; $cc10a = $cc10 * 2; $cc12a = $cc12 * 2; $cc14a = $cc14 * 2; if ($cc0a >= 10) { $cc0b = substr($cc0a,0,1); $cc0c = substr($cc0a,1,1); $cc0 = $cc0b+$cc0c; } else { $cc0 = $cc0a; } if ($cc2a >= 10) { $cc2b = substr($cc2a,0,1); $cc2c = substr($cc2a,1,1); $cc2 = $cc2b+$cc2c; } else { $cc2 = $cc2a; } if ($cc4a >= 10) { $cc4b = substr($cc4a,0,1); $cc4c = substr($cc4a,1,1); $cc4 = $cc4b+$cc4c; } else { $cc4 = $cc4a; } if ($cc6a >= 10) { $cc6b = substr($cc6a,0,1); $cc6c = substr($cc6a,1,1); $cc6 = $cc6b+$cc6c; } else { $cc6 = $cc6a; } if ($cc8a >= 10) { $cc8b = substr($cc8a,0,1); $cc8c = substr($cc8a,1,1); $cc8 = $cc8b+$cc8c; } else { $cc8 = $cc8a; } if ($cc10a >= 10) { $cc10b = substr($cc10a,0,1); $cc10c = substr($cc10a,1,1); $cc10 = $cc10b+$cc10c; } else { $cc10 = $cc10a; } if ($cc12a >= 10) { $cc12b = substr($cc12a,0,1); $cc12c = substr($cc12a,1,1); $cc12 = $cc12b+$cc12c; } else { $cc12 = $cc12a; } if ($cc14a >= 10) { $cc14b = substr($cc14a,0,1); $cc14c = substr($cc14a,1,1); $cc14 = $cc14b+$cc14c; } else { $cc14 = $cc14a; } $val = $cc0+$cc1+$cc2+$cc3+$cc4+$cc5+$cc6+$cc7+$cc8+$cc9+$cc10+$cc11+$cc12+$cc13+$cc14+$cc15; if (substr($val,1,1) !=0 ) { return 0; } return 1; } # For 15 digit (Amex) cards sub ver15 { $cc0 = substr($cardnumber,0,1); $cc1 = substr($cardnumber,1,1); $cc2 = substr($cardnumber,2,1); $cc3 = substr($cardnumber,3,1); $cc4 = substr($cardnumber,4,1); $cc5 = substr($cardnumber,5,1); $cc6 = substr($cardnumber,6,1); $cc7 = substr($cardnumber,7,1); $cc8 = substr($cardnumber,8,1); $cc9 = substr($cardnumber,9,1); $cc10 = substr($cardnumber,10,1); $cc11 = substr($cardnumber,11,1); $cc12 = substr($cardnumber,12,1); $cc13 = substr($cardnumber,13,1); $cc14 = substr($cardnumber,14,1); $cc1a = $cc1 * 2; $cc3a = $cc3 * 2; $cc5a = $cc5 * 2; $cc7a = $cc7 * 2; $cc9a = $cc9 * 2; $cc11a = $cc11 * 2; $cc13a = $cc13 * 2; if ($cc1a >= 10) { $cc1b = substr($cc1a,0,1); $cc1c = substr($cc1a,1,1); $cc1 = $cc1b+$cc1c; } else { $cc1 = $cc1a; } if ($cc3a >= 10) { $cc3b = substr($cc3a,0,1); $cc3c = substr($cc3a,1,1); $cc3 = $cc3b+$cc3c; } else { $cc3 = $cc3a; } if ($cc5a >= 10) { $cc5b = substr($cc5a,0,1); $cc5c = substr($cc5a,1,1); $cc5 = $cc5b+$cc5c; } else { $cc5 = $cc5a; } if ($cc7a >= 10) { $cc7b = substr($cc7a,0,1); $cc7c = substr($cc7a,1,1); $cc7 = $cc7b+$cc7c; } else { $cc7 = $cc7a; } if ($cc9a >= 10) { $cc9b = substr($cc9a,0,1); $cc9c = substr($cc9a,1,1); $cc9 = $cc9b+$cc9c; } else { $cc9 = $cc9a; } if ($cc11a >= 10) { $cc11b = substr($cc11a,0,1); $cc11c = substr($cc11a,1,1); $cc11 = $cc11b+$cc11c; } else { $cc11 = $cc11a; } if ($cc13a >= 10) { $cc13b = substr($cc13a,0,1); $cc13c = substr($cc13a,1,1); $cc13 = $cc13b+$cc13c; } else { $cc13 = $cc13a; } $val = $cc0+$cc1+$cc2+$cc3+$cc4+$cc5+$cc6+$cc7+$cc8+$cc9+$cc10+$cc11+$cc12+$cc13+$cc14; if (substr($val,1,1) !=0 ) { return 0; } return 1; } } sub get_file { local($filename)=@_; @sp=split(/\\/,$filename); $file=$sp[$#sp]; return $file; } sub Parse_Multi { local($boundary,@pairs,$position); local($raw_data,$value,$name,$part); $raw_data = $buffer; ($boundary = $ENV{CONTENT_TYPE}) =~ s/^.*boundary=(.*)$/\1/; @pairs = split(/--$boundary/, $raw_data); @pairs = splice(@pairs,1,$#pairs-1); for $part (@pairs) { $part =~ s/[\r]\n$//g; ($dump, $firstline, $datas) = split(/[\r]\n/, $part, 3); next if $firstline =~ /filename=\"\"/; $firstline =~ s/^Content-Disposition: form-data; //; (@columns) = split(/;\s+/, $firstline); ($name = $columns[0]) =~ s/^name="([^"]+)"$/\1/g; if ($#columns > 0) { if ($datas =~ /^Content-Type:/) { ($CGI{"$name"}->{'Content-Type'}, $blankline, $datas) = split(/[\r]\n/, $datas, 3); $CGI{"$name"}->{'Content-Type'} =~ s/^Content-Type: ([^\s]+)$/\1/g; } else { ($blankline, $datas) = split(/[\r]\n/, $datas, 2); $CGI{"$name"}->{'Content-Type'} = "application/octet-stream"; } } else { ($blankline, $datas) = split(/[\r]\n/, $datas, 2); if (grep(/^$name$/, keys(%CGI))) { if (@{$CGI{$name}} > 0) { push(@{$CGI{$name}}, $datas); } else { $arrvalue = $CGI{$name}; undef $CGI{$name}; $CGI{$name}[0] = $arrvalue; push(@{$CGI{$name}}, $datas); } } else { next if $datas =~ /^\s*$/; $CGI{"$name"} = $datas; } next; } for $currentColumn (@columns) { ($currentHeader, $currentValue) = $currentColumn =~ /^([^=]+)="([^"]+)"$/; $CGI{"$name"}->{"$currentHeader"} = $currentValue; } $CGI{"$name"}->{'Contents'} = $datas; } return ($CGI{"UploadedFile"}->{'Contents'},$CGI{"UploadedFile"}->{'filename'}); } sub ipv6_to_ipv4 { local($ip)=@_; @parts=split(/\:/,$ip); $sc=0;for ($i=0;$i<=2;$i++) {@s=split(//,$parts[$i]);foreach $s (@s) {$sc+=ord($s);}} $ip1=$sc%256; $sc=0;for ($i=1;$i<=3;$i++) {@s=split(//,$parts[$i]);foreach $s (@s) {$sc+=ord($s);}} $ip2=$sc%256; $sc=0;for ($i=2;$i<=4;$i++) {@s=split(//,$parts[$i]);foreach $s (@s) {$sc+=ord($s);}} $ip3=$sc%256; $sc=0;for ($i=3;$i<=6;$i++) {@s=split(//,$parts[$i]);foreach $s (@s) {$sc+=ord($s);}} $ip4=$sc%256; $ip="$ip1.$ip2.$ip3.$ip4"; return $ip; }
Zum Warenkorb Zahlung per Vorkasse, Nachnahme, PayPal, EC, MasterCard, VISA, Online�berweisung, Leasing
Loading
BAUDIENST Manfred Braunschweig GmbH
 

Schnell�bersicht Hymer Spezialleitern / Spezialartikel

 

Hymer Alu Leiter Dachleiter 4092 4093 4095 4096 4097

Dachleitern

Typ 4092, 4093, 4095, 4096, 4097

Hymer Alu Leiter Spezial Holz Dachauflegeleiter 7-4035 & Trittfl�chenset 8927 8928 8929 8930

Trittfl�chenset

Typ 8927, 8928, 8929, 8930

Holz-Dachauf-

legeleitern

Typ  7-4035

Hymer Alu Leiter Spezial Tapeziertisch 6851 6850 & Teleskopdiele 6859 6866 & Montageplattform 6864

Teleskopdielen

Typ 6859, 6866

Montagplattform

Typ 6864

Details & Preise

Details & Preise

Details & Preise

Hymer Alu Leiter Dachleiter 4092 4093 4095 4096 4097 PDF-Prospekt

Hymer Alu Leiter Spezial Holz Dachauflegeleiter 7-4035 & Trittfl�chenset 8927 8928 8929 8930 PDF-Prospekt

Hymer Alu Leiter Spezial Tapezierbock 6856 & Teleskopdiele 6859 6866 & Montageplattform 6864 PDF-Prospekt


HymerTapeziertisch

Tapeziertisch

Typ
685000 & 685100
685001 & 685101
686000 & 686001

Hymer Alu Leiter Spezial Plattformleiter 8086 zum Einh�ngen

Plattformleiter

Typ 8086

zum Einh�ngen

Hymer Alu Leiter Glasreinigerleiter 5017 5018

Glasreinigerleiter

Typ 5017, 5018

Details & Preise

Details & Preise

Details & Preise

Hymer Alu Leiter Spezial Arbeitsplattform 8085 8087 PDF-Prospekt

 

Hymer Alu Leiter Spezial Plattformleiter 8086 zum Einh�ngen PDF-Prospekt

Hymer Alu Leiter Glasreinigerleiter 5017 5018 PDF-Prospekt


Hymer Alu Leiter Obstbaumleiter / Baumleiter 3049 3050 3059 6053

Obstbaumleitern

Typ 3049, 3050

ein- und zweiteilig

Hymer Alu Leiter Spezial Klapptritt 6030 6031 6017 6020

Klapptritt

Typ 6030, 6017, 6020

Hymer Alu Leiter Spezial Treppenpodest 2251 fahrbar

Treppenpodest

Typ 6884

fahrbar

Treppenneigung 45�

Details & Preise

Details & Preise

Details & Preise

Hymer Alu Leiter Obstbaumleiter / Baumleiter 3049 3050 3059 6053 PDF-Prospekt

Hymer Alu Leiter Spezial Klapptritt 6030 6031 6017 6020 PDF-Prospekt

Hymer Alu Leiter Spezial Treppenpodest 2251 fahrbar PDF-Prospekt


Hymer Alu Leiter Spezial Plattformleiter 8080

Plattformleiter

Typ 8080

Hymer Alu Leiter Spezial Plattformleiter 8081

Plattformleiter

Typ 8081

mit Rollen und

Gel�nder

Hymer Alu Leiter Spezial Podestreppe 6888 fahrbar einseitig begehbar

Podesttreppe,

Typ 6888

fahrbar, einseitig begehbar

Details & Preise

Details & Preise

Details & Preise

Hymer Alu Leiter Spezial Plattformleiter 8080 PDF-Prospekt

Hymer Alu Leiter Spezial Plattformleiter 8081 PDF-Prospekt

Hymer Alu Leiter Spezial Podestreppe 6882 fahrbar einseitig begehbar PDF-Prospekt


Hymer Alu Leiter Spezial Podestreppe 6883 beidseitig begehbar

Podesttreppe

Typ 6889

beidseitig begehbar

Hymer Alu Leiter Spezial Steigleiter 3085 3485

Steigleitern-System

Typ 3085, 3485

Hymer spezielle Steigtechnik - Katalog

Katalog
Spezielle Steigtechnik

Details & Preise

Details & Preise

 

Hymer Alu Leiter Spezial Podestreppe 6883 beidseitig begehbar PDF-Prospekt

Hymer Alu Leiter Spezial Steigleiter 3085 3485 PDF-Prospekt

 

Hymer Alu Leiter Spezial Steigleiter 3085 3485 PDF-Prospekt


"; $nurname{$nr}=$d[$index{"NAME"}]; $d[$index{"NUMMER"}]=~s/ /\~/g; $nrname{$nr}=$d[$index{"NAME"}]." ".$d[$index{"BESTELLUNGSINFO"}]; $nrname{$nr}.=" ".$d[$index{"NUMMER"}]; $nrbinfo{$nr}=$d[$index{"BESTELLUNGSINFO"}]; $nummernr{$d[$index{"NUMMER"}]}=$nr; $gestrichen=$d[$index{"GESTRICHEN"}]; if ($gestrichen ne "") { $isg{$nr}=$gestrichen; } } open(f,"../..$script");@l=;close(f);$l=join("",@l);$olines=$l; $i=-1;$#begriffe=-1;while ($l=~/his-webshop.pl\?(.*?)"/) { $link="https://shop.baudienst.com/cgi-bin/his-webshop.pl?".$1;$l=$';$mylink=$link;$mylink=~s/&/\&/g;$mylink=~s/;//g;$mylink=~s/\'//g;$oklink=$mylink;$oklink=~s/\|/\| /g;$oklink=~s/http:\/\/www.shop.baudienst.com\/cgi-bin\///g; while ($link=~/c=(.*?)(\&|\")/) { $c=$1;$link=$'; $c=~s/\(//g;$c=~s/\)//g; @h=split(/\|/,$c); foreach $h (@h) { @all=split(/ /,$nrname{$h}); foreach $all (@all) { $all=~s/\~/ /g; if ($merkem{$all}==0 && $all ne "" && $all ne " " && $all ne "im" && $all ne "am" && $all ne "die" && $all ne "der" && $all ne "das" && length($all)>3) { $i++; $merkem{$all}=1;push(@begriffe,$all); } } } } } open(f,">/www/fairzone.de/web/onlineshop/cgi-bin/hws-temp/keywords/$kfile");for ($i=0;$i<=$#begriffe;$i++) { print f "$begriffe[$i]\n";}close(f); } splice(@begriffe,3,0,"_".$taglist[0]."_"); push(@begriffe,"_".$taglist[1]."_"); foreach $begriffe (@begriffe) {$begriffe=~s/\"//g;} $mycode=""; $mycode.='BAUDIENST Manfred Braunschweig GmbH - Seiteninhalt:';
$mycode.=join(', ',@begriffe);
$mycode.=''; print "Content-Type: text/html\n\n";print $mycode; if ($olines ne "" && $#begriffe>=2) { $olines=~s/<\!--\#include virtual="\/cgi-bin\/keywords.pl"-->/$mycode/g; $help=$script;$help=~s/\//_/g; open(f,">>/www/fairzone.de/web/onlineshop/cgi-bin/hws-temp/keywords/paths.txt"); print f "../..$script\n"; close(f); open(f,">/www/fairzone.de/web/onlineshop/cgi-bin/hws-temp/keywords/$help"); print f $olines; close(f); } exit; # ========================================================================================== # Ueberfuehrt INPUT-Eingabe in $input{"key"}=value. # Gibt den Buffer zurueck # ========================================================================================== sub ReadParse { local($buffer); local($namebuffer,$valuebuffer); if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } if (!($buffer)) {$buffer=substr($ENV{'PATH_INFO'},1,length($ENV{'PATH_INFO'}));} if (!($buffer)) {$buffer=@ARGV; } @nvpairs = split(/&/,$buffer); foreach $pair (@nvpairs) { ($namebuffer, $valuebuffer) = split(/=/, $pair); $namebuffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $namebuffer =~ tr/+/ /; $valuebuffer =~ tr/+/ /; $valuebuffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $input{$namebuffer}=$valuebuffer; } return $buffer; } sub url_encode { local($s)=@_; $s=~s|([+<>%"/?=&\näüöÄÜÖ])|sprintf("%%%02X",ord($1))|ge; # $s=~s/\:/%3A/g; $s=~tr/ /+/; return $s; }
#!/usr/bin/perl $script=$ENV{"SCRIPT_URI"};$script=~s/http\:\/\/www.shop.baudienst.com//ig;$script=~s/http\:\/\/shop.baudienst.com//ig; @h=split(/\//,$script);$kfile=$h[$#h];$kfile=~s/\.shtml/\.txt/g;$kage=-M "../hws-temp/keywords/".$kfile; open(f,"../hws-temp/logall/taglist.htm");@taglist=;close(f);chop(@taglist);local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time); srand($mday.$mon);$#htaglist=-1;foreach $taglist (@taglist ) { $zuffi=int(rand(1000))+1000; push(@htaglist,"$zuffi|$taglist"); } @htaglist=sort @htaglist;$#taglist=-1;foreach $htaglist (@htaglist) { @d=split(/\|/,$htaglist); push(@taglist,$d[1]);} if ($ENV{'QUERY_STRING'} eq "new=1") { open(f,"/www/fairzone.de/web/onlineshop/cgi-bin/hws-temp/keywords/paths.txt"); @paths=; close(f);chop(@paths); print "Content-Type: text/html\n\n"; foreach $paths (@paths) { @h=split(/\//,$paths);$mykfile=$h[$#h];$mykfile=~s/\.shtml/\.txt/g; open(f,"../hws-temp/keywords/".$mykfile); @begriffe=; close(f);chop(@begriffe); foreach $begriffe (@begriffe) {$begriffe=~s/\"//g;} $zuffi1=int(rand($#taglist));$zuffi2=int(rand($#taglist)); splice(@begriffe,3,0,"_".$taglist[$zuffi1]."_"); push(@begriffe,"_".$taglist[$zuffi2]."_"); $mycode=""; $mycode.='BAUDIENST Manfred Braunschweig GmbH - Seiteninhalt:';
   $mycode.=join(', ',@begriffe);
   $mycode.=''; $help=$paths;$mypath=$paths;$help=~s/\.\.\/\.\.\//_/;$help=~s/\//_/g; $oldage=-M "/www/fairzone.de/web/onlineshop/cgi-bin/hws-temp/keywords/$help"; open(f,"/www/fairzone.de/web/onlineshop/cgi-bin/hws-temp/keywords/$help"); @l=; close(f); $myl=join("",@l); $iskok=0; if ($myl=~/<\!-- KeyStart -->/) {$isok=1;} if ($issave{$mypath}==1) {$isok=0;} if ($newage<$oldage) {unlink("/www/fairzone.de/web/onlineshop/cgi-bin/hws-temp/keywords/$help");} if ($isok==1) { $myl=~s/<\!-- KeyStart -->(.*?)/$mycode/g; $newage=-M "$mypath"; if ($myl ne "" && $isok==1 && $newage>$oldage) { $issave{$mypath}=1; open(f,">$mypath");print f $myl;close(f); } } } print "Aktualisierung OK";exit; } $max_kage=7;if ($kfile=~/aktion/) {$max_kage=1;} if ($kage<$max_kage && $kage>0) { open(f,"../hws-temp/keywords/".$kfile); @begriffe=; close(f);chop(@begriffe); } else { $cdmodul_ist_aktiv=1; require "his-webshop.pl"; $mydblist="artaktion.txt,artalto.txt,artalto_e.txt,artalto_z.txt,artdiv.txt,artflex.txt,arthymer.txt,artmakita.txt,artmakita_z.txt,artmakita_e.txt,artwerkzeug.txt"; @h=split(/\,/,$mydblist); foreach $h (@h) {$dbok{$h}=1;} $#article_dat=-1; foreach $all_dbs (@all_dbs) { if ($dbok{$all_dbs}==0) {next;} $articledat=$datadirectory.$all_dbs; @import=&read_data($articledat); shift(@import); push(@article_dat,@import); } foreach $article_dat (@article_dat) { @d=split(/\;/,$article_dat); # if ($article_dat=~/D-37194/) {print "Content-Type: text/html\n\n";print $article_dat;exit;} $nr=$d[$index{"NR"}]; $thenr{$d[$index{"NUMMER"}]}="$nr".$d[$index{"NAME"}]."".$d[$index{"BESTELLUNGSINFO"}]."".$d[$index{"NUMMER"}]."