#!/usr/bin/perl ############################################################################ # # (c) Martin Garms, 2002 # Onlineshop Meridian # ############################################################################ ############################################################################ # Globale Parameter ############################################################################ ####Ermittlung und Wechsel in das aktuelle Verzeichnis $0 =~ /^(.*)[\/\\].*/ && chdir ($1) ; ####Module und Puffer ausschalten use CGI ; use CGI::Carp qw(fatalsToBrowser) ; require 'funclib.cgi' ; $|=1 ; ####CGI-Name und Verzeichnisse my $cgi_nam="mshop.cgi" ; ####URL-Parameter lesen %PARA = ¶_read() ; #&read_config("../libs") ; #CONFIG-Array einlesen aus news.config (in news.cgi) #$htm_bas_dir=$CONFIG{'HTM_BAS_DIR'}; #Pfad bis zum index.htm der Site #Produkteliste @plist=( '01_6', '02_2', '02_4', '02_5', '02_6', '03_1', '03_2', '03_3', '03_4', '03_5', '04_1', '04_2', '04_3', '04_4', '04_5', '04_6', '05_1', '05_2', '05_3', '05_4', '05_5', '05_6', '06_1', '06_2', '06_3', '06_4', '06_5', '06_6', '07_1', '07_2', '07_3', '07_4', '07_5', '07_6', '08_1', '08_2', '08_3', '08_4', '08_5', '08_6', '09_1', '09_2', '09_3', '09_4', '09_5', '09_6', '10_1', '10_2', '10_3', '10_4', '10_5', '10_6', '11_1', '11_2', '11_3', '11_4', '11_5', '11_6', '12_1', '12_2', '12_3', '12_4', '12_5', '12_6', '13_1', '13_2', '13_3', 'Sonderheft', 'pra', 'abo', 'porto', 'stueck', 'ustbetr', 'rchbetr' ); $abo_zr='13/3 - 14/2'; # die ersten 4 zeichen werden zum feststellen des aktuellen Heftes benutzt (Preis!) $pra_zr='13/3 - 13/5'; #Datenliste @dlist=( 'anrede', 'vorname', 'name', 'strasse', 'plz', 'ort', 'land', 'tel', 'fax', 'email', 'anliegen', 'text' ) ; #Senderadressen. Hier kann das Versenden (Z.1003ff) durch auskommentieren deaktiviert werden $mail_to1='shop@meridian-magazin.de'; $mail_to2='meridian@interabo.de'; ############################################################################ # Programmablauf ############################################################################ my $query = new CGI ; my %FM ; my @uid; my @err; # Fehlerfeld, global. my $erz=0; # Fehlerzahl ## Aufruf mit submit-Button Schritt 1. # check_edit prueft die Eintraege und gibt ggf. Korrekturmoeglichkeit if ($PARA{'func'} eq "show") { $erz=&check_edit(\$query); # \ ist referenz (Adresse!) #$erz=''; if ($erz) { &html_head( 'Meridian-Shop','Korrektur') ; &edit('','',$erz); # Fehlermeldung in Form anzeigen, neuer Versuch $erz=0 } else { &html_head( 'Meridian-Shop','Schritt 2') ; &dat_save(); # Bestaetigungsseite anzeigen } &html_foot() ; } ## Aufruf mit submit-Button des Bestaetigungs-Formulars. elsif ($PARA{'func'} eq "send") { &html_head( 'Meridian-Shop','Schritt 3') ; &r_send(); # Bestellung per Mail versenden &html_foot() ; } ########## Status: SUM-Datei anzeigen elsif ($PARA{'func'} eq "status") { &html_head( 'Status','Summe') ; &status() ; &html_foot() ; } else { &html_head( 'Meridian Shop','Auswahl') ; &edit($PARA{'fname'},$PARA{'slc'}) ; #Wenn fname uebergeben, Daten ins Form laden &html_foot() ; } #=========================================================================== # FORMULAR # Bearbeitungs-Formular erzeugen # wenn slc==1 weren Details angezeigt #=========================================================================== sub edit { my $fname=$_[0]; # wenn $fname, Daten laden, sonst neu my $slc=$_[1]; # 0 wenn erster Durchgang, 1-12 mit Details fuer Partner 1-12 #my $query_adr=$_[3]; # Rueckuebergabe Query-Adresse bei Fehler my %FM ; # Feld fuer den Daten-Import my @sel; my $dir='data/'; my $msg='MSG:'; my $t; my $z; my $f=50; # Offset fuer @sel-Feld my @k; my @k1; my $det; #### ev. Fehlermeldungen einbauen my $errh; if($erz>0) # Fehlermeldungen vorhanden? { %FM=&parse_form(\$query) ; # Query-String mit alten Daten rueckuebergeben $slc=$FM{'slc'}; $fname=$FM{'fname'}; # Fuer oben: $errh='

' .'Moment bitte - unsere Konsistenzprüfung hat noch Fehler gefunden.
' .$err[$0].'
' .'-> hiermit springen Sie direkt zu den Adressfeldern

' ; $err[0]='

' .'Bitte vervollständigen Sie:
' .$err[$0].'

' ; } #print qq(EDIT: Fehlerzahl=$erz SLC=$slc
); #### Ausgabe Form # Die geladenen Eintrags-Daten stehen jetzt in dem Array %TMPL $siz='"50"'; $msg=''; #debug aus # # Dummydaten my $deb=0; if($deb){ $FM{'vorname'}='Martin'; $FM{'name'}='Garms'; $FM{'strasse'}='Hochfirstweg 12'; $FM{'plz'}='79853'; $FM{'ort'}='Lenzkirch'; $FM{'tel'}='07653-960277'; $FM{'email'}='m.garms@sternwerkstatt.de'; } print qq~
$det $errh

