PHP (Articles: 62)

Для очередного клиента разрабатывал интернет-магазин запчастей. Каталога как такового там не было, однако была куча поставщиков, подключенных через API.
Так как клиентов планировалось много, то постоянное обращение к API было бы слишком затратно для сервера.
В рамках этого проекта был написан простой класс, который позволяет кэшировать данные, полученные в ходе каких-либо операций в файл и использовать их в любое удобное время с минимальной задержкой.
Вот он:
<?php
	/*
		Класс для кэширования данных
		Роман Сергеевич Гринько
		rsgrinko@gmail.com
		https://it-stories.ru
	*/
class CCache{
	private static $cache_dir;
	
	public static function init($dir){
		self::$cache_dir = $dir;
	}
	
	
	public static function checkCache($name){ // Проверка наличия элемента...
Author: (03.07.2021 / 23:31)
Views: 1444
Comments (0) »
<?php

function _CURL_ ($url,$post) {
$ua = 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36';
$ch = curl_init($url);
curl_setopt_array($ch,array(
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_CONNECTTIMEOUT => 30,
CURLOPT_USERAGENT => $ua,
CURLOPT_COOKIEJAR => 'cookie.txt',
CURLOPT_COOKIEFILE => 'cookie.txt'
));
if (isset($post)) {
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
}
$html = curl_exec($ch);
curl_close($ch);
return $html;
}

if(!file_exists('cookie.txt')){
$log = file('log.txt');
$post = array(
'st.redirect' => '',
'st.posted' => 'set',
'st.email' => $log[0],
'st.password' => $log[1],
'st.screenSize' => '',
'st.browserSize' => '',
'st.flashVer' => ''
);
_CURL_ ('https://www.ok.ru/dk?cmd=AnonymLogin&st.cmd=AnonymLogin',http_build_query($post));
exit;
}

_CURL_ ('http://www.ok.ru');

?>
 

Это небольшой пример парсинга и авторизации... Author: (27.09.2016 / 13:45)
Views: 1524
Comments (2) »
Доброе утро!

костыль
<?php
class MysqliEsc {
    protected $link = null;
    public function __construct($host, $user, $password, $database, $port = 3306, $socket = null) {
        $this->link = new \mysqli($host, $user, $password, $database, $port, $socket);
    }
    /**
     * 
     * @param string $sql sql запрос вида select * from таблица where поле = (%s, %i...)
     * @param array $params Массив!!! с параметрами (параметром)
     * @return \mysqli_result 
     */
    public function query($sql, array $params = []) {
        if ($params) {
            $sql = vsprintf($sql, array_filter($params, function ($param){
                return $this->link->real_escape_string($param);
            }));
        }
        return $this->link->query($sql);
    }
}
Использование
<?php
$db = new MysqliEsc('localhost', 'root', '',...
Author: (05.01.2016 / 04:19)
Views: 2406
Comments (14) »
При написании скриптов у многих новичков и не только возникает проблема определения устройств
на офф сайте есть готовый класс, ниже показано как его использовать
<?php

//подключаем класс
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;
 
if($detect->isMobile()){
     echo "контент для мобильных устройств";
}
 
if($detect->isTablet()){
     echo "контент для планшетов";
}
 
if(!$detect->isMobile() && !$detect->isTablet()){
     echo "контент для компов";
}
 
if($detect->isiOS()){
     echo "для iOS";
}
 
if($detect->isAndroidOS()){
     echo "для Android";
}
 
if($detect->is('UC Browser')){
     echo "таблетка для УС браузера";
}
таким образом можно использовать этот класс для различных целей
например
if($detect->isMobile()){
     echo "<link rel='stylesheet' href='mobile.css'>";
}

помогу с установкой обращайтесь в личку
всем спасибо... Author: (27.11.2014 / 16:18)
Views: 2085
Comments (6) »
Данный роутер не претендует на звание лучшего решения и пойдет сугубо новичкам как отталкивающий материал для создания своей системы роутера по сайту, но вполне рабочее решение которое можно применять в реальных проектах. Ну поехали.

Для начала добавим в файл .htaccess следующий код:
DirectoryIndex index.php
Options All -Indexes

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
С помощью этого кода делаем единую точку входа. Все наши запросы к сайту будут проходить через index.php.

Теперь пишем файл роутера назовем его допустим route.php и положим по адресу domaine.ru/core/route.php:
<?php
/* Константы - обычно задаются раньше чем в самом файле...
Author: (13.11.2014 / 21:57)
Views: 3034
Comments (33) »
пишем такое в верху
анкеты,после вывода
ника.
$uzertime=substr($uzdata[18],0,5);$montime=date_fixed($sitetime,"d.m"); if($uzertime==$montime){echo'<div align="center"><font color="#FF0000"><b>Пользователь,отмечает день рождения!</b></font></div>';}
и получаем
Пользователь,отмечает
день рождения!
Author: (28.12.2013 / 11:42)
Views: 1798
Comments (3) »
пишем вот такой код
if ($uzdata[18]!="" && $uzdata[18]!=".."){
echo'Дата Рождения: '.check($uzdata[18]).' ';
$expArr = explode('.', $uzdata[18]);
if(strlen($expArr[2])==2){
if($expArr[2]<30){  $expArr[2]='20'.$expArr[2];
}else{
$expArr[2]='19'.$expArr[2];}}
$years = date("Y") - $expArr[2];
if(date("d") < $expArr[1] AND date("m") < $expArr[0]){--$years;}
echo ' (<b>'.$years.'</b>)<br>';}
вырезав перед этим стандартный код вывода даты рождения.

P.S. В этом коде одна ячейка изменена,ранее он почему-то выводил,возраст исходя из месяца в ДР. При тестировании,возраст зависел от всех введёных данных. Author: (09.12.2013 / 14:16)
Views: 1327
Comments (1) »
Если при создании новости,вы удаляете первый коммент. То на странице комментариев можно добавить такой код
if(utf_strlen($dt[1])>100){ 
$dt[1]=substr($dt[1],0,250);
 echo'<font color="red">Новость:</font> '.bb_code($dt[1]).'... ';}
он отобразит часть новости,той,в комменты которой вы зашли. Author: (07.12.2013 / 09:46)
Views: 1255
Comments (1) »
Многие начинающие PHP разработчики сталкиваются с определеним страны по ip, в этой заметке я приведу один из вариантов её определения.
В данном примере мы будем работать с гео базой Smart-IP.net. Smart-IP предоставляет api, поэтому все, что нам необходимо будет сделать - послать запрос на сервер Smart-IP и обработать полученный результат.

Значения, которые мы можем получить:
countryName - Страна;
countryCode - Код страны (UA, RU...);
city - Город;
region - Регион;
latitude - Широта;
longitude - Долгота;

А теперь напишем функцию, которая будет определять название страны:
<?

function country($ip)
{
	$xml = simplexml_load_file('http://ru.smart-ip.net/geoip-xml/'.$ip);

	return $xml->countryName;
}

?>

Использование... Author: (09.10.2013 / 21:22)
Views: 2140
Comments (2) »
Так как написанные системы по принципу mvc обрабатывают роутинг средствами php обнаружил уже давно такой баг как выполнение 2х запросов к сайту от одного пользователя при каждом обновлении страницы. Заметил это при написании онлайн счетчика который добавлял ip адрес в таблицу, а если он уже существовал то обновлял поле hits которое содержало количество хитов. При втором обновлении наблюдал в базе 3 хита, при третьем обновлении 5 хитов и т.д, значение счетчика хитов постоянно увеличивалось на 2. После тестов с логами, оказалось это из-за несуществующей иконки favicon в шапке.
В htaccess мы используем RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ....
Author: (17.05.2013 / 22:03)
Views: 1720
Comments (5) »
Top Articles / Tag Cloud / Search / Authors