Программист предпенсионного возраста
Контакты
Местоположение
Россия, Москва и Московская обл., Москва

Наибольший вклад в теги

Все теги (14)

Лучшие ответы пользователя

Все ответы (24)
  • Две POST проверки в одном файле?

    leha_gorbunov
    @leha_gorbunov
    Программист
    Если 2 формы, то добавь в каждую
    <input type="hidden" name="frmname" value=""/>

    И сделай проверку на имя формы
    if ($_POST['submit']&&$_POST['frmname']) {
      echo "hi";
    }
    Ответ написан
    Комментировать
  • Настраиваемые пользователем редиректы в Laravel как в Wordpress?

    leha_gorbunov
    @leha_gorbunov Автор вопроса
    Программист
    Пришлось все самостоятельно делать на коленке. Поделюсь по шагам.
    1. Делаем модель для настроек переадресации.
    php artisan make:model RedirectSetting -m
    2. В миграции прописываем поля old_url и new_url
    .....
      public function up()
        {
            Schema::create('redirect_settings', function (Blueprint $table) {
                $table->increments('id');
                $table->string('old_url',500);
                $table->string('new_url',500);
                $table->timestamps();
            });
        }
    .....


    3. Содзаем middleware в app/Http/Middleware/RedirectUrl2Another.php
    <?php
    
    namespace App\Http\Middleware;
    
    use Illuminate\Http\RedirectResponse;
    use App\RedirectSetting;
    use Closure;
    
    class RedirectUrl2Another
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request $request
         * @param  \Closure $next
         * @param  string|null $guard
         *
         * @return mixed
         */
         
        public function handle($request, Closure $next, $guard = null)
        {
    	        $url = $request->getRequestUri();
    	        $redirect = RedirectSetting::where('old_url',$url)->first();
    		
    	        if($redirect&&($redirect->new_url!='')){
    		         return redirect($redirect->new_url,301);
    	        }
    	        return $next($request);
            }	
    }


    4. Добавляем в App/Http/Kernel.php

    ....
        protected $middleware = [
    		\App\Http\Middleware\RedirectUrl2Another::class,
    .....


    Интерфейс для пользователя вроде у каждого свой, это самостоятельно сделаете.
    Спасибо JhaoDa за наводку в комментах.
    Ответ написан
    4 комментария
  • Как написать парсер шорткодов на ванильном PHP?

    leha_gorbunov
    @leha_gorbunov
    Программист
    метки в тексте статьи вида {id метки}{/id метки} . Параметры внутри этих тэгов неограниченное количество,
    разделены вертикальной чертой. Пример:
    {Market_place}searchText=Смартфон|searchPhrase=Купить Смартфон Xiaomi{/Market_place}


    параметры в тексте рекламного скрипта в двойных квадратных скобках например [[searchText]].
    Особый параметр [__counter] На случай если будет несколько одинаковых шорт кодов, то вместо [__counter] подставится его порядковый номер в тексте 0,1,2 ...

    .createWidget({
    	"containerId": "marketWidget[__counter]",
    	"type": "offers",
    	"params": {
    		"searchText": "[[searchText]]",
       "searchPhrase": "[[searchPhrase]]",
    		"themeId": 2
    	}
    });


    /* Функция берет текст публикации , 
     * собрает из нее метки рекламного скрипта с параметрами
     * Параметры подставляет в тело скрипта
     * Полученный текст скрипта подставляет на место метки в публикации
     *  $body - текст публикации
     *  $script_identificator - идентификатор скрипта
     *  $script - сам программный код рекламного скрипта 
     * */
    	protected function injectAdScript($body, $script_identificator, $script){
    		// составляем строку для сбора всех меток для нашего скрипта
    		$preg_str = '~{'.$script_identificator.'}([^{]*){/'.$script_identificator.'}~i';
    		// собираем все метки скрипта из текста публикации в переменную $match.
    		// $match[0] массив полных текстов меток. например {Market_place}SearchText=Смартфон|SearchPhrase=Купить Смартфон Xiaomi{/Market_place} 
    		// $match[1] массив урезанных меток. Например SearchText=Смартфон|SearchPhrase=Купить Смартфон Xiaomi
    		preg_match_all($preg_str, $body, $match);
    		$search = []; // Здесь будем хранить массив полных текстов меток
    		$replace = [];// Здесь будем хранить текст скрипта с подставленными значениями меток
    		$counter = 0;// в некоторых скриптах необходимо проставлять его порядковый номер. Как параметр в тексте должен быть обозначен [__counter]
    		foreach($match[1] as $key_match=>$str_params){
    			$counter++;
    			$tmparr = explode('|',$str_params);
    			$mutated_str = $script;
    			// в цикле заменяем все найденные параметры их значениями
    			foreach($tmparr as $one_param){
    				$tmp_param = explode('=',$one_param);
    				$mutated_str = str_replace('[['.$tmp_param[0].']]',$tmp_param[1],$mutated_str);
    			}
    			
    			$search[] = $match[0][$key_match];
    			$replace[] = str_replace('[__counter]',$counter,$mutated_str); //сразу проставим порядковые номера 
    		}
    		
    		// заменяем метки в тексте на преобразованные скрипты
    		return str_replace($search,$replace,$body);
    	}
    Ответ написан
    Комментировать
  • Как реализовать подобную пагинацию на php?

    leha_gorbunov
    @leha_gorbunov
    Программист
    Проверять с какой страницы был переход в переменной $_SERVER['HTTP_REFERER']
    Ответ написан
    1 комментарий
  • MYSQL работает только в один поток?

    leha_gorbunov
    @leha_gorbunov
    Программист
    Выстави
    innodb_thread_concurrency = 0

    А эти переменные равными количеству ядер, которые планируешь задействовать для mysql
    innodb_read_io_threads
    innodb_write_io_threads
    (в идеале их на максималки выставить в значения 64, там сервер сам разберется сколько ему надо ядер)
    Ответ написан
    2 комментария

Лучшие вопросы пользователя

Все вопросы (2)