$tit

Schritt 1: Stellen Sie hier einfach die gewünschten Produkte zusammen, indem Sie bei den entsprechenden Heften eine Stückzahl eintragen (Ein Klick auf das Heft zeigt Ihnen das Inhaltsverzeichnis der jeweiligen Ausgabe in einem neuen Fenster).
Unten geben Sie bitte Ihre Versandadresse an und klicken dann auf "Bestellung ansehen".
In Schritt 2 sehen Sie dann Ihre Bestellung nochmals übersichtlich zusammengestellt, bei Einzelheft-Bestellungen werden Ihnen auch die (von Stückzahl und Wohnort abhängigen) Versandkosten angezeigt. Wir versenden auf Rechnung.
Erst wenn Sie in Schritt 3 Ihre Bestellung verbindlich bestätigen, wird sie an unsere Aboverwaltung versandt. Sie können hier auch Abo-Adressänderungen und andere Mitteilungen an unsere Aboverwaltung versenden.

Hier finden Sie alle noch erhältlichen Meridian-Einzelhefte.
(frühere Jahrgänge sind leider vergriffen)
>> Preissenkung: Ältere Hefte kosten nur noch EUR 5.- <<


Meridian Sondernummer

Der Marktüberblick für astrologische Software, Stand 2006 (noch vor Windows Vista, daher reduzierter Abverkauf-Preis 8.- statt 14.90).
Auf CD 16 Demoversionen zum installieren und
40 Deutungstextbeispiele
Je eine Freeware für Mac und PC.
(Für weitere Infos auf die Abb. klicken)

"Astrologie und Computer"
mit CD-ROM für Mac & PC


Ich bestelle
Stück für je EUR 8.- / 12.- SFR zzgl. Porto (Inland 1,30, Ausland 3.- EUR)
   V

Ausgabe 13/3
Mai und Juni 2013

Schwerpunktthema:
Praxis der Combin- und Compositdeutung

Ich bestelle
Stück für je EUR 7.-
   V

Ausgabe 13/2
März und April 2013

Schwerpunktthema:
Asteoriden und Fixstern-Astrologie

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 13/1
Januar und Februar 2013

Schwerpunktthema:
Praxis der Paarberatung

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 12/6
November und Dezember 2012

Schwerpunktthema:
Saturn in Skorpion

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 12/5
September und Oktober 2012

Schwerpunktthema:
Astrologie lernen und lehren

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 12/4
Mai und Juni 2012

Schwerpunktthema:
Jupiter in Zwillinge - Wissen und Weisheit

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 12/3
Mai und Juni 2012

Schwerpunktthema:
Aspektfiguren im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 12/2
März und April 2012

Schwerpunktthema:
Karma und Schicksal im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 12/1
Januar/Februar 2012

Schwerpunktthema:
Sonnenzeichen oder Aszendent? Wer sind wir wirklich?

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 11/6
November/Dezember 2011

Schwerpunktthema:
Gewaltaspekte im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 11/5
September/Oktober 2011

Schwerpunktthema:
Astro-Coaching

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 11/4
Juli/August 2011

Schwerpunktthema:
Jupiter in Stier

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 11/3
Mai/Juni 2011

Schwerpunktthema:
Neptun in Fische

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 11/2
MŠrz/Apr. 2011

Schwerpunktthema:
Der rote Faden - Der schnelle Einstieg ins Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 11/1
Jan./Feb. 2011

Schwerpunktthema:
Jahresthemen 2011 - Die paradoxe Dynamik der Kardinalzeichen

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 10/6
Nov./Dez. 2010

Schwerpunktthema:
Deutung und Bedeutung einzelner Tierkreisgrade

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 10/5
Sept./Okt. 2010

Schwerpunktthema:
Astrologie für Kinder und Jugendliche

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 10/4
Juli und August 2010

Schwerpunktthema:
Veränderungen, Umbrüche und Neuanfänge im Lebenslauf

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 10/3
Mai und Juni 2010

Schwerpunktthema:
Die Potenziale schwieriger Aspektkonstellationen

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 10/2
März und April 2010

Schwerpunktthema:
Chiron-Neptun Persönlichkeiten

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 10/1
Januar und Februar 2010

Schwerpunktthema:
2010 - Das Jahr des Wandels und des Aufbruchs

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 09/6
November und Dezember 2009

Schwerpunktthema:
Gauner und Ganoven

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 09/5
September und Oktober 2009

Schwerpunktthema:
Krise als Chance - Saturn-Pluto-Themen

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 09/4
Juli und August 2009

Schwerpunktthema:
Astrologie und Intuition

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 09/3
Mai und Juni 2009

Schwerpunktthema:
Chiron-Neptun-Themen

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 09/2
März und April 2009

Schwerpunktthema:
Die inneren Uhren im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 09/1
Januar und Februar 2009

Schwerpunktthema:
Geschwisterbeziehungen im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 08/6
November und Dezember 2008

Schwerpunktthema:
Saturn/Uranus-Themen

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 08/5
September und Oktober 2008

Schwerpunktthema:
Spiritualität im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 08/4
Juli und August 2008

Schwerpunktthema:
Krise der Gegenwartsastrologie

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 08/3
Mai und Juni 2008

Schwerpunktthema:
Pluto in Steinbock

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 08/2
März und April 2008

Schwerpunktthema:
Paarberatung

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 08/1
Januar und Februar 2008

Schwerpunktthema:
Halbsummen

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 07/6
November und Dezember 2007

Schwerpunktthema:
Saturn in Jungfrau

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 07/5
September und Oktober 2007

Schwerpunktthema:
Die Kunst des Schreibens - Schriftsteller

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 07/4
Juli und August 2007

