• Что нужно исправить, чтобы избавится от предупреждения Strict Standards?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Небольшая несостыковка в объявлении метода, не соответствует(не совместима) с классом родителем, в данном случае количество передаваемых параметров разное. Можно ручками добить третий аргумент в метод start_lvl( &$output, $depth, $args )
    Ответ написан
    4 комментария
  • Как сделать 301 редирект в .htaccess с несуществующих страниц?

    sanek_os9
    @sanek_os9
    Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux
    # переопределяем страницы ошибок
    ErrorDocument 400 /error.php?err=400
    ErrorDocument 401 /error.php?err=401
    ErrorDocument 402 /error.php?err=402
    ErrorDocument 403 /error.php?err=403
    ErrorDocument 404 /error.php?err=404
    ErrorDocument 500 /error.php?err=500
    ErrorDocument 502 /error.php?err=502

    Я скинул весь код ошибок, чтоб поставить редирект на главную вместо /error.php?err=502 поставьте только слеш, и если нужно толь с несуществующих страниц то оставьте только ошибку 404
    ErrorDocument 404 /
    Ответ написан
    Комментировать
  • Как сделать редирект с одной папки на другую?

    @ShamblerR
    Просто, вопервых уметь полозваться гуглом, есть часть вопросов которые реально можно решить самому. И этот относится к нему.

    Теперь по теме
    RewriteBase /
    RewriteRule ^main-folder/old-folder/(.*)$ /main-folder/new-folder/$1 [L,R=301]


    по хорошему еще бы добавить
    RewriteCond %{REQUEST_URI}
    Ответ написан
    3 комментария
  • Как обновить версию php в Open Server до php 7.1.3?

    @uncletobe
    заходим в трей -> (рабочий стол - справа внизу, где часы) -> выбираем зеленый флажок опен сервера -> ПКМ -> настройки -> вкладка модули -> PHP -> в выпадающем списке выбираем нужную версию, если нужной нет в списке, то идем на ospanel.io и скачиваем с нужным модулем.
    Ответ написан
    3 комментария
  • Как заставить пользователя зарегистрироваться?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Всё гораздо проще - пострегистрация: дайте заполнить поля (и сохраните в сессии после сабмита), затем попросите зарегиться: вряд ли кто-то сможет отказаться - он же столько уже поработал)
    Ответ написан
    Комментировать
  • На сайте возникла критическая ошибка, но не приходит письмо для восстановления?

    cesnokov
    @cesnokov
    <head>&nbsp;</head>
    Самый простой способ: cотрите (перенесите в другое место) все плугины из папки wp-content/plugins. Так как на 99%, что какой-то плугин устарел и не совместим с текущей версией WP.
    Или же включайте показ ошибок PHP и разбирайте каждую. Это делается добавлением в wp-config.php:
    define('WP_DEBUG', true);
    Ответ написан
    1 комментарий
  • Чем отличаются REQUEST_FILENAME и REQUEST_URI в htaccess?

    @dodo512
    httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rew...
    REQUEST_FILENAME
    The full local filesystem path to the file or script matching the request, if this has already been determined by the server at the time REQUEST_FILENAME is referenced. Otherwise, such as when used in virtual host context, the same value as REQUEST_URI. Depending on the value of AcceptPathInfo, the server may have only used some leading components of the REQUEST_URI to map the request to a file.

    REQUEST_URI
    The path component of the requested URI, such as "/index.html". This notably excludes the query string which is available as its own variable named QUERY_STRING.

    Допустим у сайта DocumentRoot "/var/www", тогда при обращении к site.local/news/list
    %{REQUEST_FILENAME} -> /var/www/news/list
    %{REQUEST_URI}      -> /news/list
    Ответ написан
  • Как в htaccess запретить редирект рекламы с опр. домена?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Запрет по рефереру:
    RewriteCond %{HTTP_REFERER} ^domain.com [NC]
    RewriteRule .* index.php [F]

    или несколько:
    RewriteCond %{HTTP_REFERER} ^domain.com [NC, OR]
    RewriteCond %{HTTP_REFERER} ^domain2.com [NC, OR]
    RewriteCond %{HTTP_REFERER} ^domain3.com [NC]
    RewriteRule .* index.php [F]

    2. Блокировка ресурсов от HOT-link'a: здесь
    Ответ написан
    Комментировать
  • Как убрать повторяющиеся слэши в .htaccess?

    @ZardoZAntony
    программист, сис. админ
    #убираем лишние слеши
        RewriteCond %{REQUEST_URI} ^(.*?)\/{2,}(.*?)$
        RewriteRule . %1/%2 [L,R=301]
        RewriteCond %{THE_REQUEST} //
        RewriteRule .* /$0 [R=301,L]
    Ответ написан
    7 комментариев
  • Как убрать повторяющиеся слэши в .htaccess?

    @ShamblerR
    Дааю сразу все поскольку в свое время задолбало для каждого проекта делать все заново, по этому сейчас просто вставляю кусок и все.
    ############################################################################
    #### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    RewriteCond %{HTTPS} on
       # Проверяем наличие https в URL.
    RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Выбор основного зеркала (или с www или без www)                    ####
    ############################################################################
       # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
       # Проверяем, содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
       # Перенаправляем URL на домен без www.
    ####
       # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
       # Проверяем, не содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
       # Перенаправляем URL на домен c www.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule . %1/%2 [R=301,L]
       # Исключаем все лишние слеши.
    
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$  
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d   
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$      
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]     
       # Исключить слеш.
    
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
    5 комментариев
  • Как изменить виджет в Wordpress?

    noby2000
    @noby2000
    Founder.
    Не жадничаете, идёте на фриланс биржу, публикуете эту задачу за 500р, подключаете фрилансера к своему компьютеру, смотрите за ходом выполнения задачи (можете записывать видео), учитесь. Если использовать сервис типа zoom, можете попутно задавать вопросы. 20 минут, и все готово.
    Ответ написан
    Комментировать
  • Сайт выполнил переадресацию слишком много раз?

    lanvin07
    @lanvin07
    Нравится html5+js
    Возможные причины подобной ошибки:

    1. Настройки в панели хостинга конфликтуют с конфигурацией на сайте.
    2. Директивы в файле .htaccess (искать по вхождению Redirect, RedirectMatch, mod_rewrite RewriteCond, RewriteRule) который лежит в корневой папке сайта. Возможно вам поможет свежий файл для вашей системы управления с сайта производителя.
    3. Настройки виртуального хоста веб-сервера (если у вас выделенный сервер)
    Для apache директивы см. п2 или nginx искать вхождения rewrite
    4. Модули/плагины системы управления, админки (вспомните какие недавно были установлены/обновлены, какие страницы редактировались). Например бывают модули, которые формируют адрес страницы на основании ее заголовка.
    О компании > /o-kompanii
    При смене заголовка - ставится редирект со старого адреса на новый.
    О нас > /o-nas
    (+ редирект с /o-kompanii на новый /o-nas)
    Поэтому если поменять заголовок страницы несколько раз и в конце оставить один из первых вариантов, то вы рискуете получить цикличный редирект, примерно так:
    >> редирект с /o-kompanii на /o-nas
    >> редирект с /o-nas на /o-kompanii
    5. Куки браузера. Да, это удивительно, но бывает для решения проблемы достаточно очистить cookie браузера.

    Чтобы понять какие именно редиректы выполняются и например найти цикличный воспользуйтесь сайтом https://bertal.ru/
    Ответ написан
    6 комментариев
  • Как обойти проблему при переносе сайта с хоста на локалку?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Чтобы перенести Prestashop-сайт с хостинга на локалку. Надо сделать следующее:
    1) Очищаем кэш.
    Заходим в /prestashop/cache/smarty/cache и удаляем всё, кроме index.php и last_template_flush.
    Заходим в /prestashop/cache/smarty/cache/compile и удаляем всё, кроме index.php и last_flush.
    Заходим в /prestashop/themes/ваша_тема/cache и удаляем всё, кроме index.php.
    2) Меняем домен в БД.
    Меняем либо через текстовый редактор, либо заранее в phpMyAdmin.
    Таблица ps_shop_url колонки domain и domain_ssl. Меняете домен на localhost (без http:// и других лишних символов.)
    3) Меняем пути к БД в файле конфигурации.
    Открываем в текстовом редакторе /prestashop/config/settings.inc.php
    и меняем на следующее:
    define('_DB_SERVER_', 'localhost');
    define('_DB_NAME_', 'prestashop'); //название БД на локалке
    define('_DB_USER_', 'root'); //ваш логин к БД а локалке
    define('_DB_PASSWD_', '123'); //пароль к БД на локалке

    Если имя сервера отличается от localhost, то его нужно поменять на это значение.
    4) Загружаем на локальный сервер БД и и файлы сайта.
    5) Заходим в админку (в данном случае localhost/admin3200), вводим логин и пароль админа.
    6) Идем в Расширенные параметры >> Производительность, передергиваем Оптимизация Apache (выкл >> Сохранить, вкл >> Сохранить), тем самым обновляем .htaccess.
    Всё.

    Чтобы перенести обратно на хостинг, надо проделать всё тоже самое, только в конце еще один пункт:
    7) Идем в Настройки >> SEO и URL >> внизу страницы кнопка "Генерировать Robots.txt"
    Ответ написан
    Комментировать
  • CMS своими руками

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Все просто.
    1. Изучить какой-нить фреймворк типа Symfony 2 (посложнее) или Kohana (попроще).
    2. Дальше узнать про Nested Sets для оперирования древовидными структурами (статьи в категориях, комменты).
    3. Сделать CMS.
    Ответ написан
    Комментировать
  • CMS своими руками

    Для начала можно взять какие-нибудь лёгкие движки, в которых минимальный функционал, посмотреть, как реализовано, после взять ещё один, его ковырнуть, в итоге начнёшь понимать саму структуру (это, кстати, очень важный пункт). Книги по сути не нужны, с ними будет сложнее, я, когда дописывал двиг, не читал ничего, кроме описаний функций. Да, я сидел над одной функцией 2 часа, зато сейчас я прекрасно понимаю, как это работает и на реализацию у меня уйдёт не более 10 минут. Главное желание чтобы было завершить начатое)
    Ответ написан
    Комментировать
  • CMS своими руками

    @egorinsk
    Автор, а что гуглить. Есть минимум 3 способа: расковырять простую Open-Source CMS (проблема: найти CMS с хорошей архитектурой и аккуратным кодом), устроиться в компанию, у которой есть своя CMS (а она есть почти у каждой студии), и наконец, написать самому правильно.

    Маны нужны не по написанию CMS, а по используемым продуктам и технологиям.

    Сначала надо определиться с задачей. Установите и попользуйтесь несколькими CMS, просто чтобы увидеть особенности их работы. (если вы не можете это сделать — вам надо изучать основы установки и настройки apache/mysql/whatever, а не CMS писать. Уходите практиковать эти навыки). Также, есть хороший сайт, где установлены демки десятков CMS и можно их посмотреть, не устанавливая.

    Запишите, что вы хотите получить, сделайте наброски страниц. Определитесь с требованиями к вашей CMS. Какие в ней будут модули, как ими можно управлять.

    CMS обычно состоит из 2 частей — т.н. «админки» (запароленный раздел, где меняется конфигурация сайта, добавляются материалы) и публичной части сайта, которую видят пользователи.

    Если вы еще не бросили эту затею, перейдем к следующему пункту. Проектирование архитектуры и написание CMS. Чтобы хорошо писать сложную CMS, нужен опыт и понимание того, как вообще писать сложные программы. Нужно глубокое знание HTTP/HTML/CSS/JS/SQL. А именно:

    — система должна быть модульной, чтобы, написав основу, можно было, не переписывая ее, не спеша добавлять модули и расширять функционал
    — система должна писаться с использованием грамотной архитектуры и аккуратного кода, так как поддержка и переписывание плохого кода будет отнимать у вас слишком много сил. А потом в нем вообще никто не сможет разобраться.

    Что еще надо знать. Во-первых, надо иметь представление что значит MVC или 3-звенная архитектура.

    M в MVC — это Model. CMS скорее всего будет хранить данные в БД — надо знать, что такое и как пишется DBAL (гуглите: PDO), плейсхолдеры в запросах, возможно, Table Gateway, ознакомиться с тем, что такое ORM, и почему PHP-ные ORM так тормозят. Если будете делать модельки, не храните значения полей в публичных свойствах — это неудобно и нарушает инкапсуляцию. Храните их в приватном массиве $attributes.

    V is for View. Надо знать, что такое шаблонизаторы (прочтите мануал по Smarty, Django Templates, HAML и XSLT, чтобы иметь общее представление, какие они бывают). Для PHP хорошие варианты — использовать чистый PHP или XSLT, если осилите. Smarty — устаревший тормозной хлам, Twig тоже имеет недостатки. И не стоит ставить шаблонизатор, только, чтобы писать {$a} вместо [?= $a =].

    Не смешивайте логику (сложные вычисления, обращение к БД) и шаблонизацию. Лучше сделайте 2 файла: один с кодом, другой с шаблоном. В идеале, шаблонизатор получает от контроллера значения переменных и, кроме хелперов, никакого другого кода не вызывает.

    C — контроллеры. Но это самая простая часть, контроллер — это просто класс с методами типа viewAction(), editAction() и роутер, который смотрит на УРЛ и вызывает нужный контроллер. Посмотрите, как устроен Zend_Controller и Zend_Front_Contriller, и сделайте так же, но попроще. выкинув 90% функционала — он вам не понадобится.

    Нужно как-то сделать систему компонентной без сильных связей: чтобы ядро могло работать и без модулей, а добавление модуля не требовало дописывания кода в ядро. Почитайте про Dependency Injection, а также Observer (observer — это когда мы делаем функцию addEventListener()).

    Не используйте хуки, как в Друпал. Это дурной и порочный путь, взятый видимо из древных времен и программирования на Си.

    Что еще. Освоив все эти понятия, у вас в принципе не будет сложностей написать CMS, но почитайте еще мои советы по тому, как писать правильный код с исп. ООП: habrahabr.ru/qa/17158/#answer_70869

    Написание своих велосипедов, в общем, полезно и способствует расширению кругозора разработчика, заставляет его изучать разные подходы к написанию кода.

    Ну что еще. Если (в чем я сильно сомневаюсь) благодаря моему скромного совету вы все же сможете пройти этот нелегкий путь и станете успешным разработчиком, можете заплатить мне денег. Я не против.
    Ответ написан
    Комментировать
  • CMS своими руками

    Сделайте несколько сайтов на разных популярных CMS: Joomla, MODX, Drupal,… Напишите для них по модулю/компоненту.

    Что бы не делать лишнюю работу — можно взять проекты на фрилансе плюс будет хотя бы символическая оплата.

    Что касается работы над CMS, я бы посоветовал взять за основу какой-нибудь фреймворк. Сейчас, я бы взял Zend, так как он написан академически правильно, но в то же время он довольно сложный для восприятия новичкам. Из попроще, вроде бы, Yii сейчас в моде.

    А дальше, навесьте на фрейморк все лучше, что вы вы видели в каждой CMS или даже придумайте новое решение конкретной задачи. Как-то так делал я.

    Вообще, написание CMS — это для «тру» велосипедистов. Нужно смотреть правде в глаза: вряд ли у вас получится что-нибудь ценное, но это поможет вам разобраться в тонкостях проектирования модульной системы, предметной области CMS, надеюсь, ООП, паттерне MVC и шаблонизаторах, а также вы получите бесценный опыт разработки огромного и сложного проекта.

    В общем, лично мой уровень после написания такого велосипеда за год взлетел с что-то могу написать с нуля, до я могу все и спокойно без опыта работы даже с Зендом и чтения мануалов пишу на Magenta, который вот совсем недавно казался китайской грамотой.
    Ответ написан
    Комментировать