/var/www/html/releases/20260609_155504_2026.06.2-67f3a5c1d/dc/common/classes/PDOQueryWrapper.php
* @param string $hostName
* @param int $portNumber
* @param string $dbName
* @param string $userName
* @param string $password
* @param array $optionsArray
*/
public function __construct($hostName, $portNumber, $dbName, $userName, $password, ?array $optionsArray = NULL)
{
$this->hostName = ($hostName ? (string)$hostName : 'localhost');
$this->portNumber = ($portNumber ? (int)$portNumber : 3306);
$this->dbName = ($dbName ? (string)$dbName : 'dcshop');
$this->userName = ($userName ? (string)$userName : 'root');
$this->password = ($password ? (string)$password : '123');
$this->optionsArray = ((is_array($optionsArray) && count($optionsArray) > 0) ? $optionsArray : [\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION]);
$this->dsn = 'mysql:dbname=' . $this->dbName . ';host=' . $this->hostName . ';port=' . (string)$this->portNumber . ';charset=utf8mb4';
$pdo = new PDO($this->dsn, $this->userName, $this->password, $this->optionsArray);
if (!$pdo->exec('SET NAMES utf8mb4') || !$pdo->exec('SET CHARACTER SET utf8mb4')) {
$pdoErrorInfo = $pdo->errorInfo();
$this->errorState = TRUE;
$this->errorMessage = print_r($pdoErrorInfo, 1);
}
$this->connectionObject = $pdo;
$this->errorState = FALSE;
$this->errorMessage = '';
$this->unfinishedQuery = [];
$this->unfinishedQueryGroups = [];
$this->_setComparisonValidationArray();
}
/**
* @param $hostName
/var/www/html/releases/20260609_155504_2026.06.2-67f3a5c1d/dc/common/classes/PDOQueryWrapper.php
* @param string $hostName
* @param int $portNumber
* @param string $dbName
* @param string $userName
* @param string $password
* @param array $optionsArray
*/
public function __construct($hostName, $portNumber, $dbName, $userName, $password, ?array $optionsArray = NULL)
{
$this->hostName = ($hostName ? (string)$hostName : 'localhost');
$this->portNumber = ($portNumber ? (int)$portNumber : 3306);
$this->dbName = ($dbName ? (string)$dbName : 'dcshop');
$this->userName = ($userName ? (string)$userName : 'root');
$this->password = ($password ? (string)$password : '123');
$this->optionsArray = ((is_array($optionsArray) && count($optionsArray) > 0) ? $optionsArray : [\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION]);
$this->dsn = 'mysql:dbname=' . $this->dbName . ';host=' . $this->hostName . ';port=' . (string)$this->portNumber . ';charset=utf8mb4';
$pdo = new PDO($this->dsn, $this->userName, $this->password, $this->optionsArray);
if (!$pdo->exec('SET NAMES utf8mb4') || !$pdo->exec('SET CHARACTER SET utf8mb4')) {
$pdoErrorInfo = $pdo->errorInfo();
$this->errorState = TRUE;
$this->errorMessage = print_r($pdoErrorInfo, 1);
}
$this->connectionObject = $pdo;
$this->errorState = FALSE;
$this->errorMessage = '';
$this->unfinishedQuery = [];
$this->unfinishedQueryGroups = [];
$this->_setComparisonValidationArray();
}
/**
* @param $hostName
/var/www/html/releases/20260609_155504_2026.06.2-67f3a5c1d/dc/common/common_functions.inc.php
$i = 0;
foreach ($actualURLPartsQuery as $actualUrlPartQuery) {
$actualUrlPartQuery = explode('=', $actualUrlPartQuery);
if ($actualUrlPartQuery[0] === 'action' || $actualUrlPartQuery[0] === 'action_id') {
unset($actualURLPartsQuery[$i]);
}
$i++;
}
return implode('&', $actualURLPartsQuery);
}
function get_false_password_login_counter($ipHash, $loginHash)
{
$pdoHost = getenv('MAIN_MYSQL_DB_HOST');
$pdoPort = getenv('MAIN_MYSQL_DB_PORT');
$pdoUser = getenv('MAIN_MYSQL_DB_USER');
$pdoPass = getenv('MAIN_MYSQL_DB_PASS');
$pdoSchema = getenv('MAIN_MYSQL_DB_SCHEMA');
$pdo = new \DynCom\dc\common\classes\PDOQueryWrapper($pdoHost, $pdoPort, $pdoSchema, $pdoUser, $pdoPass);
$prepStatement = "
SELECT
false_login.*
FROM
false_login
WHERE
( false_login.ip_hash = :ip_hash OR false_login.login_hash = :login_hash )
";
$params = [
[':ip_hash', $ipHash, PDO::PARAM_STR],
[':login_hash', $loginHash, PDO::PARAM_STR],
];
$pdo->setQuery($prepStatement);
$pdo->prepareQuery();
$pdo->bindParameters($params);
$pdo->executePreparedStatement();
$result = $pdo->getResultArray();
return $result;
/var/www/html/releases/20260609_155504_2026.06.2-67f3a5c1d/module/dcshop/siteparts/login/shop_login.php
case 2: //Kunden-Nr., Login & Passwort
$field_1_html = $customer_no_field;
$field_2_html = $login_field;
$loginDataType= ($_POST['input_login'] ?? '') . "_" . ($_POST['input_customer_no'] ?? '');
break;
case 3: //Kunden-Nr., E-Mail & Passwort
$field_1_html = $customer_no_field;
$field_2_html = $email_field;
$loginDataType= $_POST['input_email'] ?? '';
break;
case 4: //Kunden-Nr. & Passwort
$field_1_html = $customer_no_field;
$loginDataType= $_POST['input_customer_no'] ?? '';
break;
default:
break;
}
$falseLoginData = get_false_password_login_counter(md5((string) getUserIP()),md5((string) $loginDataType));
$now = time();
$dataBaseCounter = 0;
$blockTime = $now;
$blockErrorCounter = 0;
if(count($falseLoginData) > 0)
{
$dataBaseCounter = $falseLoginData[0]['total_counter'];
$blockTime = $falseLoginData[0]['next_login_time'];
$blockErrorCounter = $falseLoginData[0]['block_counter'];
}
$counter = $dataBaseCounter / $GLOBALS['shop_setup']['allowed_false_login_times'];
$counter = (int)$counter;
$waitingSeconds = $counter * $GLOBALS['shop_setup']['false_login_waiting_seconds'];
if($counter != $blockErrorCounter)
{
/var/www/html/releases/20260609_155504_2026.06.2-67f3a5c1d/dc/frontend/frontend_functions.inc.php
if ($GLOBALS["live_edit_mode"] === TRUE) {
$translation = \DynCom\dc\common\classes\Registry::get("translation");
echo "
<span class=\"live_edit_overlay\" data-component=\"true\" data-componentid=\"" . $sitepart['main_component_id'] . "\" data-pageid=\"" . (isset($GLOBALS['shopping_world_page_id']) && !empty($GLOBALS['shopping_world_page_id']) ? $GLOBALS['shopping_world_page_id'] : $GLOBALS["page"]['id']) . "\">
" . $translation->get("edit_component") . "
</span>";
}
}
if ((int)$sitepart['main_sitepart_id'] > 0) {
// anzeige eines siteparts im baustein
$sitepartData = $allSiteparts[$sitepart['main_sitepart_id']];
require_once(realpath(MODULE_PATH . $sitepartData['folder']) . DIRECTORY_SEPARATOR . $sitepartData['code'] . ".php");
$function = $sitepartData['code'] . "_show";
$reflection = new ReflectionFunction($function);
$noOfParams = $reflection->getNumberOfParameters();
if($noOfParams > 1) {
$function($sitepart['main_sitepart_header_id'], $IOCContainer);
} else {
$function($sitepart['main_sitepart_header_id']);
}
} elseif ((int)$sitepart['main_collection_list'] == 2) {
// anzeige einer kollektionsvorschau im baustein
show_collection_setup_content($sitepart, "main_component_collection_group_link");
}
$currentComponent = $sitepart['main_component_id'];
}
echo "</div>";
}
function create_includes( $main_layout_id, $page_id, $type ) {
$query = "
SELECT id, path, default_active, type
FROM main_layout_inclusions
WHERE main_layout_id = '" . $main_layout_id . "' AND type = '" . $type . "'
ORDER BY sorting ASC";
$result = mysqli_query($GLOBALS['mysql_con'], $query);
$layout_inclusions = [];
while ($row = mysqli_fetch_assoc($result)) {
/var/www/html/releases/20260609_155504_2026.06.2-67f3a5c1d/dc/frontend/frontend_functions.inc.php
$GLOBALS['shopping_world_page_id'] = $page_id;
}
if (null !== $category && !empty($category["in_use_with_page_id_b2b"]) && empty($_GET["card"]) && (int)$GLOBALS["shop"]["shop_typ"] === 0) {
$page_id = (int)$category["in_use_with_page_id_b2b"];
$GLOBALS['shopping_world_page_id'] = $page_id;
}
if ($page_id <= 0) {
return;
}
$layout_area_code = $layout_area_id;
$layout_area_entry_query = "SELECT id FROM main_layout_area WHERE code = '" . $layout_area_id . "' AND main_layout_id = '" . $GLOBALS["layout"]["id"] . "'";
$layout_area_entry_result = mysqli_query($GLOBALS['mysql_con'], $layout_area_entry_query);
$layout_area_entry = mysqli_fetch_array($layout_area_entry_result);
$layout_area_id = $layout_area_entry["id"];
show_component_content((int)$layout_area_id, $IOCContainer, $layout_area_code, $page_id);
if ($is_component_only === TRUE) {
return;
}
$query = "SELECT * FROM main_page_link WHERE main_page_id = " . (int)$page_id . " AND main_page_link_parent_id = 0 AND layout_area_id = " . (int)$layout_area_id . " AND active = 1 ORDER BY sorting ASC";
$result = mysqli_query($GLOBALS['mysql_con'], $query);
if (mysqli_num_rows($result) > 0) {
while ($sitepart = mysqli_fetch_array($result)) {
$backGroundImagePath = $sitepart['background_image_path'];
if ($sitepart['main_page_group'] == 1) {
show_group_content($sitepart, $backGroundImagePath, $IOCContainer);
continue;
}
// layout klassen wrapper anzeigen
$layoutClassIds = get_content_layout_classes($sitepart);
/var/www/html/releases/20260609_155504_2026.06.2-67f3a5c1d/dc/frontend/frontend_catalog.php
</div>
<div id="flashMessages_success">
<?php
foreach ($success_flashmsgs as $msg) {
?>
<div class="flashMessage flashMessage_success"><?= $msg ?></div>
<?
}
?>
</div>
</div>
<div class="modal fade form-label-left" id="lightbox_login" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="icon icon-close"></i></button>
</div>
<div class="modal-body">
<? get_content("lightbox_login", TRUE, $IOCContainer); ?>
</div>
</div>
</div>
</div>
<div class="modal fade form-label-left" id="lightbox_register" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="icon icon-close"></i></button>
</div>
<div class="modal-body">
<? get_content("lightbox_register", TRUE, $IOCContainer); ?>
</div>
</div>
</div>
</div>
<div id="contactBox">
<div class="inner">
/var/www/html/releases/20260609_155504_2026.06.2-67f3a5c1d/dc/frontend/frontend.php
$displayErrorsString = $displayErrors ? 'On' : 'Off';
ini_set('display_errors', $displayErrorsString);
mb_internal_encoding('UTF-8');
check_and_redirect_tracking_api_requests($trackingAPIRequestURLPattern, $trackingAPIIndexFilePath);
dcBasicAuth();
try {
require_once __DIR__ . DIRECTORY_SEPARATOR . 'start.inc.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . 'check_ip_switch.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . 'check_language_switch.php';
// Alias-Router hat einen POST-Handler gemappt (z.B. Form-Submit) →
// nach Bootstrap einbinden, bevor das Layout-Template rendert.
if ($_aliasMatchedHandler !== null && ($_SERVER['REQUEST_METHOD'] ?? '') === 'POST') {
require_once dirname(__DIR__, 2) . '/' . $_aliasMatchedHandler;
exit;
}
require_once($GLOBALS["layout"]["frontend_include"]);
require_once __DIR__ . DIRECTORY_SEPARATOR . 'close.inc.php';
} catch (Throwable $t) {
$errorHandler->handleThrowable($t);
if (!$errorHandler->isUsingWhoops()) {
http_response_code(500);
header('Location: /500.html');
}
return;
}
function extract_request_uri_variables($request = null)
{
extract_site_request_uri_variables($request);
}
function extract_site_request_uri_variables($request = null)
{
$GLOBALS['shop_setup']['show_short_url'] = (int)getenv('SHOW_SHORT_URL');
// language code is not mandatory
$site_base_pattern = '#/([^/?]+)/([^/?]+){0,1}/{0,1}([^/?]+/){0,1}([^/?]+/){0,1}([^/?]+/){0,1}([^/?]+/){0,1}([^/?]+/){0,1}#';