Schwerpunktthema:
Solare - eine überschätzte Methode?

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 07/3
Mai und Juni 2007

Schwerpunktthema:
Psychisches Leiden im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 07/2
März und April 2007

Schwerpunktthema:
Die hohe Kunst des Scheiterns

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 07/1
Januar und Februar 2007

Schwerpunktthema:
Astrologie und Philosophie

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 06/6
November und Dezember 2006

Schwerpunktthema:
Astrologie und Ethik

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 06/5
September und Oktober 2006

Schwerpunktthema:
Venus-Mars-Themen im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 06/4
Juli und August 2006

Schwerpunktthema:
Astrologie und Fußball

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 06/3
Mai und Juni 2006

Schwerpunktthema:
Sein und Schein
Die Themen der Saturn-Neptun Oppposition


Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 06/2
März und April 2006

Schwerpunktthema:
Klassische Astrologie
Über die Zukunft der astrologischen Tradition


Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 06/1
Januar und Februar 2006

Schwerpunktthema:
Wege aus der Krise
Jupiter/Pluto-Themen im Horoskop


Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 05/6
November und Dezember 2005

Schwerpunktthema:
Astrologie und Wirtschaft
Die Folgen der Globalisierung


Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 05/5
September und Oktober 2005

Schwerpunktthema:
Saturn in Löwe

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 05/4
Juli und August 2005

Schwerpunktthema:
Astrologie und Humor

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 05/3
Mai und Juni 2005

Schwerpunktthema:
Astrologie - eine nützliche Fiktion?

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 05/2
März und April 2005

Schwerpunktthema:
Täter/Opferbeziehungen

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 05/1
Januar und Februar 2005

Schwerpunktthema:
Liebesglück im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 04/6
November und Dezember 2004

Schwerpunktthema:
Mundanastrologie: Horoskope von Staaten und Städten

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 04/5
September und Oktober 2004

Schwerpunktthema:
Horoskopsynthese - Deutungsstrategien

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 04/4
Juli und August 2004

Schwerpunktthema:
Familienthemen im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 04/3
Mai und Juni 2004

Schwerpunktthema:
Beraterfallen / Diskussion siderischer Tierkreis

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 04/2
März und April 2004

Schwerpunktthema:
Astrologie und Märchen

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 04/1
Januar/Februar 2004

Schwerpunktthema:
Sinn und Unsinn der siderischen Astrologie

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 03/5
September/Oktober 2003

Schwerpunktthema:
Was ist uns die Astrologie wert?

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 03/4
Juli/August 2003

Schwerpunktthema:
Quaoar - ein neuer Planet?

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 03/3
Mai/Juni 2003

Schwerpunktthema:
Astrologie und Wissenschaft

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 03/2
März/April 2003

Schwerpunktthema:
Kunst und Astrologie

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 03/1
Januar/Februar 2003

Schwerpunktthema:
Wunsch und Sehnsucht im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 02/6
November/Dezember 2002

Schwerpunktthema:
Himmlische Beziehungen - Schicksalhafte Begegnungen

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 02/5
September/Oktober 2002

Schwerpunktthema:
Sonne-Themen im Horoskop

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 02/4
Juli/August 2002

Schwerpunktthema:
Geburt - Tod - Transzendenz

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 02/2
März/April 2002

Schwerpunktthema:
Wissen und Weisheit

Ich bestelle
Stück für je EUR 5.-
   V

Ausgabe 01/6
November/Dezember 2001

Schwerpunktthema:
Schicksal-Freiheit-Verantwortung

Ich bestelle
Stück für je EUR 5.-
   V

Meridian im Abonnement:
Probeabo
3 fortlaufende Hefte zum Kennenlernen

Preise inkl. Versandkosten
Inland EUR 14.50 / Ausland EUR 17.-

Ich bestelle
Probeabo $pra_zr
Sie erhalten ein vergünstigtes Probeabo, beginnend mit der nebenstehenden Ausgabe. Wenn Ihnen Meridian gefällt und Sie bis spätestens 14 Tage nach Erhalt des 3. Heftes nicht absagen (kurze eMail oder Anruf genügt) erhalten Sie danach Meridian automatisch im regulären Abonnement.

Jahresabonnement
6 fortlaufende Hefte

Preise inkl. Versandkosten
Inland EUR 38.- / Ausland EUR 43.-

Ich bestelle
Abonnement $abo_zr
Sie erhalten regelmäßig, beginnend mit der nebenstehenden Ausgabe, jeweils zum 1. der ungeraden Monate das aktuelle Heft bequem nach Hause. Das Abonnement verlängert sich automatisch, wenn Sie nicht spätestens 14 Tage nach Erhalt des letzten Heftes kündigen.

$err[0]

Ihre Bestellung versenden wir gegen Rechung.
Sie können auch von Ihrem Konto abbuchen lassen
(Bitte dazu Konto und BLZ im Feld Mitteilung angeben)
Wichtige Hinweise für Zahlungen aus dem Ausland finden Sie in unserer
Auslandskunden-Information.
(Angaben mit * benötigen wir für die Bearbeitung)
Anrede
Frau Herr An
Vorname*
Name*

Strasse und Nr.*

Land* EU-Länder und CH zum Auswählen / anderes Land
PLZ*, Ort*
Tel. und Fax
eMail
für Rückfragen, keine Weitergabe durch uns.

Ihr Anliegen
Sie können uns neben Bestellungen auch Adressänderungen, Kündigungen und andere Mitteilungen senden.


Mitteilung
Hier ist etwas Platz für eine kurze Mitteilung an unsere Aboverwaltung, wenn gewünscht.

...weiter
Daten nochmals zusammengestellt kontrollieren, ggf. Porto anzeigen.

