#!/usr/bin/perl ############################################################# # Userverwaltung Login, Registrieren und Passwort zusenden # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Powered by XL-SOFT # E-Mail: info@xl-soft.de # Webseite: http://www.xl-soft.de ############################################################# use CGI::Carp qw(fatalsToBrowser); # Dateiflock use Fcntl qw(:DEFAULT :flock); use CGI qw(:standard); use CGI; use DBI; $object = new CGI; @names = $object->param(); %FORM = map {$_ => $object->param($_)} $object->param(); $| = 1; ############################################################## # Name des Programms $progname = "login.cgi"; # Name der Userdatei $userprog = "user.cgi"; # Benoetigte Dateien einbinden require "setup/setup.pl"; require "setup/version.pl"; require "setup/extraconfig.pl"; require "routinen/module/scriptlibrary.pl"; require "routinen/module/datenbank.pl"; use lib "routinen/module/"; use Archive::FRWtools; # Mit DB Verb &verbinden; # Fehlerpruefung $fehlermeldung = ""; $fehler_gefunden = ""; # ----------------------------------------------------------------------- $errormeldung = "
  • Der Shopserver ist derzeit wegen Wartungsarbeiten geschlossen\n" ; if (-e "$cgipfad/setup/globalclose.txt") { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } # ----------------------------------------------------------------------- if ($fehler_gefunden) { &fehlerausgabeverwaltung; exit; } $hauptmenue = &hauptmenue; # Logintestfiles nach 1 Tag loeschen FRWtools::daytmpdel("$cgipfad/logins", "1"); # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Aufrufparameter der Haupt und Modulroutinen # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # $subaufrufparameter = $FORM{'aktion'}; if ($subaufrufparameter eq '') { &login; } elsif ($subaufrufparameter =~ m/^(logincheck|pwsend|register|sendadmin|sendkey|sendfree|key|keycheck|pc|pcfree)$/) { &$subaufrufparameter; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Loginformular und Passwortversand fuer registrierte Benutzer # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub login { $sektionstitel = "Login und Passwort versenden Formular"; &Headerout; print &tparser("$cgipfad/templates/user/header.html"); print &tparser("$cgipfad/templates/user/contentkopf.html"); print qq~
    » Login für Benutzerbereich
    $loginfehlertext  
    Falls Sie noch nicht registriert sind können Sie sich hier anmelden
    Username
    Passwort
    Hinweis!
    Bitte sicherstellen das der Browser Cookies akzeptiert, ansonsten ist kein Login möglich.



    » Zugangsdaten vergessen?
    Geben Sie Ihre E-Mail Adresse an um die Zugangsdaten zur Shopverwaltung zu erhalten
    E-Mail Adresse
    ~; print &tparser("$cgipfad/templates/user/contentfuss.html"); } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Logincheck und Cookiesetzen # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub logincheck { $loginpass = datensaver($FORM{'loginpass'}); $loginuser = datensaver($FORM{'loginuser'}); if (($loginuser eq '') || ($loginpass eq '')) { $loginfehlertext = "Kein Username oder Passwort angegeben!"; &login($loginfehlertext); exit; } # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz my $members = $prefix . "members"; my $sth = $dbh->prepare("SELECT mid, user, pass, free FROM $members WHERE user = '$loginuser' LIMIT 1"); $sth->execute or die DBI->errstr; ($memberid, $memberuser, $memberpw, $memberfree) = $sth->fetchrow(); my $salt = substr($memberpw, 0,2); my $cryptedlogin = crypt($loginpass, $salt); $ende_cookdate = datumsroutine("EI","1","0"); if ($loginuser eq $memberuser && $cryptedlogin eq $memberpw && $memberfree != 1) { $loginfehlertext = "Ihr Shopserverserverzugang ist nicht freigeschaltet oder fordert gerade ein neues Passwort an"; &login($loginfehlertext); exit; } elsif ($loginuser ne $memberuser || $cryptedlogin ne $memberpw) { $loginfehlertext = "Keine oder falsche Zugangsdaten eingegeben!"; &login($loginfehlertext); exit; } elsif ($loginuser eq $memberuser && $cryptedlogin eq $memberpw && $memberfree == 1) { print "Set-Cookie: usershoplogin=$memberid|$memberuser|$cryptedlogin; expires=$ende_cookdate\n"; $savelogmd = "$memberid|$memberuser|$cryptedlogin"; FRWtools::writelinie("$savelogmd", "$cgipfad/logins/$memberid.pl"); # Statistik updaten ########################################### # stid, shopid, startdatum, kundenzahl, wkanzahl, letzterwk, bestellungen, gesamtwert, artikelanzahl, verkaufteartikel, logins, letzter_login my $shopvz = sprintf("%6d",$memberid); $shopvz =~ tr/ /0/; $shopvznummer = 's' . $shopvz; if (-e "$cgipfad/shops/$shopvznummer/index.cgi") { my $login_sek = datumsroutine("HI"); my $shopstatistik = $prefix . "shopstatistik"; my $sth = $dbh->prepare("UPDATE $shopstatistik SET logins = logins + 1, letzter_login = '$login_sek' WHERE shopid = '$memberid'"); $sth->execute or die DBI->errstr; } ############################################################### print "Location: $cgiverzeichnis/$userprog \n\n"; } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # E-Mail pruefen und neuen Passwortfreischaltcode zusenden # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub pwsend { my $useremail = datensaver($FORM{'useremail'}); $useremail = lc($useremail); if ($useremail ne '') { my $members = $prefix . "members"; my $sth = $dbh->prepare("SELECT mid, vname, nname, email, free FROM $members WHERE email = '$useremail' LIMIT 1"); $gefunden = $sth->execute or die DBI->errstr; $gefundenanz = $gefunden eq "0E0" ? 0 : $gefunden; @mdata = $sth->fetchrow_array(); } # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz # Fehlerpruefung $fehlermeldung = ""; $fehler_gefunden = ""; # ----------------------------------------------------------------------- $errormeldung = "
  • Es wurden keine Daten eingegeben im Formular!\n" ; if ($useremail eq '') { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Dieser Account ist noch nicht freigeschaltet oder fordert gerade ein neues Paswort an!\n" ; if ($mdata[4] != 1) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Es wurden keine Daten zur angegebenen E-Mail Adresse gefunden!\n" ; if (!$gefundenanz) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } # ----------------------------------------------------------------------- if ($fehler_gefunden) { &fehlerausgabeverwaltung; exit; } else { $newuserkey = FRWtools::pw_gen("15", "3", "0"); my $members = $prefix . "members"; my $sth = $dbh->prepare("UPDATE $members SET pass = '', newpw = '$newuserkey', free = '0' WHERE mid = '$mdata[0]'"); $sth->execute or die DBI->errstr; # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz # Mail an User my $mailbodyt = <\n"; print MAIL "To: $mdata[3] ($mdata[1] $mdata[2])\n"; print MAIL "From: $adminemail ($sitetitel)\n"; print MAIL "Subject: Ihre Passwortanforderung zum Shopserverlogin\n\n"; print MAIL "$mailbodyt\n\n"; close MAIL; ###################### HTML Output &Headerout; $sektionstitel = "Daten wurden gesendet!"; print &tparser("$cgipfad/templates/user/header.html"); print qq~
    $sektionstitel
    Wichtiger Hinweis!

    Es wurde eine Mail mit einem Freischaltcode an die gefundene E-Mail Adresse gesendet. Um das neue Passwort zu erhalten befolgen Sie bitte die Hinweise in der E-Mail.

    Sie werden in 30 Sekunden automatisch weitergeleitet, wenn ihr Browser keine Weiterleitung unterstützt klicken Sie bitte auf diesen Link

    $scriptversionsinfo
    ~; } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Freischaltcode fuer neues Passwort eingeben # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub pc { $sektionstitel = "Eingeben des Freischaltcodes"; &Headerout; print &tparser("$cgipfad/templates/user/header.html"); print &tparser("$cgipfad/templates/user/contentkopf.html"); print qq~
    Geben Sie bitte in das Formular den zugesendeten Freischaltcode ein um das neue Passwort zu erhalten.
    Passwortcode
    ~; print &tparser("$cgipfad/templates/user/contentfuss.html"); } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Neues Passwort generieren und zusenden # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub pcfree { my $newpwkey = datensaver($FORM{'newpwkey'}); if ($newpwkey ne '') { my $members = $prefix . "members"; my $sth = $dbh->prepare("SELECT mid, vname, nname, email, user FROM $members WHERE newpw = '$newpwkey' LIMIT 1"); $keyok = $sth->execute or die DBI->errstr; $keyda = $keyok eq "0E0" ? 0 : $keyok; @mdata = $sth->fetchrow_array(); } # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz # Fehlerpruefung $fehlermeldung = ""; $fehler_gefunden = ""; # ----------------------------------------------------------------------- $errormeldung = "
  • Es wurden keine Daten eingegeben im Formular!\n" ; if ($newpwkey eq '') { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Es wurden keine Daten zu dem Passwortfreischaltcode gefunden!\n" ; if (!$keyda) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } # ----------------------------------------------------------------------- if ($fehler_gefunden) { &fehlerausgabeverwaltung; exit; } else { my $passwortnew = FRWtools::pw_gen("8", "3", "0"); my $randomsaltnew = FRWtools::pw_gen("2", "1", "0"); my $newcryptedpasswortnew = crypt($passwortnew, $randomsaltnew); my $members = $prefix . "members"; my $sth = $dbh->prepare("UPDATE $members SET pass = '$newcryptedpasswortnew', newpw = '', free = '1' WHERE mid = '$mdata[0]'"); $sth->execute or die DBI->errstr; # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz # Mail an User my $mailbodyt = <\n"; print MAIL "To: $mdata[3] ($mdata[1] $mdata[2])\n"; print MAIL "From: $adminemail ($adminname)\n"; print MAIL "Subject: Ihre Zugangsdaten zum Shopserverlogin\n\n"; print MAIL "$mailbodyt\n\n"; close MAIL; ###################### HTML Output &Headerout; $sektionstitel = "Neues Passwort wurde versendet!"; print &tparser("$cgipfad/templates/user/header.html"); print qq~
    $sektionstitel
    Wichtiger Hinweis!

    Es wurde eine Mail mit den neuen Zugangsdaten an Sie gesendet.

    Sie werden in 30 Sekunden automatisch weitergeleitet, wenn ihr Browser keine Weiterleitung unterstützt klicken Sie bitte auf diesen Link

    $scriptversionsinfo
    ~; } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Registrierung # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub register { $sektionstitel = "Registrierung"; &Headerout; # Anzahl Kunden my $members = $prefix . "members"; my $querymem = "SELECT COUNT(*) AS total FROM $members"; $gesamtmem = eintragsanzahl($querymem); # Fehlerpruefung $fehlermeldung = ""; $fehler_gefunden = ""; # ----------------------------------------------------------------------- $errormeldung = "
  • Derzeit sind keine Shopregistrierungen mehr möglich.\n" ; if ($gesamtmem > $maxshopanzahl) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } # ----------------------------------------------------------------------- if ($fehler_gefunden) { &fehlerausgabeverwaltung; exit; } else { print &tparser("$cgipfad/templates/user/header.html"); print &tparser("$cgipfad/templates/user/contentkopf.html"); # AGB auslesen open(F,"$cgipfad/setup/agb.dat")|| scripterror("Fehler: Kann $cgipfad/setup/agb.dat nicht oeffnen!",$!); &locksh(F); my $useragb = join('',); close(F); $useragb = textregex($useragb); # Grafische Pruefung opendir(DIR,"$cgipfad/tmpdaten"); @killfiles = grep {/^.*(\.grdat$)/i} readdir DIR; closedir(DIR); foreach $checkkill (@killfiles) { if ((-M "$cgipfad/tmpdaten/$checkkill" > 0.01 && $checkkill !~ /^.*(\.htaccess$)/)) { unlink("$cgipfad/tmpdaten/$checkkill"); } } $grapa = FRWtools::pw_gen("6", "1", "0"); $grapa = uc($grapa); @passgra = split(//, $grapa); %anmelde = ( A => "AZTFDF_1", B => "AGTBM_2", C => "AUHRDS_3", D => "ALLMNB_4", E => "ACXYA_5", F => "AEDCS_6", G => "AUHZTE_7", H => "AEEWQ_8", I => "AMNLOP_9", J => "ASDFG_10", K => "AXYAQW_11", L => "AIUZZT_12", M => "ABVKFL_13", N => "ASDEER_14", O => "ASAMLP_15", P => "AXCBMM_16", Q => "APLKGG_17", R => "ARFGGF_18", S => "AEDFVV_19", T => "ASDCMK_20", U => "AZHJJH_21", V => "AERKMP_22", W => "AQWCX_23", X => "AYHGKK_24", Y => "AOOPZGT_25", Z => "AERGBNN_26" ); foreach $kg (@passgra) { $keygrafik .= ""; } FRWtools::writelinie('', "$cgipfad/tmpdaten/$grapa.grdat"); $kgtab = qq~
    $keygrafik
    ~; # Wie aktivieren # sendadmin|sendkey|sendfree if ($freischalten == 1) { $setaction = 'sendadmin'; $anmeldehinweise = qq~Bitte beachten Sie folgendes:
    Alle neu angemeldeten Shops werden vom Betreiber erst nach Prüfung der Daten freigeschaltet. Sie erhalten nach der Freischaltung eine E-Mail mit den nötigen Zugangsdaten.~; } elsif ($freischalten == 2) { $setaction = 'sendkey'; $anmeldehinweise = qq~Bitte beachten Sie folgendes:
    Sie erhalten zunächst einen Freischaltkey an die angegebene E-Mail Adresse gesandt. Ist dieser, unter der in der Mail angegebenen URL eingegeben, wird der Shop angelegt. Sie erhalten danach eine E-Mail mit den nötigen Zugangsdaten.~; } elsif ($freischalten == 3) { $setaction = 'sendfree'; $anmeldehinweise = qq~Bitte beachten Sie folgendes:
    Sie erhalten ihre Zugangsdaten an die angegebene E-Mail Adresse gesandt. Beim ersten Login in die Shopadministration werden die nötigen Shopdaten automatisch angelegt.~; } # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz, memopt $landselect = laenderselect(''); ##################################################### # Bestelloptionen if ($bestopt eq 'YES' && $freischalten == 1) { my $bestellparam = $prefix . "bestellparam"; my $sth = $dbh->prepare("SELECT bt, bp, zz FROM $bestellparam"); my $success = $sth->execute or die DBI->errstr; $summe = $success eq "0E0" ? 0 : $success; my @groupdata = $sth->fetchrow_array(); my @groupdesc = split(/\|/, $groupdata[0]); chomp(@groupdesc); my @groupauf = split(/\|/, $groupdata[1]); chomp(@groupauf); $monatvzwort = $groupdata[2] < 3 ? 'Monat' : 'Monate'; $bestelloptionen = qq~ Auswahl des Shops mit der gewünschten Artikelanzahl
    Sie erhalten bei einer kostenpflichtigen Auswahl die Zahlungsmodalitäten in der Anmelde E-Mail mitgeteilt. Falls Sie später mehr Artikel benötigen als Sie jetzt bestellen - Sie können jederzeit ein höheres Artikellimit beantragen.
    Vorauszahlungszeitraum $groupdata[2] $monatvzwort (wenn Bestelloption kostenpflichtig) Bestelloptionen * ~; $bestelloptionen .= "\n\n"; } ##################################################### print qq~
    $bestelloptionen
    Tragen Sie bitte unterhalb Ihre Daten des ein.
    Bitte prüfen Sie die E-Mail Adresse vor dem absenden nochmals. Ist diese nicht korrekt kann die Registrierung nicht abgeschlossen werden.

    $anmeldehinweise
    Vorname *
    Zuname *
    Straße und Nr. *
    PLZ und Wohnort. *
    Land * $landselect
    E-Mail *
    Username *
    Wird geprüft auf Einmaligkeit, bitte nur Buchstaben und Zahlen verwenden. Bitte beachten das der Username nicht geändert werden kann! Das Passwort wird automatisch generiert und an die angegebene E-Mail Adresse gesendet!
    Username * min. 3 Zeichen!
    Geben Sie die Buchstaben der unterhalb angezeigten Grafik in das Feld ein. (alles Großbuchstaben)
    $kgtab
    Unsere AGB/Regeln
    $useragb
    Einverstanden mit den AGB/Regeln *
    ~; print &tparser("$cgipfad/templates/user/contentfuss.html"); } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Registrierungsinfos an Admin senden zur Freischaltung # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub sendadmin { ############################### my $vname = datensaver($FORM{'vname'}); my $zname = datensaver($FORM{'zname'}); my $strnr = datensaver($FORM{'strnr'}); my $plz = datensaver($FORM{'plz'}); my $ort = datensaver($FORM{'ort'}); my $land = datensaver($FORM{'land'}); my $email = datensaver($FORM{'email'}); my $username = datensaver($FORM{'username'}); my $agb = datensaver($FORM{'agb'}); my $keystring = datensaver($FORM{'keystring'}); my $bestellopt = datensaver($FORM{'bestellopt'}); $keystring =~ s/[^A-Z0-9]//g; $username =~ s/[^a-zA-ZäöüÄÖÜß0-9]//g; $agb =~ s/[^A-Z]//g; $keyok = 0; if (-e "$cgipfad/tmpdaten/$keystring.grdat") { $keyok = 1 } $email = lc($email); if ($email ne '') { # Mailaddycheck $vorhandenmail = mailchecker($email); } if ($username ne '') { # Usernamecheck $vorhandenkunde = userchecker($username); } # anmeldung fuer Mailaddy erlaubt $anmeldungerlaubt = check_mailsperre($email); # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz #if ($ENV{'REQUEST_METHOD'} eq "GET") { #print "

    GET REQUEST FORBIDDEN

    \n"; #exit; #} # Fehlerpruefung $fehlermeldung = ""; $fehler_gefunden = ""; # ----------------------------------------------------------------------- $errormeldung = "
  • Sorry, diese E-Mail Adresse oder Domain \"$email\" ist für Anmeldungen gesperrt. \n" ; if ($anmeldungerlaubt == 1) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Ihre Daten der Grafischen Anmeldeüberprüfung sind fehlerhaft!\n" ; if (!$keyok) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Es existiert schon ein Benutzer mit dem angegebenen Benutzername.\n" ; if ($vorhandenkunde) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Es existiert schon ein Benutzer mit der angegebenen E-Mail Adresse.\n" ; if ($vorhandenmail) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Vorname\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($vname eq '') || (length($vname) > 50)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Zuname\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($zname eq '') || (length($vname) > 50)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Straße und Nr.\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($strnr eq '') || (length($strnr) > 100)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"PLZ\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($plz eq '') || (length($plz) > 10)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Wohnort\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if ((length($ort) < 1) || (length($ort) > 100)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Bitte geben Sie eine gültige E-Mail Adresse ein.\n"; if ($email !~ /^([a-zA-Z0-9][a-zA-Z_0-9-\.]*)(\@)([a-zA-Z0-9][a-zA-Z_0-9-\.]*[a-zA-Z0-9])(\.)([a-zA-Z0-9]*)$/) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Username\" wurde nicht oder nicht mit korrekten Daten ausgefüllt. Es sind nur Buchstaben und Zahlen zugelassen. Mindestens 3 Zeichen lang muss der Benutzername sein.\n" ; if ((length($username) < 3) || (length($username) > 30)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Die Checkbox \"Einverstanden mit den AGB/Regeln\" wurde nicht bestätigt.\n" ; if ($agb !~ /^JA$/) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } # ----------------------------------------------------------------------- if ($fehler_gefunden) { &fehlerausgabeverwaltung; exit; } if ($bestellopt ne '') { ($bestellvorauszahlung, $bestellpreis, $bestellart) = split(/#/,$bestellopt); } if ($bestopt eq 'YES' && $bestellpreis ne '0.00') { my $bestellparam = $prefix . "bestellparam"; my $sth = $dbh->prepare("SELECT bz, zz FROM $bestellparam"); $sth->execute or die DBI->errstr; @zahltext = $sth->fetchrow_array(); $zahltextmail = join('', $zahltext[0]); $zahltextmail =~ s/\[ppm\]/sprintf("%.2f",$bestellpreis) . " $waehrung"/eg; $zahltextmail =~ s/(\[pp3m\])/sprintf("%.2f",$bestellpreis*3) . " $waehrung"/eg; $zahltextmail =~ s/(\[pp6m\])/sprintf("%.2f",$bestellpreis*6) . " $waehrung"/eg; $zahltextmail =~ s/(\[ppj\])/sprintf("%.2f",$bestellpreis*12) . " $waehrung"/eg; $zahltextmail =~ s/(\[BANK\])/$betreiberkontonummer/g; } else { $zahltextmail = ''; } ############################### # Daten speichern und Mail senden my $aktuelles_datum = &aktuelles_datum(); my $userpasswort = FRWtools::pw_gen("8", "3", "0"); # ------------------------------------------------- # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz my $members = $prefix . "members"; my $sth = $dbh->prepare("INSERT INTO $members (mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz, memopt) VALUES('','$vname', '$zname', '$strnr', '$plz', '$ort', '$land', '$email', '$aktuelles_datum', '$username', '', '$userpasswort', '4', '0','', '$bestellopt')"); $sth->execute or die DBI->errstr; # ------------------------------------------------- # Mail an User my $mailbodyt = <\n"; print MAIL "To: $email ($vname $zname)\n"; print MAIL "From: $adminemail ($adminname)\n"; print MAIL "Subject: Ihre Anmeldung bei unserem Shopservice\n\n"; print MAIL "$mailbodyt\n\n"; close MAIL; # E-Mailtext an Admin my $mailbodyadmin = <\n"; print MAIL "To: $adminemail ($adminname)\n"; print MAIL "From: $email ($vname $zname)\n"; print MAIL "Subject: Neuer Benutzer beim Shopservice freizuschalten\n\n"; print MAIL $mailbodyadmin; close MAIL; unlink("$cgipfad/tmpdaten/$keystring.grdat"); ############################### $sektionstitel = "Registrierungsdaten versendet"; &Headerout; print &tparser("$cgipfad/templates/user/header.html"); print qq~
    $sektionstitel
    Ihre Anmeldungsdaten wurden gespeichert. Der Administrator erhält hierzu eine E-Mail und wird die Daten prüfen. Sie erhalten eine E-Mail mit den Zugangsdaten wenn ihr Shop freigeschaltet wurde.

    Sie werden in 10 Sekunden automatisch weitergeleitet, wenn ihr Browser keine Weiterleitung unterstützt klicken Sie bitte auf diesen Link

    $scriptversionsinfo
    ~; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Freischaltmail mit Regkey # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub sendkey { ############################### my $vname = datensaver($FORM{'vname'}); my $zname = datensaver($FORM{'zname'}); my $strnr = datensaver($FORM{'strnr'}); my $plz = datensaver($FORM{'plz'}); my $ort = datensaver($FORM{'ort'}); my $land = datensaver($FORM{'land'}); my $email = datensaver($FORM{'email'}); my $username = datensaver($FORM{'username'}); my $agb = datensaver($FORM{'agb'}); my $keystring = datensaver($FORM{'keystring'}); $keystring =~ s/[^A-Z0-9]//g; $username =~ s/[^a-zA-ZäöüÄÖÜß0-9]//g; $agb =~ s/[^A-Z]//g; $keyok = 0; if (-e "$cgipfad/tmpdaten/$keystring.grdat") { $keyok = 1 } $email = lc($email); if ($email ne '') { # Mailaddycheck $vorhandenmail = mailchecker($email); } if ($username ne '') { # Usernamecheck $vorhandenkunde = userchecker($username); } # anmeldung fuer Mailaddy erlaubt $anmeldungerlaubt = check_mailsperre($email); # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz, memopt # Fehlerpruefung $fehlermeldung = ""; $fehler_gefunden = ""; # ----------------------------------------------------------------------- $errormeldung = "
  • Sorry, diese E-Mail Adresse oder Domain \"$email\" ist für Anmeldungen gesperrt. \n" ; if ($anmeldungerlaubt == 1) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Ihre Daten der Grafischen Anmeldeüberprüfung sind fehlerhaft!\n" ; if (!$keyok) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Es existiert schon ein Benutzer mit dem angegebenen Benutzername.\n" ; if ($vorhandenkunde) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Es existiert schon ein Benutzer mit der angegebenen E-Mail Adresse.\n" ; if ($vorhandenmail) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Vorname\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($vname eq '') || (length($vname) > 50)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Zuname\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($zname eq '') || (length($vname) > 50)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Straße und Nr.\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($strnr eq '') || (length($strnr) > 100)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"PLZ\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($plz eq '') || (length($plz) > 10)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Wohnort\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if ((length($ort) < 1) || (length($ort) > 100)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Bitte geben Sie eine gültige E-Mail Adresse ein.\n"; if ($email !~ /^([a-zA-Z0-9][a-zA-Z_0-9-\.]*)(\@)([a-zA-Z0-9][a-zA-Z_0-9-\.]*[a-zA-Z0-9])(\.)([a-zA-Z0-9]*)$/) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Username\" wurde nicht oder nicht mit korrekten Daten ausgefüllt. Es sind nur Buchstaben und Zahlen zugelassen. Mindestens 3 Zeichen lang muss der Benutzername sein.\n" ; if ((length($username) < 3) || (length($username) > 30)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Die Checkbox \"Einverstanden mit den AGB/Regeln\" wurde nicht bestätigt.\n" ; if ($agb !~ /^JA$/) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } # ----------------------------------------------------------------------- if ($fehler_gefunden) { &fehlerausgabeverwaltung; exit; } ############################### # Daten speichern und Mail senden $aktuelles_datum = &aktuelles_datum(); $randuserkey = FRWtools::pw_gen("15", "3", "0"); # ------------------------------------------------- $savekeydata = "$randuserkey|$username"; FRWtools::writelinie("$savekeydata", "$cgipfad/tmpdaten/$randuserkey.key"); # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz, memopt my $members = $prefix . "members"; my $sth = $dbh->prepare("INSERT INTO $members (mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz, memopt) VALUES('','$vname', '$zname', '$strnr', '$plz', '$ort', '$land', '$email', '$aktuelles_datum', '$username', '', '$randuserkey', '2', '0', '', '')"); $sth->execute or die DBI->errstr; # ------------------------------------------------- # Mail an User my $mailbodyt = <\n"; print MAIL "To: $email ($vname $zname)\n"; print MAIL "From: $adminemail ($adminname)\n"; print MAIL "Subject: Ihre Anmeldung bei unserem Shopservice\n\n"; print MAIL "$mailbodyt\n\n"; close MAIL; ############################### $sektionstitel = "Registrierungsdaten versendet"; &Headerout; print &tparser("$cgipfad/templates/user/header.html"); print qq~
    $sektionstitel
    Ihre Anmeldungsdaten wurden gespeichert. Sie erhalten nun eine E-Mail mit weiteren Informationen. Bitte befolgen Sie nun die Anweisungen in der E-Mail um die Registrierung erfolgreich abzuschließen.

    Sie werden in 10 Sekunden automatisch weitergeleitet, wenn ihr Browser keine Weiterleitung unterstützt klicken Sie bitte auf diesen Link

    $scriptversionsinfo
    ~; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # User sofort freischalten, Username und Passwort per E-Mail # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub sendfree { ############################### my $vname = datensaver($FORM{'vname'}); my $zname = datensaver($FORM{'zname'}); my $strnr = datensaver($FORM{'strnr'}); my $plz = datensaver($FORM{'plz'}); my $ort = datensaver($FORM{'ort'}); my $land = datensaver($FORM{'land'}); my $email = datensaver($FORM{'email'}); my $username = datensaver($FORM{'username'}); my $agb = datensaver($FORM{'agb'}); my $keystring = datensaver($FORM{'keystring'}); $keystring =~ s/[^A-Z0-9]//g; $username =~ s/[^a-zA-ZäöüÄÖÜß0-9]//g; $agb =~ s/[^A-Z]//g; $keyok = 0; if (-e "$cgipfad/tmpdaten/$keystring.grdat") { $keyok = 1 } $email = lc($email); if ($email ne '') { # Mailaddycheck $vorhandenmail = mailchecker($email); } if ($username ne '') { # Usernamecheck $vorhandenkunde = userchecker($username); } # anmeldung fuer Mailaddy erlaubt $anmeldungerlaubt = check_mailsperre($email); # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz, memopt # Fehlerpruefung $fehlermeldung = ""; $fehler_gefunden = ""; # ----------------------------------------------------------------------- $errormeldung = "
  • Sorry, diese E-Mail Adresse oder Domain \"$email\" ist für Anmeldungen gesperrt. \n" ; if ($anmeldungerlaubt == 1) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Ihre Daten der Grafischen Anmeldeüberprüfung sind fehlerhaft!\n" ; if (!$keyok) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Es existiert schon ein Benutzer mit dem angegebenen Benutzername.\n" ; if ($vorhandenkunde) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Es existiert schon ein Benutzer mit der angegebenen E-Mail Adresse.\n" ; if ($vorhandenmail) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Vorname\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($vname eq '') || (length($vname) > 50)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Zuname\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($zname eq '') || (length($vname) > 50)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Straße und Nr.\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($strnr eq '') || (length($strnr) > 100)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"PLZ\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if (($plz eq '') || (length($plz) > 10)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Wohnort\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ; if ((length($ort) < 1) || (length($ort) > 100)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Bitte geben Sie eine gültige E-Mail Adresse ein.\n"; if ($email !~ /^([a-zA-Z0-9][a-zA-Z_0-9-\.]*)(\@)([a-zA-Z0-9][a-zA-Z_0-9-\.]*[a-zA-Z0-9])(\.)([a-zA-Z0-9]*)$/) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Das Feld \"Username\" wurde nicht oder nicht mit korrekten Daten ausgefüllt. Es sind nur Buchstaben und Zahlen zugelassen. Mindestens 3 Zeichen lang muss der Benutzername sein.\n" ; if ((length($username) < 3) || (length($username) > 30)) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Die Checkbox \"Einverstanden mit den AGB/Regeln\" wurde nicht bestätigt.\n" ; if ($agb !~ /^JA$/) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } # ----------------------------------------------------------------------- if ($fehler_gefunden) { &fehlerausgabeverwaltung; exit; } ############################### # Daten speichern und Mail senden $aktuelles_datum = &aktuelles_datum(); $randuserpass = FRWtools::pw_gen("8", "3", "0"); $randomsalt = FRWtools::pw_gen("2", "1", "0"); $newcryptedpasswort = crypt($randuserpass, $randomsalt); # ------------------------------------------------- # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz, memopt my $members = $prefix . "members"; my $sth = $dbh->prepare("INSERT INTO $members (mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz, memopt) VALUES('','$vname', '$zname', '$strnr', '$plz', '$ort', '$land', '$email', '$aktuelles_datum', '$username', '$newcryptedpasswort', '', '1', '0', '', '')"); $sth->execute or die DBI->errstr; # ------------------------------------------------- # Mail an User my $mailbodyt = <\n"; print MAIL "To: $email ($vname $zname)\n"; print MAIL "From: $adminemail ($adminname)\n"; print MAIL "Subject: Ihre Anmeldung bei unserem Shopservice\n\n"; print MAIL "$mailbodyt\n\n"; close MAIL; # E-Mail an Admin my $mailbodyadmin = <\n"; print MAIL "To: $adminemail ($adminname)\n"; print MAIL "From: $email ($vname $zname)\n"; print MAIL "Subject: Neuer Benutzer beim Shopservice registriert\n\n"; print MAIL $mailbodyadmin; close MAIL; ############################### $sektionstitel = "Registrierungsdaten versendet"; &Headerout; print &tparser("$cgipfad/templates/user/header.html"); print qq~
    $sektionstitel
    Ihre Anmeldungsdaten wurden gespeichert. Sie erhalten nun eine E-Mail mit den nötigen Zugangsdaten für die Shopverwaltung

    Sie werden in 10 Sekunden automatisch weitergeleitet, wenn ihr Browser keine Weiterleitung unterstützt klicken Sie bitte auf diesen Link

    $scriptversionsinfo
    ~; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Registrierungskey eingeben # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub key { $sektionstitel = "Eingeben des Freischaltcodes"; &Headerout; print &tparser("$cgipfad/templates/user/header.html"); print &tparser("$cgipfad/templates/user/contentkopf.html"); print qq~
    Registrierung abschließen
    Geben Sie bitte in das Formular den erhaltenen Freischaltcode ein.
    Registrierungsschlüssel
    ~; print &tparser("$cgipfad/templates/user/contentfuss.html"); } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Freischaltcode pruefen # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub keycheck { my $key = datensaver($FORM{'key'}); $key =~ s/[^a-zA-ZäöüÄÖÜß0-9]//g; # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz, memopt if ($key ne '') { my $members = $prefix . "members"; my $sth = $dbh->prepare("SELECT mid, vname, nname, email, user, pass, newpw, free FROM $members WHERE newpw = '$key' LIMIT 1"); $keyok = $sth->execute or die DBI->errstr; $keyda = $keyok eq "0E0" ? 0 : $keyok; @mdata = $sth->fetchrow_array(); } $iskeyda = 0; if (-e "$cgipfad/tmpdaten/$key.key") { @keyfile = FRWtools::DateialsZeile("$cgipfad/tmpdaten/$key.key"); $iskeyda = 1; } # Fehlerpruefung $fehlermeldung = ""; $fehler_gefunden = ""; # ----------------------------------------------------------------------- $errormeldung = "
  • Es wurden keine Daten zum Freischaltcode gefunden!\n" ; if (!$keyda) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } $errormeldung = "
  • Es wurde keine Freischaltdatei gefunden! Warscheinlich liegt ihre Registrierung mehrere Tage zurück. In dem Fall wird der temporäre Registrierschlüssel gelöscht.\n" ; if (!$iskeyda) { $fehlermeldung = $fehlermeldung.$errormeldung ; $fehler_gefunden = 1 ; } # ----------------------------------------------------------------------- if ($fehler_gefunden) { &fehlerausgabeverwaltung; exit; } else { $randuserpw = FRWtools::pw_gen("8", "3", "0"); $randomsaltp = FRWtools::pw_gen("2", "1", "0"); $newcryptedpasswort = crypt($randuserpw, $randomsaltp); my $members = $prefix . "members"; my $sth = $dbh->prepare("UPDATE $members SET pass = '$newcryptedpasswort', newpw = '', free = '1' WHERE newpw = '$mdata[6]' AND user = '$keyfile[1]' LIMIT 1"); $sth->execute or die DBI->errstr; # mid, vname, nname, strnr, plz, ort, land, email, datum, user, pass, newpw, free, aktiv, shopvz ################################ # Mail an User my $pwmailbodyt = <\n"; print MAIL "To: $mdata[3] ($mdata[1] $mdata[2])\n"; print MAIL "From: $adminemail ($adminname)\n"; print MAIL "Subject: Ihr Shopzugang wurde freigeschaltet\n\n"; print MAIL "$pwmailbodyt\n\n"; print MAIL "Gesendet am: $heutiges_datum\n"; close MAIL; # Mail an Admin my $admailbody = <\n"; print MAIL "To: $adminemail ($sitetitel)\n"; print MAIL "From: $mdata[3] ($mdata[1] $mdata[2])\n"; print MAIL "Subject: Neue Shopregistrierung aktiviert\n\n"; print MAIL $admailbody; print MAIL "\n\n"; print MAIL "Gesendet am: $heutiges_datum\n"; close MAIL; unlink("$cgipfad/tmpdaten/$key.key"); &Headerout; $sektionstitel = "Ihr Account wurde freigeschaltet!"; print &tparser("$cgipfad/templates/user/header.html"); print qq~
    $sektionstitel
    Sie erhalten nun noch eine E-Mail mit den Zugangsdaten zur Administration ihres Shops.

    Sie werden in 10 Sekunden automatisch weitergeleitet, wenn ihr Browser keine Weiterleitung unterstützt klicken Sie bitte auf diesen Link

    $scriptversionsinfo
    ~; } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Fehlermeldungen ausgeben # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub fehlerausgabeverwaltung { $sektionstitel = "Fehler festgestellt!"; &Headerout; print &tparser("$cgipfad/templates/user/header.html"); print &tparser("$cgipfad/templates/user/contentkopf.html"); print qq~

      $fehlermeldung

    Zurück
    ~; print &tparser("$cgipfad/templates/user/contentfuss.html"); exit; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Hauptmenue ausgeben fuer Registrierung, PW vergessen und Login # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub hauptmenue { $hauptmenueinhalt = &tparser("$cgipfad/templates/user/hauptmenue.html"); } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # $dbh->disconnect;