hbdb/index-ssl-hb.php angelegt * - und unter svn gelegt * - => ist jetzt die zentrale Einsprungdatei auf dem soft-carrier-Webserver * * * @author HM-Team * @author WH: 28.03.2017 * @author klee: 05.03.2018 -- NG_WEBSHOP: Anpassung Online-Katalog * @author klee: 03.04.2024 - PHP 8.0: Deprecate required parameters after optional parameters in function/method signatures */ // // WH: 28.03.2017 - Transfer Protocol SSL -- Umstellung. siehe properties.inc.php require_once ('/home/soft/softcarrier.de/www/htdocs/hbdb/scShared/shared2016/properties.inc.php'); require_once (HB_HILFSKLASSE_ERROR); require_once (HB_HILFSKLASSE_UTILITIES); require_once (HB_HILFSKLASSE_HTMLPARAMS); require_once (HB_HILFSKLASSE_DATABASE); require_once (HB_HILFSKLASSE_SESSION); // klee: 19.04.2024 -- UtilitiesKunde2017P nach OLD verschoben // require_once (HB_HILFSKLASSE_UTILITIESKUNDE); require_once (HB_HILFSKLASSE_UTILITIESKUNDE_2018P); require_once (HB_HILFSKLASSE_SITE_2018P); // GUI-Klassen require_once (HB_FRAMESET_FATALERROR); // Aufruf alter und neuer WebShop $indexSslHb = new IndexSslHb (); $indexSslHb->control (); class IndexSslHb { /** * Speichert das Error-Objekt für die Auswertung in der ErrorLogic */ private $_error = null; /** * Variable, um die DB-Verbindung zu dbserver1 zu halten */ private $_db1 = null; /** * Variable, um die Daten der Web-Site zu halten */ private $_siteObj2018P = null; /** * Variable, um die aktuellen Sitzungsdaten zu halten * Hinweis: $this->_session wird mit Call by Reference im Main-Objekt gesetzt */ private $_session = null; /** * z.B.: softcarrier.de = HB_SOFT_WWWSITE_DE, fr.softcarrier.com, hiblue.liefert-es.com */ private $_wwwsite = null; /** * Variable , um das Verwaltungs-Objekt der UtilitiesKunde-Klasse zu halten */ private $_utilSoft = null; /** * Referenz zu den speziellen soft-carrier Utilities */ private $_utilSoft2018P = null; /** * Var für Check, ob der Cookie-Support im Browser aktiviert ist, * in dem sie ein Test-Cookie mit kurzem Expire an den Browser sendet * * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * Problem dieses Tests: funktioniert beim ersten Mal nicht, * ob ein user Cookies aktiviert hat oder nicht. * sieht man aber erst nach einem Reload * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * * Das ist in unserer Applikation aber egal, da dies nur beim ersten Zugriff * für die Cookie-Auswertung (PHPSESSID) in der index-ssl-hb.php eine Rolle spielt. * Da die PHP-SESSION-ID aber auch per Link übergeben werden kann und wir das auch so * machen (siehe index-ssl-hb->_computeWebShopUrl) können wir alle anderen Parameter * getrost über die PHP-SESSION Variable $_SESSION an die Folgeseite IndexWebShop.php mitgeben. * Dieses Verfahren hat mehrere Vorteile: * - Link verkürzt sich enorm * - Sicherheit: ein Benutzer kann nicht so leicht herausfinden, * welche Basis-Parameter in den System benötigt werden * * Gibt es keinen Browser-Cookies-Support => so wird jede Sitzung als Initial-Sitzung behandelt */ private $_initialSession = true; /** * Objekt aller GET/POST/SESSION Input Parameter */ private $_htmlParams = null; /** * Siteweiter Paramter: Testparameter, um dynamisch Neuentwicklungen zuschalten zu können * != HB_DEV_OFF => Test bestimmter neuer Entwicklungen */ private $_paramHbdev = HB_DEV_OFF; /** * Siteweiter Paramter: */ private $_paramPreview = HB_PREVIEW_OFF; /** * z.B.: HB_ACTION_RESET */ // private $_paramAction = null; private $_paramAction = ""; /** * HB_PARAM_LANG: HB_LANG_DE in VIP-Codierung * Idee auch ISO zulassen und in VIP-Transferieren */ private $_paramLang = HB_LANG_DE; /** * HB_PARAM_SUCHBAUM: HB_SUCHBAUM_ACTIVATED, HB_SUCHBAUM_DEACTIVATED */ private $_paramSb = HB_LANG_DE; /** * HB_PARAM_RESET_SESSION: HB_RESET_SESSION_NO, HB_RESET_SESSION_YES */ private $_paramResetSession = HB_RESET_SESSION_NO; /** * für Deeplinks */ private $_paramArtikelnr = ''; private $_paramShopnr = HB_SHOPNR_DEFAULT; private $_paramSearchText = ''; // klee: 21.09.2022 -- hbapi: Deeplink auf Marke integriert private $_paramMarkeId = HB_DEFAULT_MARKE_ID; // Für Online-Kataloge private $_paramKatalogNr = ''; private $_paramKatalogDestination = ''; private $_paramKatalogAktSeitennr = ''; // ausschliesslich fürs Preview private $_paramWwwsite = ''; /** * WH: 20.03.2018 - Restschnittstelle officeb2b umstellen auf neue Indexseite * Parameter fuer Einschraenkung der Suche durch Filter */ private $_paramFilterHauptGrp = ''; private $_paramFilterUnterGrp = ''; private $_paramFilterKat = ""; private $_paramFilterKap = ""; private $_paramFilterOffen = ""; private $_paramFilterMarken = ""; // Language in ISO-Kuerzel: z.B. de, fr, private $_paramLanguage = ''; /** * WH: 20.03.2018 - NG_WEBSHOP: liefert-es Shops: Deeplink Newsletter Anmeldung bestaetigen oder abmelden * Parameter E-Mail */ private $_paramEmail = ''; /** * WH: 24.04.2019 - Passwort-Verschluesselung: DeepLink auf Selbstregistrierungsformular, zum Einbau in Mailtext bei sc */ private $_paramSelfRegKdnr = 0; /** * klee: 01.10.2020 - Datenbankgestüzte Banner-Verwaltung (NG-Component): PREVIEW */ private $_paramBannerPreview = HB_ACTION_BANNER_PREVIEW_OFF; private $_paramBannerVon = HB_ACTION_BANNER_PREVIEW_OFF; private $_paramBannerBis = HB_ACTION_BANNER_PREVIEW_OFF; /** * Holt die nötigen Html-Parameter, führt die notwendigen Checks * auf diesen durch und übernimmt die Werte der HTML-Paramter * in die korrespondierende Attribute des Frameset-Objektes * * @param * - * @return - * * @author klee: 29.11.2017 -- NG_WEBSHOP: Überarbeitung IndexWebShop.php * @author WH: 22.03.2018 - NG_WEBSHOP: Params-Fehlerbehandlung in index-ssl.php * */ private function _checkParams() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); // var_dump($_postGetParams); // $logMsg = "\n"; // $logMsg = $logMsg . "hbKl: " . $this->_htmlParams->getSingleHtmlParam ( "hbKl", HB_STRING ) ."\n"; // $logMsg = $logMsg . " " . "\n"; // $logMsg = $logMsg . " " . "\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // ! // ! Hinweis: die HTML-Parameter werden, sofern sie Session-Parameter sind, // ! abweichend vom hiblue-Konzept in der _phpSessionOverwriteWithHtmlParams // ! ausgewertet. Das vereinfacht das Schreiben und dient der Normierung beim // ! Programmieren (da weniger Diziplin dafür notwendig ist) // ! // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // //////////////////////////////////////////////////////// // // Ausnahme-Parameter // if ($this->_htmlParams->isSetParam ( HB_PARAM_RESET_SESSION )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramResetSession = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_RESET_SESSION, HB_UINT, 'Error param resetSession', 2 ); // if ($this->_htmlParams->isSetParam ( HB_PARAM_RESET_SESSION_LOG_STR )) { // $paramResetSessionLogStr = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_RESET_SESSION_LOG_STR, HB_STRING ); // // klee: 22.10.2021 - Schreiben auf die hbJsLog aus den Sicherheitsabfragen ausnehmen // // klee log -- bis Fehler entdeckt // $logMsg = "\n"; // $logMsg = $logMsg . "HB_PARAM_RESET_SESSION_LOG_STR: " . $paramResetSessionLogStr . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1, "/home/hiblue/logs/hb-log-jumpToResetUrl-php" ); // } } else { $this->_paramResetSession = HB_RESET_SESSION_NO; } // //////////////////////////////////////////////////////// // // Basis-Parameter // // HB_PARAM_DEV // wh+klee: 23.03.2018 -- NG_WEBSHOP: Korrektur hb_dev-Param // Korrekturmecahnismus: (strlen($this->_htmlParams->getSingleHtmlParam ( HB_PARAM_DEV, HB_STRING))>0) if ($this->_htmlParams->isSetParam ( HB_PARAM_DEV ) && (strlen ( $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_DEV, HB_STRING ) ) > 0)) { // System wurde explizit mit diesem Param aufgerufen // $this->_paramHbdev = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_DEV, HB_STRING ); $this->_paramHbdev = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_DEV, HB_UINT, 'Error param dev', 3 ); } else { $this->_paramHbdev = HB_DEV_OFF; } if ($this->_htmlParams->isSetParam ( HB_PARAM_LANG )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramLang = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_LANG, HB_UINT, 'Error param lang', 3 ); } else { $this->_paramLang = HB_LANG_DE; } // // HB_PARAM_SUCHBAUM if ($this->_htmlParams->isSetParam ( HB_PARAM_SUCHBAUM )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramSb = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_SUCHBAUM, HB_STRING, 'Error param sb', 2 ); } else { $this->_paramSb = HB_SUCHBAUM_ACTIVATED; } if ($this->_htmlParams->isSetParam ( HB_PARAM_ACTION )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramAction = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_ACTION, HB_STRING . 'Error param action', 50 ); } else { $this->_paramAction = ""; } // //////////////////////////////////////////////////////// // // DEEPLINK-Parameter // if ($this->_htmlParams->isSetParam ( HB_PARAM_ARTIKELNR_KURZ ) || $this->_htmlParams->isSetParam ( HB_PARAM_ARTIKELNR )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramArtikelnr = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_ARTIKELNR_KURZ, HB_INT, 'Error param artikelnr', 18 ); } else { $this->_paramArtikelnr = ''; } // $logMsg = "\n"; // $logMsg = $logMsg . "this->_paramArtikelnr: $this->_paramArtikelnr " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // Markenshop-Nummer: für die Einschränk auf den Marekenshop (für den Bereich webShop (siehe auch HB_PARAM_KATALOG_NR)) if ($this->_htmlParams->isSetParam ( HB_PARAM_SHOPNR )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramShopnr = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_SHOPNR, HB_INT, 'Error param shopnr', 5 ); } else { // shopnr / Katalognummer wurde NICHT als Parameter uebergeben // bewirkt einen Reset auf den Gesamtkatalog, wenn mann den Shop neu aufruft // wenn er denn endgültig in _act gesetzt wird $this->_paramShopnr = HB_SHOPNR_DEFAULT; } if ($this->_htmlParams->isSetParam ( HB_PARAM_SEARCHTEXT )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramSearchText = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_SEARCHTEXT, HB_STRING, 'Error param searchText', 100 ); } else { $this->_paramSearchText = ''; } // Spezieller Markenshop-Katalog wird angefordert (für den Bereich Online-Kataloge (siehe auch HB_PARAM_SHOPNR)) if ($this->_htmlParams->isSetParam ( HB_PARAM_KATALOG_NR )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramKatalogNr = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_KATALOG_NR, HB_UINT, 'Error param katalognr', 5 ); } else { $this->_paramKatalogNr = ''; } // $logMsg = "\n"; // $logMsg = $logMsg . "this->_paramKatalogNr: $this->_paramKatalogNr " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); if ($this->_htmlParams->isSetParam ( HB_PARAM_KATALOG_DESTINATION )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramKatalogDestination = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_KATALOG_DESTINATION, HB_STRING, 'Error param destination', 500 ); } else { $this->_paramKatalogDestination = ''; } if ($this->_htmlParams->isSetParam ( HB_PARAM_PAGE )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramKatalogAktSeitennr = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_PAGE, HB_UINT, 'Error param page', 3 ); } else { $this->_paramKatalogAktSeitennr = ''; } // klee: 21.09.2022 -- hbapi: Deeplink auf Marke integriert // siehe dazu HB_PARAM_MARKE if ($this->_paramAction == HB_ACTION_SEARCH_MARKE_ALLE_ARTIKEL) { if ($this->_htmlParams->isSetParam ( HB_PARAM_MARKE_ID )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramMarkeId = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_MARKE_ID, HB_UINT, 'Error param markeId', 6 ); } else { $this->_paramMarkeId = HB_DEFAULT_MARKE_ID; } // BBB-log // $logMsg = "\n"; // $logMsg = $logMsg . "_paramMarkeId: $this->_paramMarkeId " . "\n"; // $logMsg = $logMsg . " " . "\n"; // $logMsg = $logMsg . " " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } // HB_ACTION_SEARCH_MARKE_ALLE_ARTIKEL // //////////////////////////////////////////////////////// // // DEEPLINK-Parameter: REST-Schnittstelle ob2b // WH: 20.03.2018 - Restschnittstelle officeb2b umstellen auf neue Indexseite if ($this->_paramAction == HB_ACTION_OFFICEB2B) { // Suchsstring $this->_paramSearchText = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_SEARCHTEXT, HB_STRING, 'Error searchText', 100 ); // Sprache : de, fr, etc $this->_paramLanguage = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_LANGUAGE, HB_STRING, 'Error language', 2 ); // die uebrigen Parameter koennen auch fehlen, deswegen explizit abfragen, ob sie gesetzt sein, weil es sonst // zu einem Error in den html-Params kommt, wenn die Laengenbeschraenkung gesetzt ist if ($this->_htmlParams->isSetParam ( "filterHauptGrp" )) { $this->_paramFilterHauptGrp = $this->_htmlParams->getSingleHtmlParam ( "filterHauptGrp", HB_STRING, 'Error _paramFilterHauptGrp' ); } else { $this->_paramFilterHauptGrp = ''; } if ($this->_htmlParams->isSetParam ( "filterUnterGrp" )) { $this->_paramFilterUnterGrp = $this->_htmlParams->getSingleHtmlParam ( "filterUnterGrp", HB_STRING, 'Error filterUnterGrp', 200 ); } else { $this->_paramFilterUnterGrp = ''; } if ($this->_htmlParams->isSetParam ( "filterMarken" )) { $this->_paramFilterMarken = $this->_htmlParams->getSingleHtmlParam ( "filterMarken", HB_STRING, 'Error filterMarken', 200 ); } else { $this->_paramFilterMarken = ''; } if ($this->_htmlParams->isSetParam ( "filterKategorien" )) { $this->_paramFilterKat = $this->_htmlParams->getSingleHtmlParam ( "filterKategorien", HB_STRING, 'Error filterKategorien', 200 ); } else { $this->_paramFilterKat = ''; } if ($this->_htmlParams->isSetParam ( "filterKapitel" )) { $this->_paramFilterKap = $this->_htmlParams->getSingleHtmlParam ( "filterKapitel", HB_STRING, 'Error filterKapitel', 200 ); } else { $this->_paramFilterKap = ''; } if ($this->_htmlParams->isSetParam ( "filterOffen" )) { $this->_paramFilterOffen = $this->_htmlParams->getSingleHtmlParam ( "filterOffen", HB_STRING, 'Error filterOffen', 200 ); } else { $this->_paramFilterOffen = ''; } } // if ($this->_paramAction == HB_ACTION_OFFICEB2B) // //////////////////////////////////////////////////////// // // DEEPLINK-Parameter: liefert-es Newsletter Anmeldung bestaetigen / abmelden // WH: 20.03.2018 - NG_WEBSHOP: liefert-es Shops: Deeplink Newsletter Anmeldung bestaetigen if ($this->_paramAction == HB_ACTION_NEWS_CONFIRM_KURZ || $this->_paramAction == HB_ACTION_NEWS_CANCEL_KURZ) { $this->_paramEmail = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_EMAIL, HB_NOT_EMPTY, 'Error param email', 100 ); } // //////////////////////////////////////////////////////// // // WH: 16.04.2018 - NG_WEBSHOP: Kreditkartenabwicklung - Deeplinks für Abbruch und Erfolg bei Zahlung if ($this->_paramAction == HB_ACTION_CIC_OK || $this->_paramAction == HB_ACTION_CIC_ABORT) { $this->_paramAbwicklungsnr = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_ABWICKLUNGSNR_KURZ, HB_NOT_EMPTY, 'Error Abwicklungsnr', 14 ); } // //////////////////////////////////////////////////////// // // WH: 24.04.2019 - Passwort-Verschluesselung: DeepLink auf Selbstregistrierungsformular, zum Einbau in Mailtext bei sc if ($this->_paramAction == HB_ACTION_SHOW_FORM_SELBSTREGISTER) { $this->_paramSelfRegKdnr = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_ID, HB_NOT_EMPTY, 'Error Kundennr', 12 ); } // //////////////////////////////////////////////////////// // // WH: 16.02.2022 - Produkt-Info: Ansteuerung // die ID (Datum im Format yyMmdd) der Produkt-Infoseite in den Session-Param searchText legen // WH: 09.03.2022 - Produkt-Info: Param der Id umziehen in destination if ($this->_paramAction == HB_ACTION_PRODUKT_INFO) { $this->_paramKatalogDestination = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_ID, HB_NOT_EMPTY, 'Error Page-Id', 6 ); } // //////////////////////////////////////////////////////// // // WH: 31.07.2023 - Newsletter mit Deeplink aufrufen // Id im sessionParam destination speichern if ($this->_paramAction == HB_ACTION_NEWS) { $this->_paramKatalogDestination = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_ID, HB_STRING, 'Error Page-Id', 6 ); } // //////////////////////////////////////////////////////// // // //TODO WH: 26.02.2024 - Automatischer Wechsel der soft-carrier-Shopsite // Id ist Kundennr und Passwort , im sessionParam destination speichern if ($this->_paramAction == HB_ACTION_CODE_SITE_WECHSEL . HB_ACTION_LOGIN) { $this->_paramKatalogDestination = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_ID, HB_STRING, 'Error Data-Id', 30 ); } // //////////////////////////////////////////////////////// // // Weitere-Parameter // // klee: 19.03.2018 -- NG_WEBSHOP: NG-Shop liefert-es Preview Link programmiert + alter Link wird auf neuen Shop umgeroutet if ($this->_htmlParams->isSetParam ( HB_PARAM_PREVIEW )) { // System wurde explizit mit diesem Param aufgerufen $this->_paramPreview = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_PREVIEW, HB_UINT, 'Error param preview', 2 ); } else { $this->_paramPreview = HB_PREVIEW_OFF; } // $logMsg = "\n"; // $logMsg = $logMsg . "this->_paramPreview: $this->_paramPreview "."\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); // klee: 01.10.2020 - Datenbankgestüzte Banner-Verwaltung (NG-Component): PREVIEW if ($this->_htmlParams->isSetParam ( HB_PARAM_BANNER_PREVIEW )) { // System wurde explizit mit diesem Param aufgerufen => von und bis müssen ebenfalls vorhanden sein $this->_paramBannerPreview = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_BANNER_PREVIEW, HB_UINT, 'Error param banner preview', 2 ); } else { $this->_paramBannerPreview = HB_ACTION_BANNER_PREVIEW_OFF; } if ($this->_htmlParams->isSetParam ( HB_PARAM_BANNER_VON )) { // System wurde explizit mit diesem Param aufgerufen => von und bis müssen ebenfalls vorhanden sein $this->_paramBannerVon = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_BANNER_VON, HB_UINT, 'Error param von banner preview', 8 ); } else { $this->_paramBannerVon = HB_DEFAULT_DATE_EMPTY; } if ($this->_htmlParams->isSetParam ( HB_PARAM_BANNER_BIS )) { // System wurde explizit mit diesem Param aufgerufen => von und bis müssen ebenfalls vorhanden sein $this->_paramBannerBis = $this->_htmlParams->getSingleHtmlParam ( HB_PARAM_BANNER_BIS, HB_UINT, 'Error param bis banner preview', 8 ); } else { $this->_paramBannerBis = HB_DEFAULT_DATE_EMPTY; } // $logMsg = "\n"; // $logMsg = $logMsg . "this->_paramBannerPreview: $this->_paramBannerPreview "."\n"; // $logMsg = $logMsg . "this->_paramBannerVon: $this->_paramBannerVon "."\n"; // $logMsg = $logMsg . "this->_paramBannerBis: $this->_paramBannerBis "."\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); // WH Error-Objekt von htmlParams übernehmen $err = $this->_htmlParams->getError (); $lerror->setMessages ( $err->getMessages () ); // Meldungen des lokales Methoden-Error-Objekt werden an das Error-Objekt // des Frameset-Objektes übergeben $this->_error->setMessages ( $lerror->getMessages () ); } // _checkParams /** * Perform requested Action * $this->_paramAction wird bearbeitet * * @param * - * @return - * @author (Programmierer: klee Letzte Änderung: 19.12.2017) * */ private function _act() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); // $logMsg = "\n"; // $logMsg = $logMsg . ">>>>>>>>>>>action: $this->_paramAction" . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); if (! $lerror->isWarningOrError ()) { // Actions switch ($this->_paramAction) { // case HB_ACTION_DETAIL_PRINT : // case HB_ACTION_DETAIL_PRINT_KURZ : // // Deeplink auf Artikel-Details // break; default : // Keine besondere Aktion notwendig break; } // switch } // if (!$lerror->isError()){ // Meldungen des lokales Methoden-Error-Objekt werden an das Haupt-Error-Objekt uebergeben $this->_error->setMessages ( $lerror->getMessages () ); } /** * Neues Session-Objekt erzeugen * + * session_start + Cookies setzen * * @param * - * @return - * * @author klee: 29.11.2017 -- NG_WEBSHOP: Überarbeitung IndexWebShop.php */ private function _phpSessionInit() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); // Neues Session-Objekt erzeugen if (! $lerror->isError ()) { $this->_session = new Session2017P ( $this->_db1, 'IndexSslHb' ); $error = $this->_session->getError (); $lerror->setMessages ( $error->getMessages () ); } // $logMsg = "\n"; // $logMsg = $logMsg . "1111 -- sessionid: $sessionid: $hbCaller " . "\n"; // $logMsg = $logMsg . "1111 -- sessionid: _paramResetSession: " . $this->_paramResetSession."\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); if (! $lerror->isError () && ($this->_paramResetSession == HB_RESET_SESSION_YES)) { // Bei einem RESET die alte Session + Cookie werden zerstört und aus der DB gelöscht $this->_session->startSession (); $this->_restartSession (); // $logMsg = "\n"; // $logMsg = $logMsg . "1111 -- sessionid: $sessionid: $hbCaller " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // Hinweis: // in _restartSession wird die index-ssl-hb.php nochmals aufgerufen // und deshalb die Applikation an dieser Stelle ausnahmsweise durch die() unterbrochen // das geht nicht anders, wg. kruden PHP-Session-Mechanismus } // session_start + Cookies setzen if (! $lerror->isError ()) { // Trick um entscheiden zu können, dass man z.B. von der (VTMP)-Sitemap kommt // und damit die fertige HB_SITEMAP_VTMPDE_SESSIONID als PHPSESSID genommen werden kann global $hbCaller; // klee 08.03.2019 - Neues VTMP-Layout: Sitemap Rücksprung per Back-Knopf führte zu abgelaufener Session $aktuellePhpSessionId = ''; if (isset ( $_COOKIE [HB_PARAM_SESSIONID] )) { // Es exisitiert bereits eine PHP-Session-Id für diesen Benutzer und diese Site $aktuellePhpSessionId = $_COOKIE [HB_PARAM_SESSIONID]; // $logMsg = "\n"; // $logMsg = $logMsg . "Es exisitiert bereits eine PHP-Session-Id für dieser Site: " . $aktuellePhpSessionId . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } else { // $logMsg = "\n"; // $logMsg = $logMsg . "NOCH K E I N E PHP-Session-Id für diese Site vorhanden!!! " . "\n"; // $logMsg = $logMsg . "aktuellePhpSessionId: $aktuellePhpSessionId (LEER)" . "\n"; // $logMsg = $logMsg . "hbCaller: $hbCaller " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } if (($hbCaller == HB_CALLER_INDEX_SITEMAP) && ($aktuellePhpSessionId == '')) { // Man kommt von der vtmp-Sitemap und diese wurde nicht vom Webshop aufgerufen // bzw. der vtmp-Webshop wurde vorher noch nicht von diesem Benutzer aufgerufen // Nur dann braucht man (z.B. Google-Robots) eine Default PHP-Sessionid // ansonsten wird die vom Shop genommen // Die Sitemap-SessionId (HB_SITEMAP_VTMPDE_SESSIONID) setzen, damit nicht jedesmal // durch den Robot neue aufgemacht werden // !!! muss vor session-start aufgerufen werden !!! // !!! Nur im Initialfall // => besteht bereit eine normale VTMP-PHP-SESSION dann wird diese genommen // // startet die PHP-Sitzung und legt ein Cookies für die PHP-Sitzung an $this->_session->startSession ( HB_SITEMAP_VTMPDE_SESSIONID ); $sessionid = $this->_session->getSessionId (); if ($sessionid == '') { // Einbau Regernerate der Session in der index.php (klee: 19.03.2009) // Die Funktion session_regenerate_id() ersetzt die aktuelle Session-ID // durch eine neue und uebernimmt die aktuellen Session-Informationen. // klee: 09.05.2017 - DETECT LEER SESSIONID Meldung abgedreht // hbDebug ( get_class ( $this ) . '->control() DETECT LEER SESSIONID', 1 ); session_regenerate_id ( true ); } // $logMsg = "\n"; // $logMsg = $logMsg . "Man kommt von der vtmp-Sitemap -- hbCaller: $hbCaller " . "\n"; // $logMsg = $logMsg . "sessionid: $sessionid: $hbCaller " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } else { // Normalfall // startet die PHP-Sitzung und legt ein Cookies für die PHP-Sitzung an $this->_session->startSession (); $sessionid = $this->_session->getSessionId (); } // // Checken, ob der Cookie-Support im Browser aktiviert ist, // in dem sie ein Test-Cookie mit kurzem Expire an den Browser sendet // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // Problem dieses Tests: funktioniert beim ersten Mal nicht, // ob ein user Cookies aktiviert hat oder nicht. // sieht man aber erst nach einem Reload // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // // Das ist in unserer Applikation aber egal, da dies nur beim ersten Zugriff // für die Cookie-Auswertung (PHPSESSID) in der index-ssl-hb.php eine Rolle spielt. // Da die PHP-SESSION-ID aber auch per Link übergeben werden kann und wir das auch so // machen (siehe index-ssl-hb->_computeWebShopUrl) können wir alle anderen Parameter // getrost über die PHP-SESSION Variable $_SESSION an die Folgeseite IndexWebShop.php mitgeben. // Dieses Verfahren hat mehrere Vorteile: // - Link verkürzt sich enorm // - Sicherheit: ein Benutzer kann nicht so leicht herausfinden, // welche Basis-Parameter in den System benötigt werden // // Gibt es keinen Browser-Cookies-Support => so wird jede Sitzung als Initial-Sitzung behandelt $this->_initialSession = ! $this->_session->checkCookiesBrowserSupportOn (); // Hinweise: // - $_COOKIE [HB_PARAM_SESSIONID] == $sessionid sollten immer gleich sein // $logMsg = "\n"; // $logMsg = $logMsg . "_phpSessionInit -- _initialSession: $this->_initialSession " . "\n"; // $logMsg = $logMsg . "_phpSessionInit -- sessionid: $sessionid " . "\n"; // $logMsg = $logMsg . "_phpSessionInit -- _COOKIE [HB_PARAM_SESSIONID]: " . $_COOKIE [HB_PARAM_SESSIONID] . "\n"; // $logMsg = $logMsg . "_phpSessionInit -- _COOKIE: " . json_encode ( $_COOKIE ) . "\n"; // $logMsg = $logMsg . "_phpSessionInit -- _SESSION: " . json_encode ( $_SESSION ) . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } // if (! $lerror->isError ()) { // $this->_session->destroySession(); // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); } // _phpSessionInit /** * Setzen der Session-Parameter: * * 1. Schritt: Setzen der Allgemeine Session-Parameter * - nur bei Initialsitzung (Erst-Aufruf oder Cookies sind deaktiviert) * - bei bereits vorhandener SESSION bleiben alle Parameter erhalten * * @param * - * @return - * * @author klee: 29.11.2017 -- NG_WEBSHOP: Überarbeitung IndexWebShop.php * * */ private function _phpSessionSetAllgemeineParams() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); // $logMsg = "\n"; // $logMsg = $logMsg . "_phpSessionSetAllgemeineParams -- START " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); if (! $lerror->isError ()) { // /////////////////////////////////////////////////////////// // // Setzen der Session-Parameter: // // 1. Schritt: Setzen der Allgemeine Session-Parameter // - nur bei Initialsitzung (Erst-Aufruf oder Cookies sind deaktiviert) // - bei bereits vorhandener SESSION bleiben alle Parameter erhalten // $this->_session->setParam ( HB_PARAM_ABWICKLUNGSNR, HB_DEFAULT_ABWICKLUNGSNR ); $this->_session->setParam ( HB_PARAM_AP_ID, HB_DEFAULT_AP_ID ); $this->_session->setParam ( HB_PARAM_BESTELLVORGANG_FLAG, false ); $bestellvorgangListe [HB_BESTELLVORGANG_WARENKORB] = false; $bestellvorgangListe [HB_BESTELLVORGANG_KUNDENDATEN] = false; $bestellvorgangListe [HB_BESTELLVORGANG_LIEFERANSCHRIFT] = false; $bestellvorgangListe [HB_BESTELLVORGANG_DIREKTLIEFERUNG] = false; $bestellvorgangListe [HB_BESTELLVORGANG_BANK] = false; $bestellvorgangListe [HB_BESTELLVORGANG_UEBERSICHT] = false; $bestellvorgangListe [HB_BESTELLVORGANG_ADRESSNR] = HB_DEFAULT_LIEFER_ADRESSNR; $bestellvorgangListe [HB_BESTELLVORGANG_BANKID] = HB_DEFAULT_BANKID; $this->_session->setParam ( HB_PARAM_BESTELLVORGANG_LISTE, $bestellvorgangListe ); $this->_session->setParam ( HB_PARAM_GRUPPENNR, HB_GESAMTBESTELLVORLAGE_ID ); $this->_session->setParam ( HB_PARAM_DEV, HB_DEV_OFF ); $this->_session->setParam ( HB_PARAM_LOGIN_STATUS, HB_LOGIN_STATUS_AUSGELOGGED ); $this->_session->setParam ( HB_PARAM_SEARCHMARKE, HB_DEFAULT_MARKE_ID ); $this->_session->setParam ( HB_PARAM_PREVIEW, HB_PREVIEW_OFF ); $this->_session->setParam ( HB_PARAM_SUCHBAUM, HB_SUCHBAUM_ACTIVATED ); $this->_session->setParam ( HB_PARAM_SEARCHTEXT, "" ); $this->_session->setParam ( HB_PARAM_SEARCHTYPE, HB_SEARCH_TYPE_TEXT_ALL_ARTIKEL ); $this->_session->setParam ( HB_PARAM_SHOPNR, HB_SHOPNR_DEFAULT ); // z.B.: stSe: 1512495223 $this->_session->setParam ( HB_PARAM_SESSION_START, time () ); // cookies: 0 (Problem: 1. Aufruf kann nicht von Cookies deaktiviert unterschieden werden $this->_session->setParam ( HB_PARAM_COOKIES, HB_COOKIES_STATUS_NOT_TESTED ); // Folgende SESSION-PARAMs sind nicht eindeutig // oder müssen zum Zeitpunkt der Iitialisierung nicht gesetzt werden: // // curframeset: "shared/EinstiegFrameset.php" (wird beim Aufruf des entsprechenden Framesets gesetzt) // kundentyp: 1 (wird beim Aufruf des webShops gesetzt) // HB_PARAM_LASTWARENKORBACCESS: last_warenkorb_access: 0 // HB_PARAM_LOCK: lock: 9437 siehe auch HB_PARAM_KEY // printDetailKatalogseite: 1 } // if (! $lerror->isError ()) // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); } // _phpSessionSetAllgemeineParams /** * Setzen der Session-Parameter: * * 2. Schritt: Setzen der speziellen Domain-Session-Parameter * - nur bei Initialsitzung (Erst-Aufruf oder Cookies sind deaktiviert) * - bei bereits vorhandener SESSION bleiben alle Parameter erhalten * * (Bei Änderungen siehe auch Site2018P->_getBasisParams) * * @param * - * * @return - * * @author klee: 29.11.2017 -- NG_WEBSHOP: Überarbeitung IndexWebShop.php * @author WH: 23.03.2018 -- NG_WEBSHOP: liefert-es-Shops: Firmenindikator aus s_siteinfo * @author WH: 23.03.2018 -- NG_WEBSHOP: liefert-es-Shops: Waehrung des FH aus Tabelle adressen * */ private function _phpSessionSetSpecialDomainParamsInitCase($fullHostName = "") { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); // klee: Fehlerfaelle abfangen -- Nein vorerst nicht // Fall: nicht vorhandene subdomain bei softcarrier oder vtmp, z.B. www.1111.vtmp.de // => es wird soft-carrier aufgerufen, das will man auf gar keinen Fall // www1111.vtmp.de wird aber korrekt auf www.vtmp.de umgeleitet // bisher hat sich aber in den letzten 20 Jahren noch niemand beschwert // $logMsg = "\n"; // $logMsg = $logMsg . ">>>>>>>>>>>>>>>>>>_phpSessionSetSpecialDomainParamsInitCase -- START -- _domainNameFullQualified: $this->_siteObj2018P->getDomainNameFullQualified()" . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); if (! $lerror->isError ()) { // /////////////////////////////////////////////////////////// // // Setzen der Session-Parameter: // // 2. Schritt: Setzen der speziellen Domain-Session-Parameter // - nur bei Initialsitzung (Erst-Aufruf oder Cookies sind deaktiviert) // - bei bereits vorhandener SESSION bleiben alle Parameter erhalten // switch ($this->_siteObj2018P->getDomainNameFullQualified ()) { case 'liefert-es.com' : // klee: 28.05.2018 - Klasse Site2018P eingeführt // klee: 05.06.2018 - Klasse Site2018P: Korrektur Berechnung wwwsite // wwwsite z.B.: softcarrier.de = HB_SOFT_WWWSITE_DE wwwsite=hiblue.liefert-es.com // $wwwsite = $this->_siteObj2018P->getServerSubDomainName() . '.' . $this->_siteObj2018P->getDomainNameFullQualified(); // $row = $this->_getS_Siteinfo ( $this->_wwwsite ); // klee: 06.06.2018 - getS_Siteinfo an allen Stellen aus Klasse Site2018P ziehen $row = $this->_siteObj2018P->getS_Siteinfo ( $this->_wwwsite ); // Fall-1: liefert-es Site nicht vorhanden, z.B. blablablu.liefert-es.com (siehe _checksSshops) // Fall-2: liefert-es shop ist noch nicht fertig oder gesperrt. d.h. shop_status ungleich HB_SHOP_STATUS_FREIGEGEBEN (= 4) (siehe _checksSshops) // Fall-3: FH des liefert-es shop ist nicht vorhanden (sollte eigentlich nicht vorkommen) (wird geprüft in _getAdresseShopbetreiber) // Fall-4: FH des liefert-es shop ist gesperrt (status = HB_BENUTZER_STATUS_PERMANENT_GESPERRT status (= 9) (siehe _checksSshops) if ($row != null) { // S_Siteinfo: kein Fehler und Datensatz vorhanden // WH: 23.03.2018 -- NG_WEBSHOP: liefert-es-Shops: Waehrung des FH aus Tabelle adressen // da liefert-es sowohl in softde als auch softch betrieben wird $kundennrShopBetreiber = $row ['kundennr']; $firmenindikator = $row ['firmenindikator']; // Daten des FH aus Tabelle adressen $rowFhAdr = null; $rowFhAdr = $this->_getAdresseShopbetreiber ( $kundennrShopBetreiber, $firmenindikator ); if ($rowFhAdr != null) { // FH-Datensatz vorhanden // $logMsg = "\n"; // $logMsg = $logMsg . " >>>>>>>>>>>>>>>>>>>>>>liefert-es.com -- row aus s_siteinfo: " .json_encode($row). "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // VIP-Codierung: 1=de, 5=fr $this->_session->setParam ( HB_PARAM_LANG, HB_LANG_DE ); $this->_session->setParam ( HB_PARAM_LANG_ART, HB_LANG_DE ); // softcarrier, buerotissimo, vtmp, liefert-es, vous-livre $this->_session->setParam ( HB_PARAM_SHOPTYPE, HB_LIEFERT_ES ); // siehe Konstanten für site aus DB: scSite site":"soft-fr" "site":"HiBlue", $this->_session->setParam ( HB_PARAM_SITE, $row ['site'] ); // wwwsite z.B.: wwwsite=hiblue.liefert-es.com $this->_session->setParam ( HB_PARAM_ERROR_WWWSITE, $this->_wwwsite ); $this->_session->setParam ( HB_PARAM_WWWSITE, $this->_wwwsite ); // $this->_session->setParam ( HB_PARAM_FHFIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTDE ); // $this->_session->setParam ( HB_PARAM_FIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTDE ); // WH: 23.03.2018 -- NG_WEBSHOP: liefert-es-Shops: Firmenindikator aus s_siteinfo // da liefert-es sowohl in softde als auch softch betrieben wird $this->_session->setParam ( HB_PARAM_FHFIRMENINDIKATOR, $row ['firmenindikator'] ); $this->_session->setParam ( HB_PARAM_FIRMENINDIKATOR, $row ['firmenindikator'] ); $this->_session->setParam ( HB_PARAM_KDNR_SHOP_BETREIBER, $row ['kundennr'] ); $this->_session->setParam ( HB_PARAM_S_KUNDENNR, HB_MUSTERKUNDE_KUNDENNR_SSHOP ); // $this->_session->setParam ( HB_PARAM_WAEHR1, HB_WAEHR_LEITWAEHRUNG ); // $this->_session->setParam ( HB_PARAM_WAEHRBZ1, HB_WAEHR_BZ_EURO ); // WH: 23.03.2018 -- NG_WEBSHOP: liefert-es-Shops: Waehrung des FH aus Tabelle adressen // da liefert-es sowohl in softde als auch softch betrieben wird // // Währung und Währungsbezeichnung // • Währung (waehr1) und Währungsbezeichnung (waehrbz1) werden zur Zeit pro Site fest in der index-ssl-hb.php gesetzt // • und anschließend immer aus dem Session-Modul gezogen // • sie könnten aber sehr leicht individuell pro Kunde beim Login-Prozess umgesetzt werden bei, in dem sie aus dem Kunden-Objekt mit getWaehr1 bzw. getWaehrbz1 gezogen würden $this->_session->setParam ( HB_PARAM_WAEHR1, $rowFhAdr ['waehr1'] ); $this->_session->setParam ( HB_PARAM_WAEHRBZ1, $rowFhAdr ['waehrbz1'] ); $this->_session->setParam ( HB_PARAM_SUCHBAUM, HB_SUCHBAUM_ACTIVATED ); } // FH-Datensatz vorhanden } // // S_Siteinfo: kein Fehler und Datensatz vorhanden break; case 'vous-livre.com' : // klee: 05.06.2018 - Klasse Site2018P: Korrektur Berechnung wwwsite // klee: 28.05.2018 - Klasse Site2018P eingeführt // wwwsite z.B.: softcarrier.de = HB_SOFT_WWWSITE_DE wwwsite=hiblue.liefert-es.com // $wwwsite = $this->_siteObj2018P->getServerSubDomainName() . '.' . $this->_siteObj2018P->getDomainNameFullQualified(); // $row = $this->_getS_Siteinfo ( $this->_wwwsite ); // klee: 06.06.2018 - getS_Siteinfo an allen Stellen aus Klasse Site2018P ziehen $row = $this->_siteObj2018P->getS_Siteinfo ( $this->_wwwsite ); // Fall-1: vous-livre Site nicht vorhanden, z.B. blablablu.vous-livre.com (siehe _checksSshops) // Fall-2: vous-livre shop ist noch nicht fertig oder gesperrt. d.h. shop_status ungleich HB_SHOP_STATUS_FREIGEGEBEN (= 4) (siehe _checksSshops) // Fall-3: FH des vous-livre shop ist nicht vorhanden (sollte eigentlich nicht vorkommen) (wird geprüft in _getAdresseShopbetreiber) // Fall-4: FH des vous-livre shop ist gesperrt (status = HB_BENUTZER_STATUS_PERMANENT_GESPERRT status (= 9) (siehe _checksSshops) if ($row != null) { // S_Siteinfo: kein Fehler und Datensatz vorhanden // WH: 23.03.2018 -- NG_WEBSHOP: vous-livre-Shops: Waehrung des FH aus Tabelle adressen // an dieser Stelle zwar nicht noetig, da vous-livre nur in FR betrieben wird, // aber aus Kompatibilitaetsgruenden mit liefert-es $kundennrShopBetreiber = $row ['kundennr']; $firmenindikator = $row ['firmenindikator']; // Daten des FH aus Tabelle adressen $rowFhAdr = null; $rowFhAdr = $this->_getAdresseShopbetreiber ( $kundennrShopBetreiber, $firmenindikator ); if ($rowFhAdr != null) { // FH-Datensatz vorhanden // $logMsg = "\n"; // $logMsg = $logMsg . " >>>>>>>>>>>>>>>>>>>>>>liefert-es.com -- row aus s_siteinfo: " .json_encode($row). "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // VIP-Codierung: 1=de, 5=fr $this->_session->setParam ( HB_PARAM_LANG, HB_LANG_FR ); $this->_session->setParam ( HB_PARAM_LANG_ART, HB_LANG_FR ); // softcarrier, buerotissimo, vtmp, liefert-es, vous-livre $this->_session->setParam ( HB_PARAM_SHOPTYPE, HB_VOUS_LIVRE ); // siehe Konstanten für site aus DB: scSite site":"soft-fr" "site":"HiBlue", $this->_session->setParam ( HB_PARAM_SITE, $row ['site'] ); // wwwsite z.B.: wwwsite=netbureau.vous-livre.com $this->_session->setParam ( HB_PARAM_ERROR_WWWSITE, $this->_wwwsite ); $this->_session->setParam ( HB_PARAM_WWWSITE, $this->_wwwsite ); $this->_session->setParam ( HB_PARAM_FHFIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTFR ); $this->_session->setParam ( HB_PARAM_FIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTFR ); $this->_session->setParam ( HB_PARAM_KDNR_SHOP_BETREIBER, $row ['kundennr'] ); $this->_session->setParam ( HB_PARAM_S_KUNDENNR, HB_MUSTERKUNDE_KUNDENNR_SSHOP ); // $this->_session->setParam ( HB_PARAM_WAEHR1, HB_WAEHR_LEITWAEHRUNG ); // $this->_session->setParam ( HB_PARAM_WAEHRBZ1, HB_WAEHR_BZ_EURO ); // WH: 23.03.2018 -- NG_WEBSHOP: liefert-es-Shops: Waehrung des FH aus Tabelle adressen // an dieser Stelle zwar nicht noetig, da vous-livre nur in FR betrieben wird, // aber aus Kompatibilitaetsgruenden mit liefert-es // // Währung und Währungsbezeichnung // • Währung (waehr1) und Währungsbezeichnung (waehrbz1) werden zur Zeit pro Site fest in der index-ssl-hb.php gesetzt // • und anschließend immer aus dem Session-Modul gezogen // • sie könnten aber sehr leicht individuell pro Kunde beim Login-Prozess umgesetzt werden bei, in dem sie aus dem Kunden-Objekt mit getWaehr1 bzw. getWaehrbz1 gezogen würden $this->_session->setParam ( HB_PARAM_WAEHR1, $rowFhAdr ['waehr1'] ); $this->_session->setParam ( HB_PARAM_WAEHRBZ1, $rowFhAdr ['waehrbz1'] ); $this->_session->setParam ( HB_PARAM_SUCHBAUM, HB_SUCHBAUM_ACTIVATED ); } // FH-Datensatz vorhanden } // S_Siteinfo: kein Fehler und Datensatz vorhanden break; case 'vtmp.net' : case 'vtmp.de' : // Hinweise: // vtmp.lu ist Online nicht mehr erreichbar // vtmp.ch wird von officeB2B bedient => // Beachte die Sonderbehandlung der vtmp.ch-Url in $this->_computeWebShopUrl() // VIP-Codierung: 1=de, 5=fr $this->_session->setParam ( HB_PARAM_LANG, HB_LANG_DE ); $this->_session->setParam ( HB_PARAM_LANG_ART, HB_LANG_DE ); // softcarrier, buerotissimo, vtmp, liefert-es, vous-livre $this->_session->setParam ( HB_PARAM_SHOPTYPE, HB_VTMP ); // siehe Konstanten für site / scSite $this->_session->setParam ( HB_PARAM_SITE, HB_VTMP_DE ); // wwwsite z.B.: softcarrier.de = HB_SOFT_WWWSITE_DE $this->_session->setParam ( HB_PARAM_ERROR_WWWSITE, HB_VTMP_WWWSITE_DE ); $this->_session->setParam ( HB_PARAM_WWWSITE, HB_VTMP_WWWSITE_DE ); $this->_session->setParam ( HB_PARAM_FHFIRMENINDIKATOR, HB_FIRMENINDIKATOR_VTMPDE ); $this->_session->setParam ( HB_PARAM_FIRMENINDIKATOR, HB_FIRMENINDIKATOR_VTMPDE ); $this->_session->setParam ( HB_PARAM_KDNR_SHOP_BETREIBER, HB_MUSTERKUNDE_KUNDENNR_VTMP ); $this->_session->setParam ( HB_PARAM_S_KUNDENNR, HB_MUSTERKUNDE_KUNDENNR_VTMP ); // Währung und Währungsbezeichnung // • Währung (waehr1) und Währungsbezeichnung (waehrbz1) werden zur Zeit pro Site fest in der index-ssl-hb.php gesetzt // • und anschließend immer aus dem Session-Modul gezogen // • sie könnten aber sehr leicht individuell pro Kunde beim Login-Prozess umgesetzt werden bei, in dem sie aus dem Kunden-Objekt mit getWaehr1 bzw. getWaehrbz1 gezogen würden $this->_session->setParam ( HB_PARAM_WAEHR1, HB_WAEHR_LEITWAEHRUNG ); $this->_session->setParam ( HB_PARAM_WAEHRBZ1, HB_WAEHR_BZ_EURO ); $this->_session->setParam ( HB_PARAM_SUCHBAUM, HB_SUCHBAUM_ACTIVATED ); // $logMsg = "\n"; // $logMsg = $logMsg . "++++++++++++++ HB_PARAM_FHFIRMENINDIKATOR: " . $this->_session->getParam ( HB_PARAM_FHFIRMENINDIKATOR ) . "\n"; // $logMsg = $logMsg . "_SESS: ". $_SESSION; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); break; case 'vtmp.ch' : // Hinweise: // vtmp.lu ist Online nicht mehr erreichbar // vtmp.ch wird von officeB2B bedient => // Beachte die Sonderbehandlung der vtmp.ch-Url in $this->_computeWebShopUrl() // VIP-Codierung: 1=de, 5=fr $this->_session->setParam ( HB_PARAM_LANG, HB_LANG_DE ); $this->_session->setParam ( HB_PARAM_LANG_ART, HB_LANG_DE ); // softcarrier, buerotissimo, vtmp, liefert-es, vous-livre $this->_session->setParam ( HB_PARAM_SHOPTYPE, HB_VTMP ); // siehe Konstanten für site / scSite $this->_session->setParam ( HB_PARAM_SITE, HB_VTMP_CH ); // wwwsite z.B.: softcarrier.de = HB_SOFT_WWWSITE_DE $this->_session->setParam ( HB_PARAM_ERROR_WWWSITE, HB_VTMP_WWWSITE_CH ); $this->_session->setParam ( HB_PARAM_WWWSITE, HB_VTMP_WWWSITE_CH ); $this->_session->setParam ( HB_PARAM_FHFIRMENINDIKATOR, HB_FIRMENINDIKATOR_VTMPCH ); $this->_session->setParam ( HB_PARAM_FIRMENINDIKATOR, HB_FIRMENINDIKATOR_VTMPCH ); $this->_session->setParam ( HB_PARAM_KDNR_SHOP_BETREIBER, HB_MUSTERKUNDE_KUNDENNR_VTMP ); $this->_session->setParam ( HB_PARAM_S_KUNDENNR, HB_MUSTERKUNDE_KUNDENNR_VTMP ); // Währung und Währungsbezeichnung // • Währung (waehr1) und Währungsbezeichnung (waehrbz1) werden zur Zeit pro Site fest in der index-ssl-hb.php gesetzt // • und anschließend immer aus dem Session-Modul gezogen // • sie könnten aber sehr leicht individuell pro Kunde beim Login-Prozess umgesetzt werden bei, in dem sie aus dem Kunden-Objekt mit getWaehr1 bzw. getWaehrbz1 gezogen würden $this->_session->setParam ( HB_PARAM_WAEHR1, HB_WAEHR_LEITWAEHRUNG ); $this->_session->setParam ( HB_PARAM_WAEHRBZ1, HB_WAEHR_BZ_FR ); $this->_session->setParam ( HB_PARAM_SUCHBAUM, HB_SUCHBAUM_ACTIVATED ); break; case 'soft-carrier.ch' : case 'softcarrier.ch' : // VIP-Codierung: 1=de, 5=fr $this->_session->setParam ( HB_PARAM_LANG, HB_LANG_DE ); $this->_session->setParam ( HB_PARAM_LANG_ART, HB_LANG_DE ); // softcarrier, buerotissimo, vtmp, liefert-es, vous-livre $this->_session->setParam ( HB_PARAM_SHOPTYPE, HB_SOFTCARRIER ); // siehe Konstanten für site / scSite $this->_session->setParam ( HB_PARAM_SITE, HB_SOFT_CH ); // wwwsite z.B.: softcarrier.de = HB_SOFT_WWWSITE_DE $this->_session->setParam ( HB_PARAM_ERROR_WWWSITE, HB_SOFT_WWWSITE_CH ); $this->_session->setParam ( HB_PARAM_WWWSITE, HB_SOFT_WWWSITE_CH ); $this->_session->setParam ( HB_PARAM_FHFIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTCH ); $this->_session->setParam ( HB_PARAM_FIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTCH ); $this->_session->setParam ( HB_PARAM_KDNR_SHOP_BETREIBER, HB_MUSTERKUNDE_KUNDENNR_SOFTCARRIER ); $this->_session->setParam ( HB_PARAM_S_KUNDENNR, HB_MUSTERKUNDE_KUNDENNR_SOFTCARRIER ); // Währung und Währungsbezeichnung // • Währung (waehr1) und Währungsbezeichnung (waehrbz1) werden zur Zeit pro Site fest in der index-ssl-hb.php gesetzt // • und anschließend immer aus dem Session-Modul gezogen // • sie könnten aber sehr leicht individuell pro Kunde beim Login-Prozess umgesetzt werden bei, in dem sie aus dem Kunden-Objekt mit getWaehr1 bzw. getWaehrbz1 gezogen würden $this->_session->setParam ( HB_PARAM_WAEHR1, HB_WAEHR_LEITWAEHRUNG ); $this->_session->setParam ( HB_PARAM_WAEHRBZ1, HB_WAEHR_BZ_FR ); $this->_session->setParam ( HB_PARAM_SUCHBAUM, HB_SUCHBAUM_ACTIVATED ); break; case 'soft-carrier.lu' : case 'softcarrier.lu' : // Hinweise: // softcarrier.lu wird Online nicht mehr bedient // => nur noch Bild als Hinweis + Suchbaum muss deaktiviert sein (siehe weiter unten) // VIP-Codierung: 1=de, 5=fr $this->_session->setParam ( HB_PARAM_LANG, HB_LANG_DE ); $this->_session->setParam ( HB_PARAM_LANG_ART, HB_LANG_DE ); // softcarrier, buerotissimo, vtmp, liefert-es, vous-livre $this->_session->setParam ( HB_PARAM_SHOPTYPE, HB_SOFTCARRIER ); // siehe Konstanten für site / scSite $this->_session->setParam ( HB_PARAM_SITE, HB_SOFT_LU ); // wwwsite z.B.: softcarrier.de = HB_SOFT_WWWSITE_DE $this->_session->setParam ( HB_PARAM_ERROR_WWWSITE, HB_SOFT_WWWSITE_LU ); $this->_session->setParam ( HB_PARAM_WWWSITE, HB_SOFT_WWWSITE_LU ); $this->_session->setParam ( HB_PARAM_FHFIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTLU ); $this->_session->setParam ( HB_PARAM_FIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTLU ); $this->_session->setParam ( HB_PARAM_KDNR_SHOP_BETREIBER, HB_MUSTERKUNDE_KUNDENNR_SOFTCARRIER ); $this->_session->setParam ( HB_PARAM_S_KUNDENNR, HB_MUSTERKUNDE_KUNDENNR_SOFTCARRIER ); // Währung und Währungsbezeichnung // • Währung (waehr1) und Währungsbezeichnung (waehrbz1) werden zur Zeit pro Site fest in der index-ssl-hb.php gesetzt // • und anschließend immer aus dem Session-Modul gezogen // • sie könnten aber sehr leicht individuell pro Kunde beim Login-Prozess umgesetzt werden bei, in dem sie aus dem Kunden-Objekt mit getWaehr1 bzw. getWaehrbz1 gezogen würden $this->_session->setParam ( HB_PARAM_WAEHR1, HB_WAEHR_LEITWAEHRUNG ); $this->_session->setParam ( HB_PARAM_WAEHRBZ1, HB_WAEHR_BZ_EURO ); // Für Luxemburg Suchbaum immer deaktivieren $this->_session->setParam ( HB_PARAM_SUCHBAUM, HB_SUCHBAUM_DEACTIVATED ); break; case 'fr.softcarrier.com' : case 'fr.soft-carrier.com' : // VIP-Codierung: 1=de, 5=fr $this->_session->setParam ( HB_PARAM_LANG, HB_LANG_FR ); $this->_session->setParam ( HB_PARAM_LANG_ART, HB_LANG_FR ); // softcarrier, buerotissimo, vtmp, liefert-es, vous-livre $this->_session->setParam ( HB_PARAM_SHOPTYPE, HB_SOFTCARRIER ); // siehe Konstanten für site / scSite $this->_session->setParam ( HB_PARAM_SITE, HB_SOFT_FR ); // wwwsite z.B.: softcarrier.de = HB_SOFT_WWWSITE_FR $this->_session->setParam ( HB_PARAM_ERROR_WWWSITE, HB_SOFT_WWWSITE_FR ); $this->_session->setParam ( HB_PARAM_WWWSITE, HB_SOFT_WWWSITE_FR ); $this->_session->setParam ( HB_PARAM_FHFIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTFR ); $this->_session->setParam ( HB_PARAM_FIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTFR ); $this->_session->setParam ( HB_PARAM_KDNR_SHOP_BETREIBER, HB_MUSTERKUNDE_KUNDENNR_SOFTCARRIER ); $this->_session->setParam ( HB_PARAM_S_KUNDENNR, HB_MUSTERKUNDE_KUNDENNR_SOFTCARRIER ); // Währung und Währungsbezeichnung // • Währung (waehr1) und Währungsbezeichnung (waehrbz1) werden zur Zeit pro Site fest in der index-ssl-hb.php gesetzt // • und anschließend immer aus dem Session-Modul gezogen // • sie könnten aber sehr leicht individuell pro Kunde beim Login-Prozess umgesetzt werden bei, in dem sie aus dem Kunden-Objekt mit getWaehr1 bzw. getWaehrbz1 gezogen würden $this->_session->setParam ( HB_PARAM_WAEHR1, HB_WAEHR_LEITWAEHRUNG ); $this->_session->setParam ( HB_PARAM_WAEHRBZ1, HB_WAEHR_BZ_EURO ); $this->_session->setParam ( HB_PARAM_SUCHBAUM, HB_SUCHBAUM_ACTIVATED ); break; case 'soft-carrier.de' : case 'softcarrier.de' : case 'softcarrier.com' : default : // VIP-Codierung: 1=de, 5=fr $this->_session->setParam ( HB_PARAM_LANG, HB_LANG_DE ); $this->_session->setParam ( HB_PARAM_LANG_ART, HB_LANG_DE ); // softcarrier, buerotissimo, vtmp, liefert-es, vous-livre $this->_session->setParam ( HB_PARAM_SHOPTYPE, HB_SOFTCARRIER ); // siehe Konstanten für site / scSite $this->_session->setParam ( HB_PARAM_SITE, HB_SOFT_DE ); // wwwsite z.B.: softcarrier.de = HB_SOFT_WWWSITE_DE $this->_session->setParam ( HB_PARAM_ERROR_WWWSITE, HB_SOFT_WWWSITE_DE ); $this->_session->setParam ( HB_PARAM_WWWSITE, HB_SOFT_WWWSITE_DE ); $this->_session->setParam ( HB_PARAM_FHFIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTDE ); $this->_session->setParam ( HB_PARAM_FIRMENINDIKATOR, HB_FIRMENINDIKATOR_SOFTDE ); $this->_session->setParam ( HB_PARAM_KDNR_SHOP_BETREIBER, HB_MUSTERKUNDE_KUNDENNR_SOFTCARRIER ); $this->_session->setParam ( HB_PARAM_S_KUNDENNR, HB_MUSTERKUNDE_KUNDENNR_SOFTCARRIER ); // Währung und Währungsbezeichnung // • Währung (waehr1) und Währungsbezeichnung (waehrbz1) werden zur Zeit pro Site fest in der index-ssl-hb.php gesetzt // • und anschließend immer aus dem Session-Modul gezogen // • sie könnten aber sehr leicht individuell pro Kunde beim Login-Prozess umgesetzt werden bei, in dem sie aus dem Kunden-Objekt mit getWaehr1 bzw. getWaehrbz1 gezogen würden $this->_session->setParam ( HB_PARAM_WAEHR1, HB_WAEHR_LEITWAEHRUNG ); $this->_session->setParam ( HB_PARAM_WAEHRBZ1, HB_WAEHR_BZ_EURO ); $this->_session->setParam ( HB_PARAM_SUCHBAUM, HB_SUCHBAUM_ACTIVATED ); break; } // switch } // if (! $lerror->isError ()) // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); } // _phpSessionSetSpecialDomainParamsInitCase /** * Setzen der Session-Parameter: * * 3. Schritt: Überschreiben der Session-Params, die explizit als HTML-Parameter * an die index-ssl-hb.php übergeben worden sind (Explizite Parameter) * * @param * - * @return - * * @author klee: 29.11.2017 -- NG_WEBSHOP: Überarbeitung IndexWebShop.php * @author WH: 20.03.2018 - NG_WEBSHOP: liefert-es Shops: Deeplink Newsletter Anmeldung bestaetigen oder abmelden * @author WH: 24.04.2019 - Passwort-Verschluesselung: DeepLink auf Selbstregistrierungsformular, zum Einbau in Mailtext bei sc * @author klee: 08.08.2019 - RESET HB_PARAM_SEARCHTEXT wg. Umlaute-Problematik * @author klee: 08.08.2019 - Umlaute-Normierung der Suchanfragen über den Deeplink wg. Umlaute-Problematik */ private function _phpSessionOverwriteWithHtmlParams() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); // BBB-log // $logMsg = "\n"; // $logMsg = $logMsg . "_phpSessionOverwriteWithHtmlParams -- START " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); if (! $lerror->isError ()) { // /////////////////////////////////////////////////////////// // // 3. Schritt: Überschreiben der Session-Params, die explizit als HTML-Parameter // an die index-ssl-hb.php übergeben worden sind (Explizite Parameter) // Explizite Parameter: Setzen der Session-Parameter, // die durch HTML-Param-Übergabe explizit gesetzt werden sollen // // /////////////////////////////////////////////////////////// // // F A L L - 1: // Paramter, die in der Session nur überschrieben werden // falls die Web-Site explizit damit aufgerufen wurde // // Es werden nur die Parameter in der Session überschrieben, // mit denen das System explizit aufgerufen wurde. // Ansonsten gilt der letzte Wert für diesen Parameter aus der Session // z.B. Benuzter scahltet den Suchbaum ab, ruft dann Shop erneut auf => Suchbaum sollte abgeschaltet sein // dito für Sprache, if ($this->_htmlParams->isSetParam ( HB_PARAM_LANG )) { $this->_session->setParam ( HB_PARAM_LANG, $this->_paramLang ); $this->_session->setParam ( HB_PARAM_LANG_ART, $this->_paramLang ); } if ($this->_htmlParams->isSetParam ( HB_PARAM_SUCHBAUM )) { $this->_session->setParam ( HB_PARAM_SUCHBAUM, $this->_paramSb ); } // Für Deeplink auf Volltextsuche // action: HB_ACTION_SEARCH_VT_SOLR + HB_ACTION_SEARCH_VT_KURZ if ($this->_htmlParams->isSetParam ( HB_PARAM_SEARCHTEXT )) { // klee -- hier könnte man als Workaround einen Hack einprogrammieren und Umlaute, Französiche Sonderzeichen normieren // Die Kodierungen können so nicht funktionieren (siehe dazu auch Kommentare in der SharedWebShopAjax->_getPhpSessionParams) $this->_session->setParam ( HB_PARAM_SEARCHTEXT, $this->_paramSearchText ); } else { // RESET // klee: 08.08.2019 - RESET HB_PARAM_SEARCHTEXT wg. Umlaute-Problematik // Leer setzen wg. Umlaute-Problematik - Phänonem: // Der Benutzer sucht in einem alten Browser mit einem WebShop < Version 3.315 // einen Suchbegriff mit Umlauten z.B. Sichthüllen, dann wurde dieser unkodiert // in der PHP-$_SESSION gespeichert und bleibt dort auch erhalten. // Dies führt in der getPhpSession dazu, dass in der SharedWebShopAjax->_getPhpSessionParams // (HB_CALLER_SPECIFIC_AJAX_SESS_ETC) die json-Rückgabe fehl schlägt bzw. leer ist // => eigentliche Lösung wäre die Rückgabe in der HB_CALLER_SPECIFIC_AJAX_SESS_ETC utf-8 zu codiederen // Bereits erledigt -- aber zusätzlich hier leeren -- kann bei stabilen Laufen getest werden, ob überhuapt noch notwendig // des neuen WebShops diesen Workaround hier: $this->_session->setParam ( HB_PARAM_SEARCHTEXT, '' ); } // WH: 16.02.2022 - Produkt-Info: Ansteuerung // die ID (Datum im Format yyMmdd) der Produkt-Infoseite in den Session-Param searchText legen if ($this->_paramAction == HB_ACTION_PRODUKT_INFO) { $this->_session->setParam ( HB_PARAM_SEARCHTEXT, $this->_paramSearchText ); } // WH: 16.04.2018 - NG_WEBSHOP: Kreditkartenabwicklung - Deeplinks für Abbruch und Erfolg bei Zahlung if ($this->_htmlParams->isSetParam ( HB_PARAM_ABWICKLUNGSNR_KURZ )) { $this->_session->setParam ( HB_PARAM_ABWICKLUNGSNR, $this->_paramAbwicklungsnr ); } // /////////////////////////////////////////////////////////// // // F A L L - 2: // Übergabe der erweiterten Parameter an den webShop über PHP-Session-Params // Diese Parameter werden immer überschrieben // // Setzen besonderer Parameter für besondere Aktionen wie DEEPLINKS // // Für Deeplink auf ArtikelDetail // action: HB_ACTION_DETAIL_PRINT + HB_ACTION_DETAIL_PRINT_KURZ // zur Auswertung der action siehe mainSuperShopCrt, // in dem dann aufgrund der action der korrekte State angesprungen wird // DART-BBB-log klee // BBB-log // $logMsg = "\n"; // $logMsg = $logMsg . "> > > index-ssl-hb.php -- _phpSessionOverwriteWithHtmlParams < < <" . "\n"; // $logMsg = $logMsg . "_paramArtikelnr: " .$this->_paramArtikelnr . "\n"; // $logMsg = $logMsg . " " . "\n"; // $logMsg = $logMsg . " " . "\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); // wh+klee: 23.03.2018 -- NG_WEBSHOP: Korrektur hb_dev-Param // if ($this->_htmlParams->isSetParam ( HB_PARAM_DEV )) { $this->_session->setParam ( HB_PARAM_DEV, $this->_paramHbdev ); // } // Action muss immer neu gesetzt werden, damit nicht die alte (letzte action aus dem webShopGültigkeit hat) $this->_session->setParam ( HB_PARAM_ACTION, $this->_paramAction ); $this->_session->setParam ( HB_PARAM_ARTIKELNR, $this->_paramArtikelnr ); $this->_session->setParam ( HB_PARAM_SHOPNR, $this->_paramShopnr ); // Für Deeplink auf Online Katalog -- action: HB_ACTION_KATALOG_DEEP_LINK $this->_session->setParam ( HB_PARAM_KATALOG_NR, $this->_paramKatalogNr ); $this->_session->setParam ( HB_PARAM_KATALOG_DESTINATION, $this->_paramKatalogDestination ); $this->_session->setParam ( HB_PARAM_PAGE, $this->_paramKatalogAktSeitennr ); // klee: 21.09.2022 -- hbapi: Deeplink auf Marke integriert $this->_session->setParam ( HB_PARAM_MARKE_ID, $this->_paramMarkeId ); // WH: 20.03.2018 - NG_WEBSHOP: liefert-es Shops: Deeplink Newsletter Anmeldung bestaetigen oder abmelden $this->_session->setParam ( HB_PARAM_EMAIL, $this->_paramEmail ); // ausschliesslich fürs Preview // klee: 19.03.2018 -- NG_WEBSHOP: NG-Shop liefert-es Preview Link programmiert + alter Link wird auf neuen Shop umgeroutet // preview immer HB_PREVIEW_OFF, es sei denn er wird explizit gesetzt if ($this->_paramPreview == HB_PREVIEW_ON) { $this->_session->setParam ( HB_PARAM_PREVIEW, HB_PREVIEW_ON ); } else { $this->_session->setParam ( HB_PARAM_PREVIEW, HB_PREVIEW_OFF ); } // klee: 01.10.2020 - Datenbankgestüzte Banner-Verwaltung (NG-Component): PREVIEW // preview immer HB_ACTION_BANNER_PREVIEW_OFF, es sei denn er wird explizit gesetzt if ($this->_paramBannerPreview == HB_PREVIEW_ON) { $this->_session->setParam ( HB_PARAM_BANNER_PREVIEW, HB_ACTION_BANNER_PREVIEW_ON ); $this->_session->setParam ( HB_PARAM_BANNER_VON, $this->_paramBannerVon ); $this->_session->setParam ( HB_PARAM_BANNER_BIS, $this->_paramBannerBis ); } else { $this->_session->setParam ( HB_PARAM_BANNER_PREVIEW, HB_ACTION_BANNER_PREVIEW_OFF ); $this->_session->setParam ( HB_PARAM_BANNER_VON, HB_DEFAULT_DATE_EMPTY ); $this->_session->setParam ( HB_PARAM_BANNER_BIS, HB_DEFAULT_DATE_EMPTY ); } // WH: 24.04.2019 - Passwort-Verschluesselung: DeepLink auf Selbstregistrierungsformular, zum Einbau in Mailtext bei sc $this->_session->setParam ( HB_PARAM_SELF_REG_KDNR, $this->_paramSelfRegKdnr ); // $logMsg = "\n"; // $logMsg = $logMsg . "this->_paramPreview: $this->_paramPreview "."\n"; // $logMsg = $logMsg . "this->_paramAction: $this->_paramAction "."\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); // Korrektur der Session, da diese evt. falsch gesetzt wurde // klee -- Korrekturmechanismus kann nach Ostern 2018 entfernt werden // if (($this->_siteObj2018P->getDomainNameFullQualified() == 'vtmp.net') || ($this->_siteObj2018P->getDomainNameFullQualified() == 'vtmp.de')) { // $this->_session->setParam ( HB_PARAM_WWWSITE, HB_VTMP_WWWSITE_DE ); // } // /////////////////////////////////////////////////////////// // // klee: 02.03.2018 -- NG_WEBSHOP: Falls man über die index-ssl-hb.php kommt // und die Session abgelaufen ist, so wird der Benutzer immmer automatisch ausgeloggt // if ($this->_session->isSessionTimeout ( $this->_isSoftcarrier () ) && ($this->_session->getLoginStatus () == HB_LOGIN_STATUS_EINGELOGGED)) { // Überprüfung, ob Session-Timeout vorliegt // Hier den Benutzer bereits explizit ausloggen $this->_session->setLoginStatus ( HB_LOGIN_STATUS_AUSGELOGGED ); // $logMsg = "\n"; // $logMsg = $logMsg . ">>>>>>>>>>>>>>>>>>>>>>>>>> Benutzer automatisch ausgeloggt " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } } // if (! $lerror->isError ()) // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); } // _phpSessionOverwriteWithHtmlParams /** * Holen der Info fuer Waehrung des FH aus Tabelle adressen * * @param $kundennrShopBetreiber - * die Kundennr des FH, der Shopbetreiber eines liefert-es Shops ist * @param $firmenindikator - * Firmenindikator des liefert-es Shops * * @return $row als DB-Zeile aus * * @author WH: 23.03.2018 -- NG_WEBSHOP: liefert-es-Shops: Waehrung des FH aus Tabelle adressen * * */ private function _getAdresseShopbetreiber($kundennrShopBetreiber = 0, $firmenindikator = 0) { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); $row = null; // /////////////////////////////////////////////////////////////// // // Holen der Daten aus Tabelle adressen // $query = ' SELECT * ' . ' FROM hbdb.adressen ' . ' WHERE kundennr = ' . $kundennrShopBetreiber . ' AND firmenindikator = ' . $firmenindikator; // // $logMsg = "\n"; // $logMsg = $logMsg . "query " . $query . "\n"; // $logMsg = $logMsg . " " . "\n"; // $logMsg = $logMsg . "_wwwsite: $this->_wwwsite" . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // (Klee: 04.05.2005) Keine Konvertierung $table = $this->_db1->queryAssoc ( $query ); $error = $this->_db1->getError (); if ($error->isError ()) { // Error bei DB-Abfrage, aber keine konkreten Fehler auf der Oberflaeche ausgeben $msg = 'DB-Error'; $lerror->setMessages ( $msg, HB_ERROR ); hbdebug ( get_class ( $this ) . '->_getAdresseShopbetreiber(): could not perform SQL: ' . $query, 1 ); } elseif (count ( $table ) == 0) { // Shopbetreiber nicht gefunden if ($this->_wwwsite == 'softcarrier.liefert-es.com') { // klee: 18.01.2024 - Verhinderung Fehlermeldungen im Log bei soft-carrier.liefert-es.com // Nichts tun, da für softcarrier.liefert-es.com die Betreiber-Kundennr 0 eingetragen ist // + Konsequenzen bei Korrektur von 0 nicht überschaubar } else { $msg = 'undefined kundennrShopBetreiber [' . $kundennrShopBetreiber . ']' . ' - firmenindikator [' . $firmenindikator . ']'; hbdebug ( get_class ( $this ) . '->_getAdresseShopbetreiber(): ' . $msg, 1 ); } } else { // Shopbetreiber nicht gefunden $row = $table [0]; } // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); return $row; } // _getAdresseShopbetreiber /** * Control * * @param * - * @return - '$this->_error' wird erweitert * * @author klee: 29.11.2017 -- NG_WEBSHOP: Überarbeitung IndexWebShop.php * @author klee: 16.03.2018 -- NG_WEBSHOP: NG-Shop liefert-es Preview Link programmiert + alter Link wird auf neuen Shop umgeroutet * @author klee: 06.06.2018 - getS_Siteinfo an allen Stellen aus Klasse Site2018P ziehen * @author klee 22.10.2018 - hbdev in Site2018P + UtilitiesKunde2018P parametrisiert */ function control() { $this->_error = new Error2017P (); // TODO klee // $logMsg = "\n"; // $logMsg = $logMsg . "> > > index-ssl-hb < < <" . "\n"; // $logMsg = $logMsg . "" . "\n"; // $logMsg = $logMsg . "HB_DBSERVER1: " . HB_DBSERVER1 ."\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // TODO klee // exit('KLEE'); // klee: 25.10.2021 - isBot-Check in alle zentrale Ajax-Dateien eingebracht if (isBot ()) { // Sicherheitabfrage gegen Bots // $logMsg = "\n"; // $logMsg = $logMsg . ">>>>>>>>>>>>>>>>>isBot<<<<<<<<<<<<<<<<<<" . "\n"; // $logMsg = $logMsg . " Security Violation (ERROR_IB_100) " . "\n"; // $logMsg = $logMsg . " REMOTE_ADDR: " . $_SERVER ['REMOTE_ADDR'] ."\n"; // $logMsg = $logMsg . " " . "\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); echo 'Security Violation (ERROR_IB_100)'; // Absoluter Programmausstieg die (); } // HTML-Parameter checken if (! $this->_error->isWarningOrError ()) { $this->_htmlParams = new HtmlParams2017P ( 'IndexSslHb' ); $err = $this->_htmlParams->getError (); $this->_error->setMessages ( $err->getMessages () ); } // Check Params if (! $this->_error->isWarningOrError ()) { $this->_checkParams (); } // klee: 27.06.2018 - Eliminierung von Aufrufen des alten Webshops: _callOldWebShop eliminiert // Zum Testen: // $this->_error->setMessages ( ' klee Fatal Error', HB_ERROR ); // Datenbankverbindung aufmachen if (! $this->_error->isWarningOrError ()) { $this->_db1 = new DatabasePDO2018P ( HB_DBUSERNAME, HB_DBPASSWORD, HB_DBSERVER1, HB_DBNAME ); $err = $this->_db1->getError (); // $this->_error->setMessages ( $err->getMessages () ); // klee: 25.11.2015 -- DB-Connection Msg an der Oberfläche für den Benutzer ausgeben // /$this->_error->setMessages ( $err->getMessages () ); if ($err->isError ()) { // Basismeldungen können NICHT internationalisiert werden: da keine db-Connector vorhanden $this->_error->setMessages ( $err->getMessages () ); $this->_error->setMessages ( 'Zur Zeit keine Datenbankverbindung!', HB_WARNING ); $this->_error->setMessages ( 'Pas de connexion à la base de données!', HB_WARNING ); $this->_error->setMessages ( 'No database connection', HB_WARNING ); $fatalError = new FatalError (); $fatalError->control ( $this->_error ); // harter Abbruch: da ohne DB-Verbindungen keine weiteren Tätigkeiten möglich sind // einmaliger Gebrach // die (); } } // Datenbankverbindung aufmachen // Domainen-Prüfung durchführen if (! $this->_error->isWarningOrError ()) { // klee: 28.05.2018 - Klasse Site2018P eingeführt // Site-Object über $wwwsite (darf auch null sein -- dann wird sie in Site2018P über HTTP_HOST berechnet ) besorgen // klee 23.10.2018 - UtilitiesKunde2018P Vereinheitlichung Sprachtabelle-Methoden // Die vom Benutzer gezogene Sprache wird erst in derSession bzw. Site2018P berechnet // => an dieser Stelle einfach mal mit HB_LANG_DE vorbelegen // $langStr = $this->_siteObj2018P->getLangShopBasisStr (); $langStr = HB_LANG_DE_ISO; $wwwsite = null; $this->_siteObj2018P = new Site2018P ( $this->_db1, $this->_paramHbdev, $langStr, $wwwsite ); $this->_wwwsite = $this->_siteObj2018P->getWwwSite (); // $err = $this->_siteObj2018P->getError (); // $this->_error->setMessages ( $err->getMessages () ); } // klee 23.10.2018 - Umzug diverser Methoden nach UtilitiesKunde2018P if (! $this->_error->isWarningOrError ()) { $this->_utilSoft2018P = new UtilitiesKunde2018P ( $this->_db1, $this->_paramHbdev, $langStr ); $err = $this->_utilSoft2018P->getError (); $this->_error->setMessages ( $err->getMessages () ); // $logMsg = "\n"; // $logMsg = $logMsg . "this->_paramHbdev: $this->_paramHbdev " . "\n"; // $logMsg = $logMsg . "langStr: $langStr " . "\n"; // $logMsg = $logMsg . "wwwsite: $wwwsite " . "\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); } // klee: 29.05.2018 - DSGVO: Internationalisierung if (! $this->_error->isWarningOrError ()) { $langStr = $this->_siteObj2018P->getLangShopBasisStr (); // $logMsg = "\n"; // $logMsg = $logMsg . "langStr: $langStr " . "\n"; // $logMsg = $logMsg . " " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } // BBB-log -- styleSheet zum Testen HB_ERROR erzeugen // $this->_error->setMessages ( 'TEST KLEE', HB_ERROR ); if (! $this->_error->isWarningOrError ()) { // Die Sprachtabelle für dieses Modul in den soft-carrier Utilities holen $this->_utilSoft2018P->getSprachtabelleFuerModul ( 'phpshop.hbApi.EinstiegFrameset.' ); $this->_utilSoft2018P->getSprachtabelleFuerIdList ( '2243' ); $err = $this->_utilSoft2018P->getError (); $this->_error->setMessages ( $err->getMessages () ); // $this->_error->setMessages ( $this->_utilSoft2018P->getLang ( 'Bitte kontaktieren Sie uns telefonisch!', '2243' ), HB_WARNING ); } // if (! $this->_error->isWarningOrError // /////////////////////////////////////////////////////////// // // Setzen der Session-Parameter: // // 1. Schritt: Setzen der Allgemeine Session-Parameter // - nur bei Initialsitzung (Erst-Aufruf oder Cookies sind deaktiviert) // - bei bereits vorhandener SESSION bleiben alle Parameter erhalten // // 2. Schritt: Setzen der speziellen Domain-Session-Parameter // - nur bei Initialsitzung (Erst-Aufruf oder Cookies sind deaktiviert) // - bei bereits vorhandener SESSION bleiben alle Parameter erhalten // // 3. Schritt: Überschreiben der Session-Params, die explizit als HTML-Parameter // an die index-ssl-hb.php übergeben worden sind (Explizite Parameter) // // 1. Schritt: Setzen der Allgemeine Session-Parameter // - nur bei Initialsitzung (Erst-Aufruf oder Cookies sind deaktiviert) // - bei bereits vorhandener SESSION bleiben alle Parameter erhalten if (! $this->_error->isWarningOrError ()) { // Neues Session-Objekt erzeugen // session_start + Cookies setzen $this->_phpSessionInit (); // 1. Schritt: Setzen der Allgemeine Session-Parameter // - nur bei Initialsitzung (Erst-Aufruf oder Cookies sind deaktiviert) // - bei bereits vorhandener SESSION bleiben alle Parameter erhalten if ($this->_initialSession) { $this->_phpSessionSetAllgemeineParams (); } // 2. Schritt: Setzen der speziellen Domain-Session-Parameter // - nur bei Initialsitzung (Erst-Aufruf oder Cookies sind deaktiviert) // - bei bereits vorhandener SESSION bleiben alle Parameter erhalten if ($this->_initialSession) { $this->_phpSessionSetSpecialDomainParamsInitCase (); } // 3. Schritt: Überschreiben der Session-Params, die explizit als HTML-Parameter // an die index-ssl-hb.php übergeben worden sind (Explizite Parameter) $this->_phpSessionOverwriteWithHtmlParams (); // if (($this->_session->getEndKundennrScshopOrSshop() == -1) && ($this->_siteObj2018P->getKdnrShopBetreiber() == -1)) { // // Notbremse, falls es bei Cookies zu DB zu Inkonsitenten Zuständen kommt // $this->_restartSession (); // // Hinweis: // // in _restartSession wird die index-ssl-hb.php nochmals aufgerufen // // und deshalb die Applikation an dieser Stelle ausnahmsweise durch die() unterbrochen // // das geht nicht anders, wg kruden PHP-Session-Mechanismus // } } // isWarningOrError // $logMsg = "\n"; // $logMsg = $logMsg . "this->_paramPreview: $this->_paramPreview " . "\n"; // $logMsg = $logMsg . "this->_paramWwwsite: $this->_paramWwwsite " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); if (! $this->_error->isWarningOrError ()) { // klee: 15.03.2018 -- NG_WEBSHOP: Test ob liefert-es gesperrt // WH: 06.04.2018 - NG_WEBSHOP: Pruefung ShopShops fuer Preview freigegeben // Diese Tests werden immer ausgeführt, auch im PREVIEW-Mode $this->_checksSshops (); } // klee: 20.02.2018 -- NG_WEBSHOP: Deeplinks Umprogrammierung // Weitere Aktionen durchführen, falls Spezialbehandlungen notwendig if (! $this->_error->isWarningOrError ()) { $this->_act (); } // $url = "https://www.softcarrier.ch"; // $url = "https://www.softcarrier.ch/hbdb/webShop/IndexWebShop.php?/#shop"; global $hbCaller; if ($hbCaller == HB_CALLER_INDEX_SITEMAP) { // Wir kommen von der Sitemap // in der Sitemap wird die index-ssl-hb.php nur in die IndexSitemap eingelagert. // Sie darf also keinen Sprung auf den webShop machen // $logMsg = "\n"; // $logMsg = $logMsg . ">>>>>>>>>>>>>>>>> Wir kommen von der Sitemap <<<<<<<<<<<<<<<<<<<<<<<<" . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } elseif ($this->_paramAction == HB_ACTION_OFFICEB2B) { // WH: 20.03.2018 - Restschnittstelle officeb2b umstellen auf neue Indexseite $this->_checkOb2bAndRestCall (); } else { // Normalfall if (! $this->_error->isWarningOrError ()) { // Normalfall // JavaScript-Check + Aufruf webShop $this->_checkJsAndShopCall (); } else { // /Fehlerbehandlung $fatalError = new FatalError (); $fatalError->control ( $this->_error ); } } // if ($hbCaller == HB_CALLER_INDEX_SITEMAP) } // control /** * Berechnet die Url für den Aufruf des neuen WebShops * * @param * - * @return - * * @author klee: 29.11.2017 -- NG_WEBSHOP: Überarbeitung IndexWebShop.php * @author klee: 16.03.2018 -- NG_WEBSHOP: Sonderbehandlung Routing auf vtmp.net + softcarrier.com * */ private function _computeWebShopUrl() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); $url = ''; $sessionid = $this->_session->getSessionId (); $urlPhpSessionId = ""; if ($this->_initialSession) { // Benutzer erlaubt keine Cookies im Web-Browser bzw. 1. Aufruf liegt vor // (siehe Problembeschreibung bei checkCookiesBrowserSupportOn) // Dieses Problem tangiert uns nicht wirklich, da wir beim ersten Aufruf // einfach die HB_PARAM_SESSIONID in der URL mitgeben // HB_PARAM_SESSIONID = PHPSESSID // // Hinweis: Gibt es keinen Browser-Cookies-Support => so wird jede Sitzung als Initial-Sitzung behandelt // // $urlPhpSessionId = ""; funktioniert nicht bei abgeschalteten Cookies $urlPhpSessionId = "?" . HB_PARAM_SESSIONID . "=$sessionid"; // $logMsg = "\n"; // $logMsg = $logMsg . "Cookies: sind N I C H T aktiviert bzw. es liegt EINE Initial-Sitzung vor" . "\n"; // $logMsg = $logMsg . "urlPhpSessionIdStr: $urlPhpSessionId " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } else { // $logMsg = "\n"; // $logMsg = $logMsg . "Cookies: sind aktiviert und es liegt KEINE Initial-Sitzung vor" . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } // if ($this->_initialSession) // $logMsg = "\n"; // $logMsg = $logMsg . "this->_domainNameFullQualified: $this->_siteObj2018P->getDomainNameFullQualified() "."\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); // // BBB-log // $logMsg = "\n"; // $logMsg = $logMsg . "++++++++++++++++++++++ QUERY_STRING: " . $_SERVER['QUERY_STRING'] . "\n"; // $logMsg = $logMsg . "getDomainNameFullQualified: " . $this->_siteObj2018P->getDomainNameFullQualified () ."\n"; // $logMsg = $logMsg . "_SERVER: " . $logMsg = $logMsg . " " . json_encode( $_SERVER , JSON_PRETTY_PRINT ). "\n"; // $logMsg = $logMsg . "_SERVER['REQUEST_URI']: " . $_SERVER['REQUEST_URI'] ."\n"; // $logMsg = $logMsg . " " . "\n"; // $logMsg = $logMsg . " " . "\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); // klee: 26.06.2018 - Eliminierung von Aufrufen des alten Webshops if (($this->_siteObj2018P->getDomainNameFullQualified () == 'softcarrier.fr') || ($this->_siteObj2018P->getDomainNameFullQualified () == 'soft-carrier.fr')) { // klee: 10.01.2024 - softcarrier.fr und soft-carrier.fr auf auf fr.softcarrier.com umgelenkt $url = "www.fr.softcarrier.com"; } elseif ($this->_siteObj2018P->getDomainNameFullQualified () == 'vtmp.ch') { // Sonderbehandlung vtmp.ch // _domainNameFullQualified: 'fr.softcarrier.com', 'soft-carrier.ch', liefert-es.com ... $url = "www.vtmp.ch/cms/vtmpch/de/info/officeb2b.html"; } elseif (($this->_siteObj2018P->getDomainNameFullQualified () == 'buerotissimo.com') && ($_SERVER ['REQUEST_URI'] != "/hbdb/webShop/HbErrorUnderConstruction.php")) { // klee: 23.10.2023 -- Abfangen der buerotissimo.com // $url = 'www.buerotissimo.com' . '?/hbdb/webShop/HbError404.php'; // $url = 'www.vtmp.de'; // $url = 'www.liefert-es.com/hbdb/webShop/HbError404.php'; // Beachte bitte auch die Rewrite-Regeln in /etc/apache $url = 'www.buerotissimo.com/hbdb/webShop/HbErrorUnderConstruction.php'; } elseif ($this->_siteObj2018P->getDomainNameFullQualified () == 'vtmp.net') { // Sonderbehandlung vtmp.net // mri: 24.10.2018 - vtmp.net und softcarrier.com Domains nicht umleiten // $url = "www.vtmp.net/cms/vtmpnet/"; // klee: 27.05.2022 -- vtmp.net auf vtmp.de in der index-ssl-hb.php umgebogen -- mit allen QUERY_STRING Params $url = 'www.vtmp.de' . '?' . $_SERVER ['QUERY_STRING']; } elseif ($this->_siteObj2018P->getDomainNameFullQualified () == 'vtmp.com') { // Sonderbehandlung vtmp.biz // klee: 11.04.2024 -- vtmp.com integriert $url = 'www.vtmp.de' . '?' . $_SERVER ['QUERY_STRING']; } elseif ($this->_siteObj2018P->getDomainNameFullQualified () == 'vtmp.biz') { // Sonderbehandlung vtmp.biz // klee: 27.06.2018 - Eliminierung von Aufrufen des alten Webshops: vtmp.biz // mri: 24.10.2018 - vtmp.net und softcarrier.com Domains nicht umleiten // $url = "www.vtmp.net/cms/vtmpnet/"; // klee: 24.05.2022 -- vtmp.biz auf vtmp.de in der index-ssl-hb.php umgebogen -- mit allen QUERY_STRING Params $url = 'www.vtmp.de' . '?' . $_SERVER ['QUERY_STRING']; } elseif (($this->_siteObj2018P->getDomainNameFullQualified () == 'softcarrier.com') || ($this->_siteObj2018P->getDomainNameFullQualified () == 'soft-carrier.com')) { // Sonderbehandlung soft-carrier.com // mri: 24.10.2018 - vtmp.net und softcarrier.com Domains nicht umleiten // $url = "www.softcarrier.de/cms/softcom/"; $url = "www.softcarrier.com/cms/softcom/"; } elseif (($this->_siteObj2018P->getDomainNameFullQualified () == 'softcarrier.at') || ($this->_siteObj2018P->getDomainNameFullQualified () == 'soft-carrier.at')) { // Sonderbehandlung soft-carrier.at $url = "www.softcarrier.com/cms/softcom/"; } elseif (($this->_siteObj2018P->getDomainNameFullQualified () == 'softcarrier.lu') || ($this->_siteObj2018P->getDomainNameFullQualified () == 'soft-carrier.lu')) { // Sonderbehandlung soft-carrier.lu // klee: 16.12.2020 - Zugriffe auf www.softcarrier.lu wird auf sc-com-Seite umgelenkt $url = "www.softcarrier.com/cms/softcom/"; } elseif (($this->_siteObj2018P->getDomainNameFullQualified () == 'heeft-het.com')) { // Sonderbehandlung heeft-het.com // mri: 24.10.2018 - vtmp.net und softcarrier.com Domains nicht umleiten // $url = "www.softcarrier.de/cms/softcom/"; $url = "www.softcarrier.com/cms/softcom/"; } elseif (($this->_siteObj2018P->getDomainNameFullQualified () == 'liefert-es.net')) { // Sonderbehandlung liefert-es.net => Umleitung auf den Mustershop // klee: 27.06.2018 - Eliminierung von Aufrufen des alten Webshops: liefert-es.net $url = "www.soft.liefert-es.com"; } else { // Normalfall // Beachte: die HTML-Parameter werden alle per PHP-Session weiter gegeben // einzige Ausnahme HB_PARAM_SESSIONID in der Initialsitzung $url = $_SERVER ["HTTP_HOST"] . "/hbdb/webShop/IndexWebShop.php" . $urlPhpSessionId; } // Spezialfall Online Kataloge: // WH: 28.03.2017 - Transfer Protocol SSL -- Umstellung. siehe properties.inc.php if (SSL_ON) { // bei aktivierten domainen SSL On $url = "https://" . $url; } else { $url = "http://" . $url; } // $logMsg = "\n"; // $logMsg = $logMsg . "sessionid: $sessionid " . "\n"; // $logMsg = $logMsg . "$url: $url" . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); return $url; } // _computeWebShopUrl /** * zerstört die aktuelle Sitzung + löscht diese aus der DB * löscht das aktuelle Cookie im Kunden-Browser und * ruft die Index erneut auf, um so eine völlig neue Sitzung zu initialisieren * * Restart der Sitzung hat auch immer ein die() * und damit einen Ausstieg aus demWebshop zur Folge * * @param * - * @return - * @author (Programmierer: klee Letzte Änderung: 02.09.2010) * @author PHP-BUG-Workaround fuer session_start() (klee:01.09.2010) * @author klee: 17.01.2018 -- FATAL-Error weiter ausprogrammiert */ private function _restartSession() { hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : START", 10 ); // lokales Error-Objekt erzeugen $lerror = new Error2017P (); // Sitzung zerstoeren $this->_session->destroySession (); // - Rücksprung auf die Index-Seite // - Dort Neu-Initialisierung der Sitzung // URL auf Index-Seite holen ; // Reset-Url muss mit allen Parametern aufgerufen werden: denke auch an Deeplink oder an bereits gesetzte Sprache // Jedenfalls darf dann kein erneuter HB_PARAM_RESET_SESSION erfolgen // alle Paramter außer PHPSESSID und reset an die URL anhängen // Code aus dem Inter gefischt $url = $_SERVER ["HTTP_HOST"]; // WH: 28.03.2017 - Transfer Protocol SSL -- Umstellung. siehe properties.inc.php if (SSL_ON) { // bei aktivierten domainen SSL On $url = "https://" . $url; } else { $url = "http://" . $url; } // Alle Parameter mitgeben, außer RESET und PHP_SESSIONID $cleanedAllHtmlParams = $this->_htmlParams->getAllHtmlParams (); unset ( $cleanedAllHtmlParams [HB_PARAM_RESET_SESSION] ); unset ( $cleanedAllHtmlParams [HB_PARAM_SESSIONID] ); // Alle restlichen Parameter als Übergabestring vorbereiten $queryString = ''; foreach ( $cleanedAllHtmlParams as $key => $value ) { $queryString = $queryString . $key . '=' . $value . '&'; } // $url = $url .'?hbdev=20'. '&' . HB_PARAM_MSG . '=' . $msg; $url = $url . '?' . $queryString; // $logMsg = "\n"; // $logMsg = $logMsg . ">>>>>>>>>>>>>>>>> queryString: $queryString" . "\n"; // $logMsg = $logMsg . ">>>>>>>>>>>>>>>>> cleanedAllHtmlParams: " . json_encode($cleanedAllHtmlParams) . "\n"; // $logMsg = $logMsg . ">>>>>>>>>>>>>>>>> url: $url " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // Hier gab es im Zusammenhang mit der session_start() Probleme, // diese scheint nur einmal pro PHP-Datei aufrufbar, ansonsten greift sie immer // auch nachdem das Cookie und der DB-Eintrag zerstoert sind auf die alte PHP_SESSION_ID zu // evt. schwiert diese irgendwo als globale Variable herum // ===> WORKAROUND per location die Index-Seite nochmals aufrufen // header('location: '.$url); echo ''; // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); // Hinweis: // in _restartSession wird die index-sssl-hb.php nochmals aufgerufen // und deshalb die Applikation an dieser Stelle ausnahmsweise durch die() unterbrochen // das geht nicht anders, wg kruden PHP-Session-Mechanismus // ausnahmsweise -- korrekt an dieser Stelle !!!! die (); } // _restartSession() /** * Checkt, ob JavaScript aktiviert ist oder nicht * Falls kein JS aktiviert wird eine Warnung ausgegeben. * Ansonsten wird über einen JS-Befehl der webShop angesprungen * * @param * - * @return - * * @author klee: 25.01.2018 -- Check auf JavaScript eingebaut * */ private function _checkJsAndShopCall() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); // /////////////////////////////////////////////////////////// // // URL-webShop berechnen // if (! $lerror->isWarningOrError ()) { $url = $this->_computeWebShopUrl (); } // DART-BBB-log klee // BBB-log // $logMsg = "\n"; // $logMsg = $logMsg . "> > > _checkJsAndShopCall < < <" . "\n"; // $logMsg = $logMsg . "url: $url " . "\n"; // $logMsg = $logMsg . " " . "\n"; // $logMsg = $logMsg . "this->_session->getSessionId " . $this->_session->getSessionId () . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); // Nur wenn es gar keinen Fehler gegeben hat Aufruf des WebShops // => Abfrage auf $this->_error if (! $this->_error->isWarningOrError ()) { // Permanent redirection // WH: diese Art der Umleitung, wenn man neu in den Shop reinkommt und eine neue Session generiert // statt das urspruengliche Verfahren von hiblue beizubehalten, bei Feststellung einer abgelaufenen Session eine neue zu generieren // damit ist auch das Verfahren ausgehebelt, die Parameter wie z.B. die language zu uebergeben , da im neu zusammengebauten // Link ($url. s.o.) nur die Params wwwsite, shoptye, sb und msg mitgegeben werden // An dieser Stelle könnte man natürlich eine schönere Seite integrieren // Aufwand für alle 3 Systeme: softcarrier, vtmp, liefert-es bzw. vous-livre // Auf französchisch und deutsch und englisch // evt. mit Links wie das beim IE + FF umzusetzen ist echo '
'; echo '
'; echo '

