require_once INC_TR_FUNC_CACHE; $tr_cfg = get_config_ary(BT_CONFIG_TABLE); if (TR_USE_CACHE && check_cache_dir(CACHE_DIR)) { $cfg_cached = write_cfg_to_cache(CACHE_TR_CFG, $tr_cfg, '$tr_cfg'); } } $u_stat_upd_intrv = $tr_cfg['user_statistic_upd_interval'] * 60; // Output mode init_output(); // Exit if tracker is disabled if ($tr_cfg['off']) { error_exit($tr_cfg['off_reason'], '', '', 'off'); } // Browser redirect if ($tr_cfg['browser_redirect_url']) { browser_redirect(); } // Clean peers table if ($tr_cfg['autoclean'] && $tr_cfg['last_clean_time'] + $tr_cfg['autoclean_interval'] * 60 < $current_time) { $peer_dead_time = $current_time - $tr_cfg['autoclean_interval'] * 60; $sql = 'DELETE FROM ' . BT_TRACKER_TABLE . "\r\n\t\tWHERE expire_time < {$peer_dead_time}"; if (!$db->sql_query($sql)) { error_exit('DB error', __FILE__, __LINE__, 'db'); } $sql = 'UPDATE ' . BT_CONFIG_TABLE . " SET\r\n\t\t\tconfig_value = {$current_time}\r\n\t\tWHERE config_name = 'last_clean_time'"; if (!$db->sql_query($sql)) { error_exit('DB error', __FILE__, __LINE__, 'db'); } $delete_cache = TR_USE_CACHE ? @unlink(CACHE_TR_CFG) : ''; } // Recover info_hash if we use passkey
return '"' . $product_title . '"'; }, $overhead_quantity_products); add_notification('Для товаров ' . implode(', ', $overhead_quantity_products) . ' недостаточен остаток.'); browser_redirect('cart'); exit; } $order = array(':user_id' => $_SESSION['user_id']); db_query('INSERT INTO `orders` (`user_id`) VALUES (:user_id);', $order); $order_id = db_select('SELECT LAST_INSERT_ID();'); $order_id = reset($order_id); $order_id = reset($order_id); $order_id = (int) $order_id; $sql_add_product_to_order = <<<SQL INSERT INTO `products_at_orders` (`product_id`, `order_id`, `quantity`) VALUES (:product_id, :order_id, :quantity) SQL; $sql_decrease_product_quantity = <<<SQL UPDATE `products` SET `quantity` = :new_quantity WHERE `id` = :product_id SQL; foreach ($products as $product) { db_query($sql_add_product_to_order, array(':product_id' => $product['id'], ':order_id' => $order_id, ':quantity' => $product['quantity_at_cart'])); db_query($sql_decrease_product_quantity, array(':product_id' => $product['id'], ':new_quantity' => $product['quantity'] - $product['quantity_at_cart'])); } $_SESSION['cart'] = array(); add_notification('Заказ успешно создан!'); browser_redirect('order', array('order_id' => $order_id)); exit;
} // Проверим длину пароля if (mb_strlen($password) < 6) { $errors[] = 'Пароль не может быть менее 6 символов.'; } // Найдём пользователя с таким же email в БД $user_with_same_email = db_select('SELECT * FROM `users` WHERE `email` = :email LIMIT 1;', array(':email' => $email)); // Если нашли - добавляем ошибку if (!empty($user_with_same_email)) { $errors[] = 'Этот e-mail уже занят.'; } // Если ошибок нет - добавим новую запись в таблицу users if (empty($errors)) { // Мы храним только хэш пароля $password_hash = password_hash($password, PASSWORD_DEFAULT); $sql = 'INSERT INTO `users` (`email`, `password_hash`) VALUES (:email, :password_hash)'; // Выполним SQL-запрос вставки записи, используя именованные параметры $affected_rows = db_query($sql, array(':email' => $email, ':password_hash' => $password_hash)); // Вызов db_query должен вернуть 1, потому что мы вставляем 1 запись if ($affected_rows < 1) { $errors[] = 'Не удалось завершить регистрацию.'; } } // Ошибок не произошло - отправляем пользователя на главную страницу if (empty($errors)) { browser_redirect('homepage'); } } // Отображаем шаблон в случае если нам не пришли никакие данные из формы, // либо при обработке данных формы возникли ошибки. display_template('signup', array('errors' => $errors));