#!/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"}
[IF_('[RORDER_ORDERNR]' eq '-')]Gutschrift[IF_END][IF_('[RORDER_ORDERNR]' ne '-')][RORDER_ORDERNR][IF_END]
[RORDER_PID]
";
$code.="[REPEAT_RORDER_END]";
$code.="
";
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 "
";
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 "";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!
Status ändern
!;
print qq!
Aktueller Status
!;
print qq!
Bestell-Datum
!;
print qq!
Gutschein-Code
!;
print qq!
Gutschein-Wert
!;
print qq!
Mindest-Bestellwert
!;
print qq!
Gültig bis
!;
print qq!
Käufer
!;
# print qq!
Versand an
!;
print qq!
Aktion von/bis
!;
print qq!
Laufzeit
!;
print qq!
ab Bestellwert
!;
print qq!
freier Text
!;
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 "";
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!";
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!!;
exit;
}
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!
!;
print qq!
!;
print qq!
!;
print qq!
!;
if ($use_partner_db==1) {
print qq!
!;
print qq!
!;
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";
$i=-1;
foreach $pichttp (@pichttp) {
$i++;$j=$i+1;
$table.=qq![REPEAT_ARTIKEL][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=~/^\) {$input{"c$i"}="<".$cs;$input{"f$i"}=~s/^\/;}
$cs=~ s/[öÖ]/[öÖ]/g;
$cs=~ s/[äÄ]/[äÄ]/g;
$cs=~ s/[üÜ]/[üÜ]/g;
if ($input{"use_perl"}==0) {
$cs =~ s/[.*?+]//g;
} else {$cs=~s/\./(\\\.|)/g;}
if ($input{"search"} eq "ALL") {
if ($cs!~/"(.*?)"/) {
$cs='"'.$cs.'"';
}
}
while ($cs=~/"(.*?)"/) {
$vor=$`;
$hinter=$';
$treffer=$1;
$treffer=~s/ /\<_\>/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! !;
$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!!;
$preis=&format_sum($fields[$index{"PREIS"}]);
$tt="";
for ($j=0;$j<=$#auswahl;$j++) {
$pp=&format_sum($pauswahl[$j]);
$tt.=qq!if (this.selectedIndex==$j) {document.aform$process_id.field$sd.value='$pp EUR'\ndocument.aform$process_id.cfield$sd.value='$pp'} !;
$input{"js$sd"}.=qq!if (document.getElementById('sele${sd}_$process_id').selectedIndex==$j) {document.aform$process_id.field$sd.value='$pp EUR';document.aform$process_id.cfield$sd.value='$pp'}\n!;
}
$fields[$id_article_binfo].=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/\>\>/\]/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/\>\>/\]/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='
";
&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='";
&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.
!.$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!
für Makita:HR2010,
HR2020, HHR2440, HR2450, HR3000C
| für alle Bohrhämmer mit SDS-plus
Einsteckende oder 2-Nut-Verriegelung
Typ Bosch: Bohrer-/Meißelschaft
SDS-max
für Makita:HR4000C,
HR4010C, HR4011C, HR4500C,HR50001C,
HM0860C, HM1100C, HM1202C | für
alle Hämmer mit SDS-max (TE-Y Hilti)
Einsteckende
Steinbohrer
Hartmetall bestückte
Bohrer zum Bohren in Stein und Mauerwerk
mit Rundschaft.
CV-Holzbohrer
Chrom-Vanadium
Holzbohrer mit Zentrierspitze
Holz-Flachbohrer
Flachbohrer
für Holz mit Zentrierspitze und
Sechskantschaft
Holzschlangenbohrer
mit selbst zentrierender
Gewindespitze und Vorschneider,
Aufnahmeschaft Sechskant
HSS-Metallbohrer
HSS-Metallbohrer
mit Cobalt-Beschichtung
sind ausgesprochen hitzebeständig
und besonders verschleißfest
Makita: Bohrerschaft
6-kant, SW13
für Makita:8035NB,
HR3510, HR3520, HR3850, HM0810T,HM1130C
| für Hitachi:DH28Y, DH40YB, DH40SR
Typ Bosch: Bohrer-/Meißelschaft
SDS-top
für Makita:HR3550C
und für alle Bohrhämmer mit SDS-top
(TE-T Hilti) Einsteckende
Typ Bosch: Bohrerschaft
Grosse Keilwelle
für Makita:HR3520B,
HR3850B, HR5000, HR4040C | für Bosch:UBH12/50
| für DeWalt:DW530K, DW531K, DW532K,
DW533K | für Hitachi:DH40FA, DH40FB
| für Atlas Copco:PH11H, PHE6H,
PHE50H
Typ Kango: Bohrerschaft
SW19
für Makita:HR3850K,
HR5000K | für Atlas Copco:PH11C
| für Hitachi:DH50SA1 | für Kango:950KV,
850KV, 760KV
Übersicht über
alle lieferbaren Bohrer und Meissel.
Zum Bestellen nicht direkt angebotenen
Werkzeuge benutzen Sie bitte die
Makita Datenbankabfrage. Bitte nutzen
Sie zur Suche die Artikelnummer.
Zur Makita Datenbankabfrage