'; echo 'Unser WebShop kann nur mit JavaScript betrieben werden. '; echo '

'; echo 'Bitte aktivieren Sie JavaScript!'; echo '

'; echo '
'; echo '

'; echo 'Notre boutique en ligne ne peut être utilisée qu\'avec JavaScript.'; echo '

'; echo 'Veuillez activer JavaScript'; echo '

'; echo '
'; echo '

'; echo 'Our webshop can only be operated with JavaScript.'; echo '

'; echo 'Please enable JavaScript'; echo '

'; echo ''; echo '
'; // PHP-Umleitung // header ( "HTTP/1.1 301 Moved Permanently" ); // header ( "Location: $url" ); } // Nur wenn es gar keinen Fehler gegeben hat Aufruf des WebShops // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); } // _checkJsAndShopCall /** * Checkt, ob eine softcarrier-Site vorliegt * * @param * - * @return - * * @author klee: 02.03.2018 -- NG_WEBSHOP: Falls man über die index-ssl-hb.php kommt * */ private function _isSoftcarrier() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); $wwwsite = $_SERVER ["HTTP_HOST"]; $pos = strpos ( $wwwsite, "carrier" ); $isSoft = true; // Beachten Sie die Verwendung von ===. Ein einfacher Vergleich (==) liefert // nicht das erwartete Ergebnis, da die Position von 'a' die nullte Stelle // (also das erste Zeichen) ist if ($pos === false) { // Es liegt KEIN softcarrier-Shop vor $isSoft = false; // $logMsg = "\n"; // $logMsg = $logMsg . "Es liegt K E I N softcarrier-Shop vor: $wwwsite " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } else { // Es liegt EIN softcarrier-Shop vor $isSoft = true; // $logMsg = "\n"; // $logMsg = $logMsg . "Es liegt EIN softcarrier-Shop vor: $wwwsite " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); } // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); return $isSoft; } // _isSoftcarrier /** * Getter für die Sessionid -- wird in der VTMP-Sitemap (SitemapTask) verwendet / gebraucht * => public * * @param * - * @return $this->_session; * * @author klee: 09.03.2018 -- NG_WEBSHOP: sitemap -- Index.inc.php durch index-ssl-hb.php ersetzt * * * @deprecated klee 17.04.2023 - SitemapTask wurde eliminiert * @deprecated klee 21.10.2022 - Achtung wird zur Zeit noch in der SitemapTask verwendet * @deprecated klee: 15.08.2022 -- wird erhalten, obwohl Webfaden jetzt die Sitemap erstellt: da Sitemap-Modul vermutlich noch für Mercateo benötigt wird */ public function getSession() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); $session = $this->_session; // $logMsg = "\n"; // $logMsg = $logMsg . "sessionid: " . $session->getSessionId() ."\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); return $session; } // getSession /** * Prueft die ShopShops auf ihre Verfuegbarkeit, d.h. * sind sie freigeschaltet oder gesperrt, * sind sie noch in der Einrichtung, ist der FH gesperrt, etc * * @param * - * * @return Fehler über Error-Objekt der Klasse, falls liefert-Shop gesperrt (oder ähnliches) ist * * @author klee: 02.03.2018 -- NG_WEBSHOP: Falls man über die index-ssl-hb.php kommt * @author WH: 05.04.2018 - NG_WEBSHOP: Pruefung auf gesperrte oder nicht vorhandene ShopShops * @author WH: 06.04.2018 - NG_WEBSHOP: Pruefung ShopShops fuer Preview freigegeben */ private function _checksSshops() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); if (($this->_siteObj2018P->getServerDomainName () == 'liefert-es') || ($this->_siteObj2018P->getServerDomainName () == 'vous-livre')) { // Es liegt EIN liefert-es-Shop bzw. vous-livre-Shop vor // $logMsg = "\n"; // $logMsg = $logMsg . "Es liegt EIN Liefert-Es-Shop vor: $this->_siteObj2018P->getServerDomainName() " . "\n"; // $logMsg = $logMsg . "_serverSubDomainName: $this->_siteObj2018P->getServerSubDomainName() " . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); // //////////////////////////////////////////////////////////////// // // PHP-Shop Deaktivierung des hiblue-Testshop (klee:25.08.2010) // if ($this->_siteObj2018P->getServerSubDomainName () == 'hiblue') { $ipAufrufenderHost = $_SERVER ['REMOTE_ADDR']; $zugriffErlaubt = false; // if ( ($ipAufrufenderHost == HB_HIBLUE_REMOTE_ADRESS) || (strpos($ipAufrufenderHost, '192.168.10.') !== false) ){ if (($ipAufrufenderHost == HB_HIBLUE_REMOTE_ADRESS) || (strpos ( $ipAufrufenderHost, '192.168.10.' ) !== false)) { $zugriffErlaubt = true; } if (! $zugriffErlaubt) { $wwwsite = $_SERVER ["HTTP_HOST"]; $lerror->setMessages ( '' . 'shop access only for testing' . ': [ ' . $wwwsite . ' ]' . '', HB_WARNING ); // $logMsg = "\n"; // $logMsg = $logMsg . "Zugriff ist erlaubt "."\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); } else { // $logMsg = "\n"; // $logMsg = $logMsg . "Zugriff ist N I C H T erlaubt "."\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); } } // PHP-Shop Deaktivierung des hiblue-Testshop // //////////////////////////////////////////////////////////////// // // Test ob Shop exitiert // $table = null; if (! $lerror->isWarningOrError ()) { // $query = ' SELECT * FROM s_siteinfo ' . ' WHERE lower(wwwsite) = lower(' . $this->_db1->sqlQuote ( $this->_wwwsite ) . ')'; $query = ''; $query = $query . ' SELECT * FROM s_siteinfo '; $query = $query . ' WHERE 1=1 '; $query = $query . ' AND (wwwsite) = lower(' . $this->_db1->sqlQuote ( $this->_wwwsite ) . ')'; // $logMsg = "\n"; // $logMsg = $logMsg . "query: $query" . "\n"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); $table = $this->_db1->queryAssoc ( $query ); $error = $this->_db1->getError (); if ($error->isError ()) { $lerror->setMessages ( $error->getMessages (), HB_ERROR ); // hbdebug: funktioniert im nur im Nicht-DEVELOP-Mode hbdebug ( get_class ( $this ) . '->_checksSshops(): could not perform SQL: ' . $query, 1 ); } elseif (count ( $table ) == 0) { // wwwsite not found // WH: 10.04.2018 - Log-Ausgabe undefined site unterdrückt, damit nicht das LOG zugemüllt wird // hbdebug ( get_class ( $this ) . '->_checksSshops(): undefined site [' . $this->_wwwsite . ']', 1 ); // HB_WARNING für die Ausgabe im Produktiv-Betrieb $lerror->setMessages ( $this->_utilSoft2018P->getLang ( 'Website ist nicht vorhanden', '4699' ) . ' : [' . $this->_wwwsite . ']', HB_WARNING ); } } // Test ob Shop exitiert // //////////////////////////////////////////////////////////////// // // Test ob Shop noch nicht fertig oder gesperrt // if (! $lerror->isWarningOrError ()) { $row = $table [0]; $shop_status = $row ['shop_status']; // WH: 06.04.2018 - NG_WEBSHOP: Pruefung ShopShops fuer Preview freigegeben if (($shop_status < HB_SHOP_STATUS_JAVA_PREVIEW_FREIGEGEBEN) && ($this->_paramPreview == HB_PREVIEW_ON)) { // Shop noch nicht fertig oder gesperrt // klee: 10.04.2018 - Log-Ausgabe "Shop noch nicht fertig" unterdrückt, damit nicht das LOG zugemüllt wird // hbdebug ( get_class ( $this ) . '->_checksSshops(): Shop noch nicht fertig $shop_status [' . $shop_status . ']', 1 ); // Shop ist noch nicht freigeschaltet fuer den Preview Mode HB_WARNING für die Ausgabe im Produktiv-Betrieb $lerror->setMessages ( '' . $this->_utilSoft2018P->getLang ( 'Der Shop kann zur Zeit noch nicht im PREVIEW-Mode betrieben werden', '4700' ) . '!' . '', HB_WARNING ); } // dieser Test nur im nicht Preview Mode, denn im Preview Mode muss der FH ihn ja anschauen koennen if (($shop_status < HB_SHOP_STATUS_FREIGEGEBEN) && ($this->_paramPreview != HB_PREVIEW_ON)) { // Shop noch nicht fertig oder gesperrt // klee: 10.04.2018 - Log-Ausgabe "Shop noch nicht fertig" unterdrückt, damit nicht das LOG zugemüllt wird // hbdebug ( get_class ( $this ) . '->_checksSshops(): Shop noch nicht fertig $shop_status [' . $shop_status . ']', 1 ); // Shop ist gesperrt HB_WARNING für die Ausgabe im Produktiv-Betrieb $lerror->setMessages ( '' . $this->_utilSoft2018P->getLang ( 'Der Shop steht Ihnen in Kürze zur Verfügung', '4701' ) . '!' . '', HB_WARNING ); $lerror->setMessages ( '' . $this->_utilSoft2018P->getLang ( 'Der Shop ist zur Zeit noch nicht ONLINE', '4702' ) . '!' . '', HB_WARNING ); } if ($shop_status == HB_SHOP_STATUS_VIP_GESPERRT) { // Shop gesperrt // klee: 18.04.2018 - Log-Ausgabe "Shop gesperrt" unterdrückt, damit nicht das LOG zugemüllt wird // hbdebug ( get_class ( $this ) . '->_checksSshops(): Shop gesperrt $shop_status [' . $shop_status . ']', 1 ); // Shop ist gesperrt HB_WARNING für die Ausgabe im Produktiv-Betrieb $lerror->setMessages ( '' . $this->_utilSoft2018P->getLang ( 'Der Shop ist momentan nicht verfügbar', '4694' ) . '!' . '', HB_WARNING ); } // BBB-log // $logMsg = "\n"; // $logMsg = $logMsg . "shop_status: $shop_status " . "\n"; // $logMsg = $logMsg . " " . "\n"; // $logMsg = $logMsg . " " . "\n"; // hbDebug ( "(".get_class ( $this ).") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1); } // Test ob Shop noch nicht fertig oder gesperrt // //////////////////////////////////////////////////////////////// // // Check, ob der Shopbetreiber seine Gesetzl. Info./Datenschutz und AGBs angepasst hat // nur fuer EU-Firmen wird anhand des Datums der Dateien ermittelt // if (! $lerror->isWarningOrError ()) { $row = $table [0]; $kundennrShopBetreiber = $row ['kundennr']; $firmenindikator = $row ['firmenindikator']; // WH: 24.05.2018 - _isNeuesWiderspruchrecht2014Angepasst entfernt // die Schweiz ist keine EU-Firma, dann keinen Check machen } // Check, ob der Shopbetreiber seine Gesetzl. Info./Datenschutz und AGBs angepasst hat // //////////////////////////////////////////////////////////////// // // Check, ob der Shopbetreiber seine Gesetzl. Info./Datenschutz angepasst hat // klee: 07.05.2018 - DSGVO: Sperren des sShop bis Datenschutzerklärung vom FH editiert wurde // if (! $lerror->isWarningOrError ()) { $row = $table [0]; $kundennrShopBetreiber = $row ['kundennr']; $firmenindikator = $row ['firmenindikator']; // klee: 15.05.2018 - DSGVO: Absprache Klee+TV: Sperre nur für SOFTDE if ($firmenindikator == HB_FIRMENINDIKATOR_SOFTDE) { if (! $this->_isNeuesDSGVO2018Angepasst ( $kundennrShopBetreiber, $firmenindikator )) { // Shopbetreiber hat seine gesetzlichen Infos noch nicht angepaßt // HB_WARNING für die Ausgabe im Produktiv-Betrieb // if (($this->_session->getParam ( HB_PARAM_LANG ) == HB_LANG_FR) || ($this->_siteObj2018P->getServerDomainName () == 'vous-livre')) { // // (klee: 13.05.2014 Einarbeitung der französischen Übersetzungen) // $lerror->setMessages ( '' . "La boutique en ligne n'est pas disponible pour le moment!" . '', HB_WARNING ); // $lerror->setMessages ( '' . "Les informations légales/Protection de données sont pour le moment adaptées aux nouvelles directives de l'Union Européenne par le revendeur." . '', HB_WARNING ); // } else { $lerror->setMessages ( '' . $this->_utilSoft2018P->getLang ( 'Der Shop ist momentan nicht verfügbar', '4694' ) . '!' . '', HB_WARNING ); $lerror->setMessages ( '' . '( ' . $this->_utilSoft2018P->getLang ( 'Datenschutzerklärung/ Gesetzl. Info.Gesetzl. und AGBs werden zur Zeit vom Fachhändler an die neuesten Eu Richtlinien angepaßt', '4695' ) . ' )!' . '', HB_WARNING ); // } } // ! $this->_isNeuesDSGVO2018Angepasst () } // $firmenindikator != HB_FIRMENINDIKATOR_SOFTDE } // Check, ob der Shopbetreiber seine Gesetzl. Info./Datenschutz und AGBs angepasst hat // //////////////////////////////////////////////////////////////// // // Test ob Shopbetreiber gesperrt // if (! $lerror->isWarningOrError ()) { $row = $table [0]; $kundennrShopBetreiber = $row ['kundennr']; $firmenindikator = $row ['firmenindikator']; // Daten des FH aus Tabelle adressen $rowFhAdr = null; $rowFhAdr = $this->_getAdresseShopbetreiber ( $kundennrShopBetreiber, $firmenindikator ); if ($rowFhAdr != null) { // FH-Datensatz vorhanden $status = $rowFhAdr ['status']; if ($status != HB_BENUTZER_STATUS_FREIGEGEBEN) { // Shopbetreiber ist nicht freigegeben fuer Shopsystem // klee: 10.04.2018 - Log-Ausgabe "Shopbetreiber ist nicht freigegeben fuer Shopsystem" unterdrückt, damit nicht das LOG zugemüllt wird // hbdebug ( get_class ( $this ) . '->_checksSshops(): Shopbetreiber ist nicht freigegeben fuer Shopsystem $status [' . $status . ']', 1 ); // Shopbetreiber ist nicht freigegeben fuer Shopsystem HB_WARNING für die Ausgabe im Produktiv-Betrieb $lerror->setMessages ( '' . $this->_utilSoft2018P->getLang ( 'Der Shop ist momentan nicht verfügbar', '4694' ) . '!' . '', HB_WARNING ); } } // Test ob Shop noch nicht fertig oder gesperrt } // Test ob Shopbetreiber gesperrt } // Es liegt EIN liefert-es-Shop bzw. vous-livre-Shop vor // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); } // _checksSshops /** * Prueft, ob der Aufruf der Rest-Schnittstelle fuer officeb2b erlaubt ist. * * - der Key ist korrekt * - der aufrufende Host ist in der Liste mit erlaubten Hosts * - der searchText hat mindestens 2 Zeichen * * @return isAllowed -- true, wenn Aufruf erlaubt, false sonst * * WH: 04.12.2015 -- office2b2 Restschnittstelle fuer Solr-Artikelsuche fuer VTMP * */ function _isOb2bRestAllowed() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); $isAllowed = false; $office2b2RestAllowIp = unserialize ( HB_O_B2B_REST_ALLOW_IP ); $ipAufrufenderHost = $_SERVER ['REMOTE_ADDR']; // echo ' $this->_siteObj2018P->getDomainNameFullQualified() ' .$this->_siteObj2018P->getDomainNameFullQualified(); if ($this->_siteObj2018P->getDomainNameFullQualified () == HB_VTMP_WWWSITE_DE && $this->_paramAction == HB_ACTION_OFFICEB2B && in_array ( $ipAufrufenderHost, $office2b2RestAllowIp ) && strlen ( trim ( $this->_paramSearchText ) ) >= 2) { // der Aufruf kommt ueber vtmp.de und die Action ist HB_ACTION_OFFICEB2B und der Aufruf kam von einer erlaubten IP und // der Suchstring hat mindestens 2 Zeichen $isAllowed = true; } else { // Protokollieren in Log-Datei $ipCallerText = 'ipAufrufenderHost'; $searchText = 'searchText'; // Aufruf ueber falsche domain $domainText = 'Domain'; if ($this->_siteObj2018P->getDomainNameFullQualified () != HB_VTMP_WWWSITE_DE) { $domainText = 'WRONG ' . $domainText; } if (! in_array ( $ipAufrufenderHost, $office2b2RestAllowIp )) { $ipCallerText = 'WRONG ' . $ipCallerText; } if (strlen ( trim ( $this->_paramSearchText ) ) < 2) { $searchText = 'WRONG (TOO SHORT) ' . $searchText; } // Protokollieren auf Log-Datei $logMsg = "REST call not allowed " . "
\n"; $logMsg = $logMsg . $domainText . ': ' . $this->_siteObj2018P->getDomainNameFullQualified () . "
\n"; $logMsg = $logMsg . '$this->_paramAction ' . ': ' . $this->_paramAction . "
\n"; $logMsg = $logMsg . $ipCallerText . ': ' . $ipAufrufenderHost . "
\n"; $logMsg = $logMsg . $searchText . ': ' . $this->_paramSearchText . "
\n"; hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1, HB_PHP_LOG_FILE_REST_API ); } $this->_error->setMessages ( $lerror->getMessages () ); return $isAllowed; } // _isOb2bRestAllowed /** * Prueft, ob der Zugriff auf die ob2b-Restschnittstelle von einer zugelassenen IP erfolgt. * Wenn ja, erfolgt die Weiterleitung auf die AjaxServerData zum Absetzen der Solr-Suche. * Wenn nein, erfolgt ein Eintrag ins spezielle Logfile fuer die Restschnittstelle. * * @return - * * @author WH: 20.03.2018 - Restschnittstelle officeb2b umstellen auf neue Indexseite * */ private function _checkOb2bAndRestCall() { // lokales Error-Objekt erzeugen $lerror = new Error2017P (); // $logMsg = "\n
"; // $logMsg = $logMsg . "_checkOb2bAndRestCall START:" . "\n
"; // hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : $logMsg", 1 ); if ($this->_isOb2bRestAllowed ()) { // URL-fuer AjaxServerData zusammenbauen // // lang bestimmen aus dem ISO-Code $lang = HB_LANG_DE; switch ($this->_paramLanguage) { case HB_LANG_DE_ISO : $lang = HB_LANG_DE; break; case HB_LANG_FR_ISO : $lang = HB_LANG_FR; break; // Default ist deutsch default : $lang = HB_LANG_DE; break; } // switch // if ($this->_paramHbdev == 'TEST-o-b2b') { // WH: 21.09.2022 - Rest-Schnittstelle officeb2b von AjaxServerData-Aufrufe umgestellt auf SharedWebShopAjax $link = '/hbdb/webShop/shared/SharedWebShopAjax.php'; // Link erweitern um die Checksum $hrefParams = ''; $hrefParams = $hrefParams . HB_PARAM_CALLER . '=' . HB_CALLER_OFFICEB2B; $hrefParams = $hrefParams . '&' . HB_PARAM_ACTION . '=' . HB_ACTION_SEARCH_VT_SOLR; $hrefParams = $hrefParams . '&' . HB_PARAM_HB_VERSION . '=' . HB_VERSION; $hrefParams = $hrefParams . '&' . HB_PARAM_SESSIONID . '=' . $this->_session->getSessionId (); // alle moeglichen Params fuer die Schnittstelle $hrefParams = $hrefParams . '&' . HB_PARAM_SOLR_ACTION . '=' . HB_ACTION_SEARCH_TEXT; $hrefParams = $hrefParams . '&' . HB_PARAM_SEARCHTYPE . '=' . HB_SEARCH_TYPE_TEXT_ALL_ARTIKEL; $hrefParams = $hrefParams . '&' . HB_PARAM_SEARCHTEXT . '=' . $this->_paramSearchText; $hrefParams = $hrefParams . '&' . HB_PARAM_FIRMENINDIKATOR . '=' . HB_FIRMENINDIKATOR_VTMPDE; $hrefParams = $hrefParams . '&' . HB_PARAM_LANG . '=' . $lang; $hrefParams = $hrefParams . '&' . 'filterHauptGrp' . '=' . $this->_paramFilterHauptGrp; $hrefParams = $hrefParams . '&' . 'filterUnterGrp' . '=' . $this->_paramFilterUnterGrp; $hrefParams = $hrefParams . '&' . 'filterMarken' . '=' . $this->_paramFilterMarken; $hrefParams = $hrefParams . '&' . 'filterKategorien' . '=' . $this->_paramFilterKat; $hrefParams = $hrefParams . '&' . 'filterKapitel' . '=' . $this->_paramFilterKap; $hrefParams = $hrefParams . '&' . 'filterOffen' . '=' . $this->_paramFilterOffen; $checksum = hbChecksum ( $hrefParams ); $hrefParams = $hrefParams . '&' . HB_PARAM_CSCAP . '=' . $checksum; $link = $link . '?' . $hrefParams; $location = $link; // } // if ($this->_paramHbdev == 'TEST-o-b2b') { // Aufruf der Seite header ( 'location: ' . $location ); } else { echo 'REST call not allowed'; } // Meldungen des lokales Error-Objekt werden an das Klassen-Error-Objekt übergeben $this->_error->setMessages ( $lerror->getMessages () ); } // _checkOb2bAndRestCall /** * Check, ob der Shopbetreiber seine Gesetzl. * Info./Datenschutz und AGBs angepasst hat * * @param $fhKundennr - * Kundennr des Shopbetreibers * @param * $firmenindikator * * @return true -- Shopbetreiber hat seine Anpassungen bereits vorgenommen * * @author (klee: 06.05.2014 Integration neuer Widerspruchsbelehrung + Bug-Bereinigung ) * @author WH: 01.08.2015 -- Logging Aufrufe ShopShops in Datenbank, die aktualisiert werden muessen, */ function _isNeuesWiderspruchrecht2014Angepasst_OLD($fhKundennr, $firmenindikator) { hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : START", 10 ); // lokales Error-Objekt erzeugen $lerror = new Error2017P (); $result = true; // date ("Y-m-d", $fileEditDate); $now = new DateTime ( "now" ); // echo "Now: ".print_r($now)."
"; // zum Testen:$deadlineStr = '2014-05-12'; $deadlineStr = '2014-06-13'; $deadline = date_create ( $deadlineStr ); // echo "deadline: ".print_r($deadline)."
"; $diffDays = date_diff ( $now, $deadline ); $diffDays = $diffDays->format ( '%R%a' ); // echo "Anzahl von Tagen bis zur Deadline: $diffDays
"; if ($diffDays <= 0) { // Test ob FH bereits die entsprechenden Dateien editiert hat $result = false; // echo "fhKundennr: $fhKundennr
"; // echo "firmenindikator: $firmenindikator
"; $pathInfos = "/home/soft/data/kundeninfos/$firmenindikator/$fhKundennr/infos/"; $gesetzDocPath = $pathInfos . HB_HTML_FILE_ENDKUNDEN_GESETZLICHE_INFOS; $agbDocPath = $pathInfos . HB_HTML_FILE_ENDKUNDEN_AGB; // echo "agbDocPath: $agbDocPath
"; $gesetzDocEdit = false; $agbDocEdit = false; // $kpath = HB_ROOT_DIR . 'kunde/kundeninfos/' . $this->_softFHFirmenindikator . '/' . $this->_kdnrShopBetreiber; // echo "$gesetzDocPath: $gesetzDocPath
"; $gesetzDocEdit = $this->_isFileEditAfterDeadline ( $deadline, $gesetzDocPath ); $agbDocEdit = $this->_isFileEditAfterDeadline ( $deadline, $agbDocPath ); // echo "gesetzDocEdit: $gesetzDocEdit
"; // echo "agbDocEdit: $agbDocEdit
"; if ($gesetzDocEdit && $agbDocEdit) { // DerShopbetreiber hat alle notwendigen Dateien bearbeitet $result = true; } else { $result = false; } // WH: 01.08.2015 -- Logging Aufrufe ShopShops in Datenbank, die aktualisiert werden muessen, if (! $result) { // DerShopbetreiber hat noch nicht alle notwendigen Dateien bearbeitet // Logging in DB-Tabelle $heute = hbGetHiblueNormDate (); $query = ' INSERT INTO err_shopshop(datum,kundennr,firmenindikator,site,counter)' . ' VALUES(' . $heute . ',' . $fhKundennr . ',' . $firmenindikator . ' ,' . $this->_db1->sqlQuote ( $this->_wwwsite ) . ',' . ' counter+1 )' . ' ON DUPLICATE KEY UPDATE counter = counter +1'; $this->_db1->queryNorm ( $query ); $err = $this->_db1->getError (); } } // if diffDays // Meldungen des lokales Methoden-Error-Objekt werden an das Error-Objekt // des Frameset-Objektes übergeben $this->_error->setMessages ( $lerror->getMessages () ); return $result; } /** * Check, ob der Shopbetreiber seine Gesetzl. * Info./Datenschutz und AGBs angepasst hat * * @param $fhKundennr - * Kundennr des Shopbetreibers * @param * $firmenindikator * * @return true -- Shopbetreiber hat seine Anpassungen bereits vorgenommen * * @author klee: 07.05.2018 - DSGVO: Sperren des sShop bis Datenschutzerklärung vom FH editiert wurde * @author WH: 24.05.2018 - Pruefung auf Deadline DSGVO mit Uhrzeit */ function _isNeuesDSGVO2018Angepasst($fhKundennr, $firmenindikator) { hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : START", 10 ); // lokales Error-Objekt erzeugen $lerror = new Error2017P (); $result = true; // date ("Y-m-d", $fileEditDate); $now = new DateTime ( "now" ); // echo "Now: ".print_r($now)."
"; // zum Testen: $deadlineStr = '2014-05-12'; // Email an FH wer seinen Shop nach dieser Deadline editiert hat wird nicht gesperrt $deadlineStr = '2018-05-17'; // WH: 24.05.2018 - Pruefung auf Deadline DSGVO mit Uhrzeit // nach dem 16.05.2018, 12:20 $deadlineStr = '2018-05-16T12:20:00'; $deadline = date_create ( $deadlineStr ); // echo "deadline: ".print_r($deadline)."
"; $diffDays = date_diff ( $now, $deadline ); $diffDays = $diffDays->format ( '%R%a' ); // echo "Anzahl von Tagen bis zur Deadline -- diffDays: $diffDays
"; // echo "now: " . print_r ( $now ) . "
"; // echo "deadline: " . print_r ( $deadline ) . "
"; // die (); if ($diffDays <= 0) { // Test ob FH bereits die entsprechenden Dateien editiert hat $result = false; // echo "fhKundennr: $fhKundennr
"; // echo "firmenindikator: $firmenindikator
"; $pathInfos = "/home/soft/data/kundeninfos/$firmenindikator/$fhKundennr/infos/"; $gesetzDocPath = $pathInfos . HB_HTML_FILE_ENDKUNDEN_GESETZLICHE_INFOS; $agbDocPath = $pathInfos . HB_HTML_FILE_ENDKUNDEN_AGB; // echo "agbDocPath: $agbDocPath
"; $gesetzDocEdit = false; $agbDocEdit = false; // $kpath = HB_ROOT_DIR . 'kunde/kundeninfos/' . $this->_softFHFirmenindikator . '/' . $this->_kdnrShopBetreiber; // echo "$gesetzDocPath: $gesetzDocPath
"; $gesetzDocEdit = $this->_isFileEditAfterDeadline ( $deadline, $gesetzDocPath ); $agbDocEdit = $this->_isFileEditAfterDeadline ( $deadline, $agbDocPath ); // echo "gesetzDocEdit: $gesetzDocEdit
"; // echo "agbDocEdit: $agbDocEdit
"; // if ($gesetzDocEdit && $agbDocEdit) { if ($gesetzDocEdit && $agbDocEdit) { // Der Shopbetreiber hat alle notwendigen Dateien bearbeitet $result = true; } else { $result = false; } // WH: 01.08.2015 -- Logging Aufrufe ShopShops in Datenbank, die aktualisiert werden muessen, if (! $result) { // DerShopbetreiber hat noch nicht alle notwendigen Dateien bearbeitet // Logging in DB-Tabelle $heute = hbGetHiblueNormDate (); $query = ' INSERT INTO err_shopshop(datum,kundennr,firmenindikator,site,counter)' . ' VALUES(' . $heute . ',' . $fhKundennr . ',' . $firmenindikator . ' ,' . $this->_db1->sqlQuote ( $this->_wwwsite ) . ',' . ' counter+1 )' . ' ON DUPLICATE KEY UPDATE counter = counter +1'; $this->_db1->queryNorm ( $query ); $err = $this->_db1->getError (); } } // if diffDays // Meldungen des lokales Methoden-Error-Objekt werden an das Error-Objekt // des Frameset-Objektes übergeben $this->_error->setMessages ( $lerror->getMessages () ); return $result; } /** * Check, ob die Datei nach einer Deadline editiert wurde * * @param * deadline * @param * filenmae * @return true -- Shopbetreiber hat seine Anpassungen bereits vorgenommen * * @author (klee: 06.05.2014 Integration neuer Widerspruchsbelehrung + Bug-Bereinigung ) * */ function _isFileEditAfterDeadline($deadline, $filename) { hbDebug ( "(" . get_class ( $this ) . ") " . __FILE__ . " -->" . __FUNCTION__ . "--> : START", 10 ); // lokales Error-Objekt erzeugen $lerror = new Error2017P (); $fileEdit = false; if (file_exists ( $filename )) { $fileEditDate = filemtime ( $filename ); // $fileEditDate = date ("F d Y H:i:s.", $fileEditDate."; // April 29 2009 12:15:06 --- '2014-05-11'; // WH: 24.05.2018 - Pruefung auf Deadline DSGVO mit Uhrzeit $fileEditDateStr = date ( "Y-m-dH:i:s", $fileEditDate ); $fileEditDate = date_create ( $fileEditDateStr ); $diffDays = date_diff ( $deadline, $fileEditDate ); // WH: 24.05.2018 - Pruefung auf Deadline DSGVO mit Uhrzeit, diffDays mit Tagen, Stunden,Minuten, Sekunden $diffDays = $diffDays->format ( '%R%a%h%i%s' ); // echo "$filename wurde zuletzt modifiziert:: $fileEditDateStr" ."
"; // echo "Deadline: ". $deadline->format('Y-m-d H:i:s')."
"; // echo "Anzahl von Tagen an denen die Datei editiert wurde bis zur Deadline: $diffDays
"; // die(); if ($diffDays >= 0) { // Datei wurde nach der Deadline editiert $fileEdit = true; // echo "$filename wurde nach der Deadline (".date ("Y-m-d", $deadline).") editiert" ."
"; } else { // echo "$filename wurde NOCH NICHT nach der Deadline (".date ("Y-m-d", $deadline).") editiert" ."
"; $fileEdit = false; } } // if (file_exists($filename)) // echo "fileEdit: $fileEdit
"; $this->_error->setMessages ( $lerror->getMessages () ); return $fileEdit; } } // class IndexSslHb ?>