$msg
~ ; } #=========================================================================== # FORMULAR #Eingaben checken, verzweigen #=========================================================================== sub check_edit { my %FM=&parse_form(\$query) ; # Hier kommen die Formulardaten aus dem Query-String my $w; $err[0]=''; $erz=0; #print "Datum in Check: tkz=$FM{'tkz'}, SLC=$FM{'slc'}
"; #$err[0].=&check_datum($FM{'tag'},$FM{'mon'},$FM{'jahr'},1); #$err[0].=&check_bereich($FM{'stu'},'Geburts-Stunde',0,23,0); #$err[0].=&check_box($FM{'anrede'},'Anrede',1); $err[0].=&check_text($FM{'vorname'},'Vorname',1); $err[0].=&check_text($FM{'name'},'Nachname',1); $err[0].=&check_text($FM{'strasse'},'Strasse',1); $err[0].=&check_text($FM{'plz'},'PLZ',1); $err[0].=&check_text($FM{'ort'},'Ort',1); $err[0].=&check_mail($FM{'email'},0); if($FM{'vorname'} eq $FM{'name'}){ $err[0].= 'Name richtig angeben!'; } if ($err[0] ne ''){$erz++}; return $erz; # uebergibt Fehlerzahl } ############################################################################ # Bestellung berechnen und anzeigen # wird aufgerufen vom submit-Button des Edit-Formulares # - versendet Info-Mail ############################################################################ sub dat_save { my %FM=&parse_form(\$query) ; # liest + editiert Vars, gibt sie in %FM zurück my @tmp; #Rueckgabefeld my $fname=$FM{'fname'}; my $pfad; my $stat=''; my ($z,$t,); my ($id,$dir); my ($ta,$tm,$tm2,$te,$sum,$pst,$port,$ptx,$pz,$ep,$k,$t); $ta=''; $tm=''; $tm2=''; $te=''; $sum=0;$pst=0;$port=0; #Rechnungsbetrag, Porto-Stueck, Portobetrag $stat=''; foreach $k (@plist) # Kuerzel, Postenname, Einzelpreis { $z=$k; if ((substr($z,0,1) eq '0') or (substr($z,0,1) eq '1')) # Einzelhefte { $z=~ s/_/\//g; # Tiefstrich durch Slash ersetzen if (substr($z,0,4) eq substr($abo_zr,0,4)) { $t='akt. Einzelheft '.$z; $ep=7; if ($FM{$k} >0) # etwas hiervon bestellt? { $pz=sprintf("%.2f",$FM{$k}*$ep); # Anzahl*Preis berechnen $ep=sprintf("%.2f", $ep); $stat.=$ta.$FM{$k}.' x '.$t.$tm.' a '.$ep.' EUR'.$tm.' '.$pz.' EUR'.$te; $sum+=$pz; # aufsummieren $pst=$pst+$FM{$k}; # StŸckzahl gesamt fuer Porto } } else { # aeltere Einzelhefte $t='Einzelheft '.$z; $ep=5; if ($FM{$k} >0) # etwas hiervon bestellt? { $pz=sprintf("%.2f",$FM{$k}*$ep); # Anzahl*Preis berechnen $ep=sprintf("%.2f", $ep); $stat.=$ta.$FM{$k}.' x '.$t.$tm.' a '.$ep.' EUR'.$tm.' '.$pz.' EUR'.$te; $sum+=$pz; # aufsummieren $pst=$pst+$FM{$k}; # StŸckzahl gesamt fuer Porto } } } } # Ende foreach (nur Einzelhefte) $k='Sonderheft'; $t='Sonderheft Astrologie & Computer'; $ep=8.00; # Sonderheft if ($FM{$k} >0) { if ($FM{'land'} ne 'DEUTSCHLAND') {$ep=8.00}; $pz=sprintf("%.2f",$FM{$k}*$ep); # Anzahl*Preis berechnen $ep=sprintf("%.2f", $ep); $stat.=$ta.$FM{$k}.' x '.$t.$tm.' a '.$ep.' EUR'.$tm.' '.$pz.' EUR'.$te; $sum+=$pz; # aufsummieren if ($FM{'land'} eq 'DEUTSCHLAND') {$port=2 ; $ptx='Inland'} else {$port=3 ; $ptx='Ausland'} if ($ptx ne ''){ $port=sprintf("%.2f", $port); $stat.=$ta.'Versandk. Sonderheft:'.$tm.' '.$ptx.$tm.' '.$port.' EUR'.$te; $sum+=$port; # aufsummieren } } $k='pra'; $t='Probeabo '.$pra_zr; $ep=14.50; # Probeabo if ($FM{$k} >0) { if ($FM{'land'} ne 'DEUTSCHLAND') {$ep=17}; $pz=sprintf("%.2f",$FM{$k}*$ep); # Anzahl*Preis berechnen $ep=sprintf("%.2f", $ep); $stat.=$ta.$FM{$k}.' x '.$t.$tm.' a '.$ep.' EUR'.$tm.' '.$pz.' EUR'.$te; $sum+=$pz; # aufsummieren } $k='abo'; $t='Abonnement '.$abo_zr; $ep=38; # Jahresabo if ($FM{$k} >0){ if ($FM{'land'} ne 'DEUTSCHLAND') {$ep=43}; $pz=sprintf("%.2f",$FM{$k}*$ep); # Anzahl*Preis berechnen $ep=sprintf("%.2f", $ep); $stat.=$ta.$FM{$k}.' x '.$t.$tm.' a '.$ep.' EUR'.$tm.' '.$pz.' EUR'.$te; $sum+=$pz; # aufsummieren } if ($pst>0) #Einzelhefte vorhanden? { if ($FM{'land'} eq 'DEUTSCHLAND') { if ($pst==1) {$port=1 ; $ptx='Inland, 1 Stück';} if (($pst>1)&&($pst<3)) {$port=1.4 ; $ptx='Inland, 2 Stück';} if (($pst>2)&&($pst<5)) {$port=2 ; $ptx='Inland, 3-4 Stück';} if ($pst>4) {$port=0; $ptx='portofrei';} } else { if ($pst==1) {$port=1.4 ; $ptx='Ausland, 1 Stück';} if (($pst>1)&&($pst<3)) {$port=1.9 ; $ptx='Ausland, 2 Stück';} if (($pst>2)&&($pst<4)) {$port=2.4 ; $ptx='Ausland, 3 Stück';} if (($pst>3)&&($pst<5)) {$port=3 ; $ptx='Ausland, 4 Stück';} if ($pst>4) {$port=0; $ptx='portofrei';} } if ($ptx ne ''){ $port=sprintf("%.2f", $port); $stat.=$ta.'Versandkosten:'.$tm.' '.$ptx.$tm.' '.$port.' EUR'.$te; $sum+=$port; # aufsummieren } } if ($sum>0) { $sum=sprintf("%.2f", $sum); $stat.=$ta.'Rechnungsbetrag'.$tm2.' '.$sum.' EUR'.$te; $FM{'rchbetr'}=$sum; $FM{'stueck'}=$pst; $FM{'porto'}=$port; $FM{'ustbetr'}=0; if (($FM{'land'} ne 'SCHWEIZ') && ($FM{'land'} ne 'XX')) { $FM{'ustbetr'}=sprintf("%.2f", $sum*0.0654); $stat.=$ta.'Der Rechnungsbetrag '.$tm.'enthält 7% ('.$FM{'ustbetr'}.' EUR) Mwst.'.$te; } } else {$stat.=$ta.'Es wurde nichts ausgewählt!'.$tm2.$te;} if ($FM{'land'} eq 'XX'){$FM{'land'}=$FM{'altland'}}; if ($FM{'anliegen'} eq 'Bestellung') {$stat='Ihre Bestellung


