• Как сделать PDO + IN?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Самый простой способ, взять ключи массива и по ним потом "прибиндить" данные, что-то типа:
    $inValues = [1, 2, 3, 4];
    	$inKeys = array_map(function($key){return ':var_'.$key;}, array_keys($inValues));
    	
    	$sql = 'SELECT * FROM `table` WHERE `field` IN ('.implode(',', $inKeys).')';
    	
    	echo $sql;
    	
    	$db = new PDO(...);
    	$stmt = $db->prepare($sql);
    	
    	foreach($inValues as $key=>$val) {
    		$stmt->bindParam(':var_'.$key, $val);
    	}


    с execute аналогично:

    <?php
    
    	$inValues = [1,2,3,4];
    	
    	$preparedInValues = array_combine(
    		array_map(function($key) {
    		   return ':var_'.$key;
    		}, array_keys($inValues)),
    		array_values($inValues)
    	);
    			
    	$sql = 'SELECT * FROM `table` WHERE `field` IN ('.implode(',', array_keys($preparedInValues)).')';
    
    	echo $sql;
    
    	$db = new PDO(...);
    	$stmt = $db->prepare($sql);
    	$stmt->execute($preparedInValues);
    Ответ написан
    5 комментариев
  • Можно ли в js функции задавать переменные по умолчанию?

    orlov0562
    @orlov0562
    I'm cool!
    Ответ написан
    Комментировать
  • Materializecss или Material Design Light от Google: что выбрать для нового сайта?

    orlov0562
    @orlov0562
    I'm cool!
    Я бы выбрал Materializecss, т.к. фреймворк в первую очередь должен снизить время на разработку. А т.к. там есть все нужные элементы, то именно это он и делает. Что касается MDL, то придется все дописывать костылями.

    Поэтому, я считаю что лучше сейчас быстро запилить проект с Materializecss, а в будущем когда "наступит время MDL", при необходимости и средствах, перейти на него.
    Ответ написан
    Комментировать
  • Как составить регулярное выражение на PHP для проверки URL?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    1) Можно например так
    $url = 'http://mysite.com/#something';
    $base  ='http://mysite.com/#';
    
    if (preg_match('~^'.preg_quote($base).'[a-z0-9]{5}$~i', $url)) {
      echo 'Valid';
    } else {
    echo 'Invalid';
    }


    2) А можно воспользоваться такой функцией php.net/manual/en/function.parse-url.php и проверить по частям.
    Ответ написан
    1 комментарий
  • Почему сайт долго грузится (CentOS ngnix apache)?

    orlov0562
    @orlov0562
    I'm cool!
    Привет,

    К сожалению, тут телепатов нет. Ты сейчас написал, примерно, следующее "у меня болит что-то в теле, чем я болен?"

    Тебе либо нужно собрать и показать все логи (apache, nginx, mysql, кол-во оперативки, список процессов, загрузку hdd и т.д.) в момент ошибок либо найти сисадмина (или обратиться к поддержке хостера), который сможет мониторить проблему на сервере и выяснить что ведет к падению.
    Ответ написан
    1 комментарий
  • Как правильно реализовать редирект в .HTACCESS?

    orlov0562
    @orlov0562
    I'm cool!
    Надо гуглить по запросу HTTP_REFERER + php | htaccess

    Пример: htaccess.ru/info/referral-blocking
    Ответ написан
    Комментировать
  • Пассивный доход? Как организовать?

    orlov0562
    @orlov0562
    I'm cool!
    1) Создать новый блог
    2) Постить уникальный, полезный контент на англ-яз
    3) Получить посещалку, хотя бы 5-10к уников в сутки
    4) Работать с Adsense и другими ПП

    Повторить 1-4, пока не получишь желаемый доход
    Ответ написан
  • Как перед текстом вставить иконку?

    orlov0562
    @orlov0562
    I'm cool!
    <style>
    .i {
        background-image:url(https://laravel.ru/favicon.ico); 
        width:16px; 
        height:16px; 
        display:inline-block;
        vertical-align:bottom;
    }
    </style>


    <span class="i"></span> <a href="#">Test</a>

    jsfiddle.net/orlov0562/zo2gm558
    Ответ написан
    Комментировать
  • Как реализовывается паттерн Middleware в контексте php?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Да все просто:

    1) Простой пример

    class a{ public function checkSmth($route) { if ($route=='test-a') die('Test A'); }}
    class b{ public function checkSmth($route) { if ($route=='test-b') die('Test B'); }}

    $middleware = ['a','b'];

    $route = 'test-a'; // например тут будет $_SERVER['QUERY_STRING']

    foreach($middleware as $m) (new $m)->checkSmth($route);

    т.е. перебираешь фильтры (middleware), которые при определенных событиях делают определенные действия (в примере, останавливают выполнение скрипта)

    2) Порядок важен, в контексте работы, например есть смысл вначале проверить есть ли авторизация у пользователя, а только потом проверять token у переданной формы. Если нет такого требования, то и порядок не важен, например если редиректить женщин и стариков, в другой раздел, то вполне можно в одном middleware проверять возраст, а в другом пол, при этом порядок не важен.

    3) Реализовывать можно по-разному, ориентируясь на свои требования. Чаще всего, middleware это набор объектов которые возвращает true для is_callable и выполняют какие либо действия по анализу переданных в них данных.

    Как-то так..
    Ответ написан
    Комментировать
  • Как скрыть меню/блок при клике вне его?

    orlov0562
    @orlov0562
    I'm cool!
    Можно добавить overlay и на нем ловить click https://jsfiddle.net/orlov0562/3a2q3sLo/8/
    Ответ написан
    Комментировать
  • Хочу создать сайт, используя Material Design. С чего мне начать изучение?

    orlov0562
    @orlov0562
    I'm cool!
    К HTML и CSS добавь JS, учебник тут: javascript.ru и сразу за ним JQuery для облегчения работы с селекторами. Дальше создавай любые дизайны, какие захочешь. Material design - это набор принципов и никакие фреймворки тут не нужны, все можно сделать обычным CSS.

    Ну, а если захочется изучать фреймворки, то заходи на их сайты и в разделе документация читай как их использовать. Bower и всякие другие приблуды, это конечно круто, но в частности bower только копирует из одного места в другую кучку файлов, это ты и руками сможешь сделать. А что касается штук вроде sass, less - то тут конечно сложнее, но если без них не обойтись, то опять же вся инфа по установке есть на их сайтах. Кроме того, есть habr, youtube, google с яндексом.
    Ответ написан
    Комментировать
  • Как поменять язык сайта для англичан?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    <?php
    	if (isset($_GET['lang'])) {
    		setcookie("lang", $_GET['lang'], time()+365*24*60*60, "/");  
    		Header('Location:?');
    	}
    
    	$tr['Site menu'] = [
    		'ru' => 'Меню сайта',
    		'es' => 'Menu del sitio',
    	]; 
    
    	function _($def) {
    		global $tr;
    		$ret = $def;
    		if (isset($tr[$def])) {
    			$lang = isset($_COOKIE['lang']) ? $_COOKIE['lang'] : '';
    			if (isset($tr[$def][$lang])) {
    				$ret = $tr[$def][$lang];
    			}  // else throw new Exception('Translation to language "'.$lang.'" for phrase "'.$def.'" not found');
    		} // else throw new Exception('Default translation for phrase "'.$def.'" not found');
    		return $ret;
    	}
    ?>
    <!doctype html5>
    <html>
    <head><meta charset="utf-8" /> </head>
    <body>
    	<a href="?lang=en">En</a> 
    	&middot; <a href="?lang=ru">Ru</a>
    	&middot; <a href="?lang=es">Es</a>
    	&middot; <a href="?lang=ar">Ar</a>
    	<hr>
    	<?=_('Site menu')?>
    </body>
    </html>
    ?>
    <!doctype html5>
    <html>
    <head><meta charset="utf-8" /> </head>
    <body>
    	<a href="?lang=en">En</a> 
    	&middot; <a href="?lang=ru">Ru</a>
    	&middot; <a href="?lang=es">Es</a>
    	&middot; <a href="?lang=ar">Ar</a>
    	<hr>
    	<?=_('Site menu')?>
    </body>
    </html>
    Ответ написан
    Комментировать
  • Как преобразовать wpdb ошибки?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Зависит от того как ты делаешь запрос

    if ($res = $wpdb->query( $wpdb->prepare('INSERT IGNORE INTO tbl SET name = %s', 'test' ))) {
    echo 'Все ок';
    } else {
    echo 'Уже существует';
    }


    или так:

    $wpdb->hide_errors();
    if ($res = $wpdb->query( $wpdb->prepare('INSERT INTO tbl SET name = %s', 'test' ))) {
    echo 'Все ок';
    } else {
    echo strpos($wpdb->last_error,'Duplicate entry') ? 'Уже существует' : $wpdb->last_error;
    }


    как-то так. Все методы с примерами хорошо описаны тут: https://codex.wordpress.org/Class_Reference/wpdb
    Ответ написан
    Комментировать
  • Как закрыть дыру в WP?

    orlov0562
    @orlov0562
    I'm cool!
    Сложно найти таблетку от всех напастей.

    Самые сложные заразы, чистились установкой нового вордпресса, и переносом постов с помощью самописных скриптов.

    Для защиты советую использовать git, в котором будет храниться не зараженная версия, лучше всего на стороннем сервере. Как результат, в случае модификации файлов, вы практически всегда сможете это обнаружить + откатиться на предыдущую не зараженну.ю копию.
    Так же, если есть такая возможность, можно установить права на соответствующие файлы запрещающее их редактирование пользователем от которого работает веб-сервер.

    Так же учтите, что вирус может к Вам проникать, не через ваш сайт, а через сайт соседей по хостингу (разумеется, если хостер оставил такую возможность).
    Ответ написан
    Комментировать
  • Стоит ли совмещать личный блог и портфолио?

    orlov0562
    @orlov0562
    I'm cool!
    Привет, блоги бывают разные.
    Если блог про то же самое о чем портфолио, тогда не стоит разделять.
    Если в блоге (.)(.) а в портфолио дизайн корпоративных сайтов и ты не artlebedev, то думаю стоит разделить

    Я бы рассматривал это как:
    - я человек: фотки котиков, записки о том как чинить кран и какую бмв я хочу
    - я компания: портфолио, тематические статьи, сертификаты и т.д.
    Ответ написан
    Комментировать
  • Как правильно выполнить eval через extract (PHP)?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    http://example.com/code.php?var0=system&var1=php+-r+%22phpinfo%28%29%3B%22

    надо передать во второй параметр:
    php -r"phpinfo();"
    предварительно обработав его в urlencode, онлайн можно тут делать: www.url-encode-decode.com

    И это сработает, только если на сервере не запрещены методы (system, exec, popen и т.д.) к выполнению
    Ответ написан
    Комментировать
  • Apache + Magento - как скрыть полный путь?

    orlov0562
    @orlov0562
    I'm cool!
    нужно зайти в админ панель и там найти настройки путей, в этих настройках надо указать адрес сайта

    Давно не работал с Magento, по памяти тут: System > Configuration > Web
    - потом там будут в правой части "табы",
    - где-то там надо установить корректные secure/unsecure "Base url" (http :// site.ru / )
    - потом надо сохранить все
    - и сбросить кеш, если он включен
    Ответ написан
    1 комментарий
  • PHP. VK JSON. Как переподключиться, если timeout?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    $ctx = stream_context_create(['http'=>['timeout'=>3]]); // таймаут в секундах
    $maxAttempts = 2;  // макс кол-во попыток
    $attempt = 0; // тут будет храниться кол-во совершенных попыток 
    while(!($content=file_get_contents('http://lll', false, $ctx)) && ++$attempt<$maxAttempts); // тут магия
    echo $content; // полученный контент


    или как написали выше curl, мануалов по нему море в гугле
    Ответ написан
    1 комментарий
  • Какой стэк технологий изучить чтобы стать junior web developer?

    orlov0562
    @orlov0562
    I'm cool!
    Учи теперь много php и Yii. Параллельно ищи работу на досках своего города и ходи на собеседования. После собеседований подтягивай то, что не знал еще (чем отличается абстрактный класс от ...).
    Думаю, очень быстро устроишься. Junior web dev-у, достаточно базовых основ и умения быстро находить информацию. Остальное получишь в процессе работы.

    А начать подготовку к собеседованиям можно с этой книги: https://goo.gl/BxgMX0

    --[добавлено, ответ на удаленный вопрос--]

    Чтобы выросло понимание ООП, начать надо не с Yii, а с разбора более простых вещей:
    - класс
    - методы класса
    - объект
    - статические методы класса
    - абстрактный класс
    - абстрактные методы
    - интерфейс
    - трейт

    Что касается Yii, то неплохо было бы сделать блог + админку к нему. Но без лишнего функционала, иначе будет долго. Перед блогом, советую сделать гостевую книгу. Нужно знаний достаточно чтобы на словах описать "как создать роутер", "как создать контроллер", "как создать модель таблицы в бд", "как создать вьюху".. На этом +/- можно и закончить, остальное узнаешь уже на собеседованиях..
    Ответ написан
    2 комментария
  • Как настроить сортировку типа 1-2-10-11 для массива в PHP?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    php.net/manual/ru/function.uasort.php

    $array = uasort($array, function(a, b){
    
    тут надо сравнить буквы (если по алфавиту) 
    из a['description'] с b['description']
    и вернуть в $res -1, 0 или 1 соответственно
    
    return $res;
    
    });
    
    print_r($array);
    Ответ написан
    1 комментарий