core/api/php/core.php

107 lines
5.1 KiB
PHP

<?php
class core{
public static $settings = '';
/* ----------------------------------------------------------------------
08.12.2022
Наполняем базу городов, регионов и стран
---------------------------------------------------------------------- */
private static function get_geo_api($ip){
$ch = curl_init('http://ip-api.com/json/' . $ip . '?lang=ru');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
$res = json_decode($res, true);
return $res;
}
static function geo(){
$res=self::get_geo_api($_SERVER['REMOTE_ADDR']);
$strana_id = DB::getValue('SELECT `id` FROM `strana` WHERE `txt` = "' . $res['country'] . '"');
if (!$strana_id)$strana_id=DB::add("INSERT INTO `strana` SET `txt` = ?", $res['country']);
$region_id = DB::getValue('SELECT `id` FROM `region` WHERE `region` = "' . $res['regionName'] . '" AND `strana_id` = ' . $strana_id);
if (!$region_id)$region_id = DB::add("INSERT INTO `region` SET `region` = ?, `strana_id`=?", array($res['regionName'], $strana_id));
$city_id = DB::getValue('SELECT `id` FROM `city` WHERE `city` = "' . $res['city'] . '" AND `strana_id` = ' . $strana_id . ' AND `region_id`=' . $region_id);
if (!$city_id)$city_id = DB::add("INSERT INTO `city` SET `city` = ?, `strana_id`=?, `region_id`=?", array($res['city'], $strana_id, $region_id));
$_SESSION['city']=$city_id;
}
/* ----------------------------------------------------------------------
08.12.2022
Берем настройки модуля/сайта
---------------------------------------------------------------------- */
static function getSettings($set, $mod='global'){
$txt = DB::getValue('SELECT `json` FROM `settings` WHERE `mod` = "' . $mod . '"');
$massiv = json::from_j($txt);
return $massiv[$set];
}
/* ----------------------------------------------------------------------
08.12.2022
Авторизация по куки
---------------------------------------------------------------------- */
static function loginCookies ( ) {
if ( @$_COOKIE['cookies'] && !@$_SESSION['user_id']){
$res = json::from_j ( base64_decode ( $_COOKIE['cookies'] ) );
$users = DB::getAll('SELECT `dostup`, `act` FROM `users` WHERE `id` = "' . $res['user_id'] . '" AND `pwd`="' . $res['pwd'] . '" LIMIT 1');
if ( $users[0]['dostup'] ) {
$_SESSION['user_id'] = $res['user_id'];
$_SESSION['dostup'] = $dostup;
}
}
}
/* ----------------------------------------------------------------------
09.12.2022
Получаем данные корзины
---------------------------------------------------------------------- */
static function getCart ( ) {
$user_id = ( $_SESSION['user_id'] ? $_SESSION['user_id'] : session_id() );
$cart = DB::getAll('SELECT * FROM `cart` WHERE `user_id` = ' . $user_id);
for($i = 0; $i < count($cart); $i++){
$cart2=DB::getAll('SELECT tovar.id, tovar.txt, tovar.cena, img.fileName FROM tovar, img WHERE tovar.id=' . $cart[$i]['pages_id'] . ' AND img.page_id=' . $cart[$i]['pages_id'] . ' LIMIT 1');
}
}
/* ----------------------------------------------------------------------
09.12.2022
IP
---------------------------------------------------------------------- */
static function detect_ip ( ) {
$ip = false;
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]) and preg_match("#^[0-9.]+$#", $_SERVER["HTTP_X_FORWARDED_FOR"])) {
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
else if (isset($_SERVER["HTTP_X_REAL_IP"]) and preg_match("#^[0-9.]+$#", $_SERVER["HTTP_X_REAL_IP"])) {
$ip = $_SERVER["HTTP_X_REAL_IP"];
}
else if (preg_match("#^[0-9.]+$#", $_SERVER["REMOTE_ADDR"])) {
$ip = $_SERVER["REMOTE_ADDR"];
}
return $ip;
}
/* ----------------------------------------------------------------------
09.12.2022
Авторизация
---------------------------------------------------------------------- */
private static function redirectAfterLogin($dostup){
if ( $dostup=='a' || $dostup=='m' ) header( 'Location: /admin/' );
if ( $dostup=='u' ) header( 'Location: /' . \core::getSettings('default_mod_auth') . '/' );
}
static function login ( ) {
$user = DB::getAll('SELECT `id`, `dostup` FROM `users` WHERE `email` = "' . $_POST['email'] . '" AND `pwd`="' . md5($_POST['pwd']) . '"');
if ( $user[0]['dostup'] ) {
$_SESSION['dostup'] = $dostup;
$_SESSION['user_id'] = $user[0]['id'];
}
if ( $_POST['remember'] == 'on' && $user[0]['dostup'] ) {
$_SESSION['pwd'] = md5($_POST['pwd']);
$cookies = base64_encode ( json::to_j ( $_SESSION ) );
$tri_mes = time() + 31536000;
setcookie ( 'cookies', $cookies, $tri_mes, '/', $_SERVER['SERVER_NAME'] );
}
self::redirectAfterLogin( $user[0]['dostup'] );
}
}