'.$stat .$ta.'

Versand- und Rechnungsadresse:'.$tm2.$te} else {$stat='Ihre '.$FM{'anliegen'}.'


' .$ta.'

Ihre Adresse:'.$tm2.$te} $stat.=$ta.'Name:' .$tm.$FM{'vorname'}.' '.$FM{'name'}.$tm.$te .$ta.'Strasse:' .$tm.$FM{'strasse'}.$tm.$te .$ta.'Ort:' .$tm.$FM{'plz'}.' '.$FM{'ort'}.$tm.$te .$ta.'Land:' .$tm.$FM{'land'}.$tm.$te ; if ($FM{'tel'}){$stat.=$ta.'Tel:' .$tm.$FM{'tel'}.$tm.$te} if ($FM{'fax'}){$stat.=$ta.'Fax:' .$tm.$FM{'fax'}.$tm.$te} if ($FM{'email'}){$stat.=$ta.'eMail:' .$tm.$FM{'email'}.$tm.$te} $stat.='
'; if ($FM{'text'}){$stat.='
Text: '.$FM{'text'}.'
'} ### Alle Daten nun in den Query-String einbauen: $stat.='
'; foreach $n (@dlist) {$stat.=''} foreach $n (@plist) {$stat.=''} #-------- debug-Ausgabe der Var-Werte ------- my $deb=0; if ($deb){ foreach $n (@dlist) {$stat.=$n.' = '.$FM{$n}.'
'} foreach $n (@plist){$stat.=$n.' = '.$FM{$n}.'
'} } #-------- $stat.='

' .'


' .'Diese '.$FM{'anliegen'}.' geht per Mail an die Meridian-Aboverwaltung
' .'und wird werktäglich bearbeitet.
' .'Rückfragen unter Tel. +49 (0)30 - 61 10 52 84 (Mo-Fr, 8-17h)
' .'Der Herausgeber von Meridian ist die Jehle & Garms oHG,
' .'Hochfirstweg 12, D-79853 Lenzkirch, Handelsregister Freiburg HRA533N, St.Nr. 07062/02033
' .'
'; #&add_log($fname,'Formular gespeichert.'); $tmp[3]=1; # Rückgabewert print qq($stat ); # Meldung ausgeben $tmp[0]=''; #pasword $tmp[1]=$fname; $tmp[2]=$FM{'slc'}; return (@tmp); } ############################################################################ # Daten als Mail versenden ############################################################################ sub r_send { my %FM=&parse_form(\$query) ; # liest + editiert Vars, gibt sie in %FM zurück my ($stat,$subj,$r1); my $mailprog = '/usr/lib/sendmail -t'; my $subj='Shop: '.$FM{'anliegen'}. ' von '.$FM{'vorname'}.' '.$FM{'name'}."\n"; my $from='shop@meridian-magazin.de'; my $tx="--- $FM{'anliegen'} aus dem Meridian Onlineshop ---\n"; my ($n,$b,$t); $stat.='Danke für Ihre '.$FM{'anliegen'}.'!

'; my $i=0; # Adressdaten, Anliegen, Text foreach $n (@dlist) { $i++; if ($i==12){$FM{$n}=~ s/
/ /g} # HTML durch Space if ($i<10){$b='0'."$i"} else {$b="$i"} #Spaltenziffer zweistellig if ($i==12){$tx.="Bemerkung: "} if($FM{$n} ne ''){$tx.="$FM{$n}\n"} if ($i==10){$tx.="--------------------------------\nWerbecode: online\n"} # Leerzeile zwischen Mail (10) und Anliegen (11) }; #Bestelldaten if ($FM{'anliegen'} eq 'Bestellung') { foreach $n (@plist) { $i++; if ($i<10){$b='0'."$i"} else {$b="$i"}; # fuehrende Null einbauen if($FM{$n} >0) # wenn Bestellmenge > 0 { $t=' x '.$n; #Bezeichung Produkt if ((substr($n,0,2) eq substr($abo_zr,0,2)) and (substr($n,3,1) eq substr($abo_zr,3,1))) {$t.=' aktuelles'} if (substr($n,0,1) eq '0'){$t.=' Einzelheft'} if($n eq 'abo'){$t=' x Abo '.$abo_zr} if($n eq 'pra'){$t=' x Probe-Abo '.$pra_zr} if($n eq 'rchbetr'){$t=' EUR Rechnungsbetrag brutto'} if($n eq 'ustbetr'){$t=' EUR Mwst.-Betrag'} if($n eq 'porto'){$t=' EUR Versandkosten fuer '} if($n eq 'stueck'){$t=' Heft(e)'} $tx.="$FM{$n}$t\n"; } if ($i==23){$tx.="\n"} # Leerzeile zwischen Posten und Rechnungsdaten }; } # $name,$text, $subject, $sender, $empfaenger #$FM{'email'} #&mail_gen('Test',$stat,$subj,'m.garms@sternwerkstatt.de','m.garms@sternwerkstatt.de'); # {$stat.='Mail verschickt'} else {$stat.='Mail nicht verschickt'} if ($mail_to1 ne '') # senden wenn Senderadresse global definiert { $r= open(MAIL,"|$mailprog");# Open The Mail Program print MAIL "To: $mail_to1\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subj\n"; print MAIL "$tx\n"; close (MAIL); } if ($mail_to2 ne '') # senden wenn Senderadresse global definiert { $r= open(MAIL,"|$mailprog"); print MAIL "To: $mail_to2\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subj\n"; print MAIL "$tx\n"; close (MAIL); } if($r){$stat.='Die '.$FM{'anliegen'}.' wurde erfolgreich verschickt.

'} else {$stat.='Fehler: Mail konnte nicht verschickt werden.

'} $stat.='
-> zurück zur Meridian-Homepage.
'; print qq($stat ); # Meldung ausgeben } ############################################################################ # SUM-Datei als Status ausgeben ############################################################################ sub status { my $stat='Übersicht der bisher eingegangenen Fragebögen:

'; my $dir='data'; my @f; my @d; my $kw=0; my $km=0; my $kachs=0; my $kastro=0; my $pz=0; my $pzw=0; my $pzm=0; my $pzi=0; my $pzd=0; my $n; my ($z,$links); #Alle Fragenbogen-dateien in @f sammeln opendir (ETC , $dir) || die "newsverw: Kann Verzeichnis |$dir| nicht lesen !" ; foreach $n (readdir(ETC)) { push (@f,$n) if ($n !~ /\./) && ($n ne 'sum') ; # nur, wenn kein . wegen Datei '.' und '..' } close (ETC) ; foreach $n (@f) { open (DAT , "< data/$n") || die "Kann die Datei |$n| nicht oeffnen" ; chop(@d=); close (DAT) ; $z=@d; # print "geladen: $n id=$d[0] z=$z
"; # Inhalte der Dateien abfragen und VARs hochzaehlen # 0=id 1=name 2=email 3=tag 4=mon 5=jahr 6=stu 7=min 8=gort 9=sex # 10=abuch 11=tkz # 12=tag1 etc... if ($d[9] eq 'w'){$kw++}; # oder mit &getline('sex') if ($d[9] eq 'm'){$km++}; # sex if (($d[6] ne '') && ($d[8] ne '')){$kachs++}; # stu+ort if ($d[10] eq '1'){$kastro++}; #abuch $links.="-> ".$n.''; for $z (1..12) { if ($d[$z*7+7] ne '') # jahr1..12 { if ($d[$z*7+8] eq 'w'){$pzw++}; #sex if ($d[$z*7+8] eq 'm'){$pzm++}; #sex if ($d[$z*7+10] eq '1'){$pzi++}; #int if ($d[$z*7+11] ne ''){$pzd++}; #detail $pz++; $links.=" - P".$z.'' } } $links.='
'; } $z=$kw+$km; $stat.=''.$z.' Kandidaten gesamt.
' .$kw.' weibliche, '.$km.' männliche Kandidaten.
' .$kachs.' Kandidaten mit Zeit- und Ortsangabe.
' .$kastro.' Kandidaten mit Astrokenntnissen.
' .''.$pz.' Partner gesamt:
' .$pzi.' als intensiv gekennzeichnet.
' .$pzd.' mit Detailangaben.
' .$pzw.' sind weiblich, '.$pzm.' männlich.
' .'
' .$links; print qq($stat); # Meldung ausgeben } ############################################################################ # Aendert Wert in einzelnenr Zeile # Pars: fname,Kuerzel,Wert ############################################################################ sub saveline { my $pfad=$_[0]; my $kz=$_[1]; my $w=$_[2]; my($line,$z,$nr); my @tmp; my $r=0; if(($pfad ne '') && (-e "data/$pfad")) # Datei existiert { open (DAT , "< data/$pfad") || die "Datei $pfad konnte nicht geoeffnet werden!"; $z=1; while($line=) { @tmp[$z] = $line ; # $z++; } close (DAT) ; if ($kz =~ /detail/) { $nr=substr($kz,length($kz)-1,1); #Partnernummer $nr =12+$nr*7; # zeilennummer @tmp[$nr] ="$w\n"; #print qq(Zeile: $nr W=$w,); $r=1; } open (DAT , "> data/$pfad") || die "Kann die Datei $pfad nicht schreiben !!"; print DAT @tmp; close(DAT) ; } return $r; } ############################################################################ # Gibt Zeilenindex 1-n auf Kuerzel. Wenn Kuerzel falsch,0 # Pars: Kuerzel ############################################################################ sub getline { my $kz=$_[0]; my $xz=@klist-1; my $z=0; my $ix=0; while (($ix==0) || ($z<$xz)) { if ($klist[$z] eq $kz){$ix=$z+1} #print "$z=$klist[$z]
"; $z++ } return $ix; } ############################################################################ # Textfeld-Check: Wert, Bezeichner, Eintrag erforderlich=1 # gibt '' zurueck, wenn ok, sonst Fehlermeldung ############################################################################ sub check_text { my $w=$_[0]; # Wert my $bez=$_[1]; # Bezeichner my $erf=$_[2]; # Eintrag erforderlich=1 my $err; if ($erf) { if ($w eq ''){$err='- '.$bez.'? Es wurde noch keine Angabe gemacht.
'} } return $err; } ############################################################################ # Checkbox-Check: Wert, Bezeichner, Eintrag erforderlich=1 # gibt '' zurueck, wenn ok, sonst Fehlermeldung ############################################################################ sub check_box { my $w=$_[0]; # Wert my $bez=$_[1]; # Bezeichner my $erf=$_[2]; # Eintrag erforderlich=1 my $err; if ($erf) { if ($w eq ''){$err='- '.$bez.'? Es wurde noch keine Angabe gemacht.
'} } return $err; } ############################################################################ # Datums-Check: Tag, Monat, Jahr, Eintrag erforderlich=1 # gibt '' zurueck, wenn ok, sonst Fehlermeldung ############################################################################ sub check_datum { my $tag=$_[0]; # Tag my $mon=$_[1]; # Monat my $jahr=$_[2]; # Jahr my $erf=$_[3]; # Eintrag erforderlich=1 my $err; my $tz=30; if ($erf) { if (!$tag){$err.='- Es wurde kein Tag angegeben.
'} if (!$mon){$err.='- Es wurde kein Monat angegeben.
'} if (!$jahr){$err.='- Es wurde kein Jahr angegeben.
'} if ($err){$err.=' Die vollständige Datumsangabe ist erforderlich.
'} } if (!$err) { if ($mon==1||$mon==3||$mon==5||$mon==7||$mon==8||$mon==10||$mon==12){$tz=31} if ($mon==2){$tz=29} $err.=&check_bereich($tag,'Tag',1,$tz,0); $err.=&check_bereich($mon,'Monat',1,12,0); $err.=&check_bereich($jahr,'Jahr',1800,2010,0); } return $err; } ############################################################################ # Bereichs-Check: Wert, Bezeichner, min, max, Eintrag erforderlich=1 # gibt '' zurueck, wenn ok, sonst Fehlermeldung ############################################################################ sub check_bereich { my $w=$_[0]; # Wert my $bez=$_[1]; # Bezeichnung my $min=$_[2]; # Minimum my $max=$_[3]; # Maximum my $erf=$_[4]; # Eintrag erforderlich=1 my $err; if ($erf && !$w) { $err='- '.$bez.' darf nicht leer sein.
'; } elsif ($w) # es kann auch nichts angegegeben worden sein { if ($w < $min){$err='- '.$bez.'-Wert "'.$w.'" ist zu klein. '} if ($w > $max){$err='- '.$bez.'-Wert "'.$w.'" ist zu groß. '} if ($err){$err.='Der Wert muss zwischen '.$min.' und '.$max.' liegen.
'} } return $err; } ############################################################################ # Mail-Check: # gibt '' zurueck, wenn ok, sonst Fehlermeldung ############################################################################ sub check_mail { my $w=$_[0]; # Mailadresse my $erf=$_[1]; # Eintrag erforderlich=1 my $err; if ($erf && !$w) { $err='- Die Mailadresse ist erforderlich.'; } elsif ($w) # es kann auch nichts angegegeben worden sein { if ($w !~/@/){$err='- Das @ in der Mailadresse fehlt.
'} if ($w =~ / /){$err.='- Leerzeichen in der Mailadresse sind ungültig.
'} } return $err; } ############################################################################ # HTML-Head ############################################################################ sub html_head { my $titel=shift ; my $titelr=shift ; my $menue; #mit HTML #- ohne HTML #- mit Text #- ohne Text || if ($titel=~ /Admin/i) { $menue="" #"Statische Seiten erzeugen" ."| CONFIG" ."| Mail-Liste" .'| Suche'; } else { $menue='zurück zur DAV-Homepage'; } $menue=''; #$menue.=' Status' ; ### target="_blank" #Ausgabe print "Content-Type: text/html\n\n" ; print <<"EOM" ; $titel
 $titel $titelr
$menue

EOM } ############################################################################ # HTML-Foot ############################################################################ sub html_foot { my $adminlink = ( -e "config.link" ? qq( || CONFIG) : " " ) ; print <<"EOM" ;


© M.Garms 2002 Script-Basis by perluntiy.de

EOM } ############################################################################ # Daten separat in Daten-Dateien schreiben # par 1=fname, par2='name' des zu schreibenden Feldes, Par3= Wert ############################################################################ sub ed_data { my $fname=$_[0]; my $n=$_[1]; my $w=$_[2]; my @d=('vorname','name','strasse','plz','ort','tel','email', 'text','urltext','url','regiotext','aztext','datum','slc') ; my ($ix,$z); $ix=100; for $z (0..@d-1) {if ($d[$z] eq $n){$ix=$z}} #print "in ed_data: $fname,$n,$w Index=$ix
"; my @b; if ($ix<100) #gefunden? { if (-e "../data/$fname") { #Eintrag laden open (DAT , "< ../data/$fname") || die "Konnte |$fname| nicht oeffnen!"; @b= ; close (DAT) ; $b[$ix]=$w."\n"; # neuer Wert #print "Wert $n mit Index=$ix schreiben: neu=$w alt=$b[$ix]"; open (DAT , "> ../data/$fname") || die "Konnte in |$fname| nicht schreiben!"; print DAT @b; close (DAT) ; } } } ############################################################################ # Alle Emails aus den Daten-dateien extrahieren und anzeigen # $FM{'nabt'}; #selector des Aufrufers 'p' etc bei Newsbereich, 'd' bei Admin ############################################################################ sub mailliste { my %FM=&parse_form(\$query) ; # Hier kommen die Formulardaten aus dem Query-String my $nomail=0; my $mail=0; my @adr; my ($vorname,$name,$strasse,$plz,$ort,$tel,$email, $text,$urltext,$url,$regiotext,$aztext,$datum,$slc) ; my $t; if ($FM{'nabt'} eq 'd') {$t='alle User'} else {$t=&get_newsvar($FM{'nabt'},'nam')} # Name Newsbereich print '

Mailadressen für '.$t.'

'; my $nabt='M'.$FM{'nabt'}; #selector des Aufrufers 'p' etc bei Newsbereich, 'd' bei Admin opendir (ETC , "$data_dir") || die "Kann das Verzeichnis -$data_dir- nicht lesen!" ; #print "nabt=$nabt"; foreach my $fname (readdir(ETC)) { #Eintrag laden open (DAT , "< ../data/$fname") || die "Konnte -$fname- nicht oeffnen!" ; chop (($vorname,$name,$strasse,$plz,$ort,$tel,$email, $text,$urltext,$url,$regiotext,$aztext,$datum,$slc)=) ; close (DAT) ; #print " slc=$slc, fname=$fname
"; if ($nabt eq 'Md' || $slc=~ m/$nabt/) { if ($email) { print "$email,
"; $mail++; } else{ $nomail++; if ($name){push(@adr,"$vorname, $name
$strasse , $plz, $ort
$tel

")}; } } } close (ETC); print "

$mail Einträge haben eMail, $nomail keine:

@adr"; } ############################################################################# #Mailversand ############################################################################# sub mail_gen { my $name=$_[0]; my $text=$_[1]; my $subject=$_[2]; my $sender=$_[3]; my $mailadr=$_[4]; $name='m.garms@sternwerkstatt.de'; $text='Dies ist der neue Mailtext'; $subject='testmail 2'; $sender='m.garms@sternwerkstatt.de'; $mailadr='m.garms@sternwerkstatt.de'; my $mailprog = '/usr/lib/sendmail -t'; # Open The Mail Program open(MAIL,"|$mailprog -t"); print MAIL "To: $mailadr\n"; print MAIL "From: $sender\n"; print MAIL "Subject: $subject\n"; print MAIL "$text\n"; close (MAIL); # my ($temp,$mailtmpl,$date_format,$text_len)=&load_template("news_mail.txt") ; # my %TMPL=('TITLE',$name,'TEXT',$text) ; #Datum my ($y,$m,$d,$h,$i) = ($newdate =~ /(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/) ; $TMPL{'DATE'} = $date_format ; $TMPL{'DATE'} =~ s/Y/$y/g; $TMPL{'DATE'} =~ s/M/$m/g; $TMPL{'DATE'} =~ s/D/$d/g; $TMPL{'DATE'} =~ s/H/$h/g; $TMPL{'DATE'} =~ s/I/$i/g; #Textlänge $TMPL{'TITLE'}=substr($TMPL{'TITLE'},0,$text_len) if ($text_len>0) ; $TMPL{'TEXT'}=~ s/
/\n/ig ; $TMPL{'TEXT'}=~ s/

/\n\n/ig ; $TMPL{'TEXT'}=~ s/<([^>]|\n)*>/ /g ; #Werte einsetzen #$mailtmpl =~ s/\[NEWS_(.*?)\]/$TMPL{$1}/g ; #$mailtmpl =~ s///g ; $r=&mailing($mailadr,$sender,$subject,$text) ; #$r="gesendet: $mailadr,$sender,$subject,$text"; # print "&mailing:$sender,$subject,$mailtmpl"; #return $r; } ############################################################################ # ADMIN: Das eigentliche Mailing # UNIX/Linux -> wird per Sendmail verschickt # MAIL-LOG'= 'datei' lokales speichern 'mail' versenden, anderes=off ############################################################################ sub mailing { my ($mailto,$mailfrom,$mailsub,@mailtext) = @_ ; my $fname=&date_time; #my $mprog='./usr/lib/sendmail'; #my $mprog='../usr/sbin/sendmail'; my $mprog='/usr/lib/sendmail -t'; my $r; ### #Mail per SENDMAIL unter Unix verschicken my $to='m.garms@sternwerkstatt.de'; my $from='m.garms@sternwerkstatt.de'; my $subject='testmail'; my $text='Dies ist der neue Mailtext'; my $mailprog = '/usr/lib/sendmail -t'; # Open The Mail Program open(MAIL,"|$mailprog -t"); print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "$text\n"; close (MAIL); $mailtmp=join(/ /,@mailtext) ; #open(MAIL,"|$mailprog -t"); #open(MAIL,"| $mprog -t") || die "Kann die E-Mail ueber -$mprog- nicht verschicken. Es ist eventl. der falsche sendmail-Pfad eingestellt." ; #print MAIL "To: $mailto\n"; #print MAIL "From: $mailfrom\n"; #print MAIL "Subject: $mailsub\n\n" ; #print MAIL $mailtmp ; #close (MAIL) ; } ############################################################################ # ENDE ############################################################################