Разбиваю строку на массив, из первого параметра получаю имя контроллера и создаю соответствующий экземпляр. Если нет второго параметра, вызываю действие по умолчанию: на сайте это отобразить каталог, или страницу со сатьями (uri соответственно mysite.com/catalog или mysite.com/articles). Если же есть второй параметр (это название конкретного растения или id статьи), вызываю другое действие и передаю параметр (получается mysite.com/catalog/aloe)то что вы реализовали к роутингу имеет такое себе отношение. Роутинг обычно опирается на правила, а увас тупо захардкорен контроллер. Что будете делать если сложность будет чуть выше, и например, добавится язык перед контроллером?
При запросе вида mysite.com/catalog/aloe/test, т.е. когда через слеш появляется третий параметр, та же страница с уведомлением для пользователя отображается без стилейЛогично, стили у вас лежат всегда в одной папке, а вы их каждый раз подключаете из разных "путей" в урл, от которых зачем-то высчитываете сколько папок "выше отмотать". Путь должен быть абсолютным.
Вот логика проверки, буквально, если в массиве получилось больше двух элементов, отобрази страницу ошибкиВообще логика должна быть такой, что если больше 2 параметров, то все что дальше помещается в какой-то массив, например $parameters, который можно получить из роутинга, и дальше в зависимости от значений что-то делать. Правильнее все же было бы сделать сопоставление пути с контроллером, экшеном и параметрами, как во взрослых роутерах, но для начала и так сойдет.
иногда на сайте могут возникать ошибки http(404, 401, 500 и т.д.),Это абсолютно разные ошибки, и обрабатываться должны по разному.
пробывал в htacces:Логично что если сайт не работает, то и любое обращение к нему будет вызывать ту же 500 ошибку. Единственный способ что-то отобразить - статика, просто хтмл страничка оформленная в стиле сайта с нужным статичным контентом...
ErrorDocument 500 /error?error=500
Вроде запрос уходитЧто в пэйлоаде? Вангую что там ничего связанного с $_POST переменными нет...
contentType:"application/json; charset=utf-8"Так как вы явно указываете что будете передавать строку жсон в теле запроса, не понятно что вы пытаетесь найти в $_POST.
<?echo($_POST);?>Во первых отвыкайте использовать шорт теги, во вторых переменная $_POST это массив, и соответственно через ехо его выводить бессмысленно, и в третьих, как я написал выше, там ничего нет, так как данные передаются в теле запроса.
session_destroy() уничтожает все данные, связанные с текущей сессией. Данная функция не удаляет какие-либо глобальные переменные, связанные с сессией и не удаляет сессионные cookie. Чтобы вновь использовать переменные сессии, следует вызвать .Это значит что у вас в текущем состоянии пропадает переменная $_SESSION и связанный с ним идентификатор, но кука сессии и файл сессии на сервере никуда не деваются. И при следующем обращении к серверу вы делаете session_start() и сессия вновь работает.
Замечание: Нет необходимости вызывать session_destroy() в обычном коде. Очищайте массив $_SESSION вместо удаления данных сессии.Очень важное замечание, как раз связанное с вашей возмущенной репликой о том что "ну вот так же работает!111!". При большом разнообразии настроек и конфигураций серверов, сессия может вести себя по разному, что с одной стороны дает гибкость поведения если знать как и зачем вы что-то делаете, с другой стороны может вызвать проблемы, как в вашем случае, когда вы не очень понимаете зачем какие настройки и как обойти возникшие сайдэффекты. По этому самым верным решением является удаление данных из сессии.
Чтобы полностью удалить сессию, также необходимо удалить и её идентификатор. Если для передачи идентификатора сессии используются cookie (поведение по умолчанию), то сессионные cookie также должны быть удалены. Для этого можно использовать setcookie().Чего вы очевидно не делаете.
При включённой опции session.use_strict_mode, вам не нужно удалять устаревшие cookie идентификатора сессии. В этом нет необходимости, потому что модуль сессии не примет cookie идентификатора сессии, если с этим идентификатором сессии нет связанных данных, и модуль сессии установит новый cookie идентификатора сессии. Рекомендуется включать опцию session.use_strict_mode для всех сайтов.Рекомендуемые настройки, которые возможно вам помогут решить проблему именно вашим способом, НО вышеописанный способ является рекомендуемым.
PHP файл, который должен отправлять форму мне на почту.Не должен, должен передать в очередь отправки. Дальше система сама решает что делать.
Подскажите, пожалуйста, в чем моя ошибка?Использование внутренней функции mail() оправдано только в случае если это полностью контролируемый и настроенный вами сервер.
С помощью JS я получаю кое какие значения. И мне их нужно отправить на страницу, чтобы сторонний парсер зашел на эту страницу и смог их прочитать.Во первых, сторонний парсер скорее всего не увидит ваши значения полученные через js, так как 99% парсеров читают текст страницы, но не выполняют скрипты, а значит они увидят ровно ничего. Во вторых надо разобраться с кашей в голове и в коде. Давайте смотреть:
При обновлении страницы значение txt не приходит на страницу,Оно не на страницу должно приходить, а в переменную data внутри скрипта.
отображается null и код $('p.out').text(data);Нулл отображается так как вы открыли страничку методом get, соответственно переменная $_POST абсолютно пустая. Далее вы скриптом запросили страничку уже методом POST, и в ответ получили ВЕСЬ ЗАПРОШЕННЫЙ ФАЙЛ, начиная с
<html>
и далее весь текст страницы. Ну и в конце уже правильный ответ в json, так как сейчас метод запроса POST. json_encode($arr);
, то выводить его надо ДО вывода всей остальной страницы, и на этом сказать скрипту строгое "стопэ, дальше не надо", при этом если метод НЕ ПОСТ, то пхп скрипт вывода срабатывать вообще не должен. Как это реализовать оставляю на вашу фантазию, сообразительность и умение пользоваться гуглом. Как теперь массово выдать монеты этим пользователям через mysqli ?Ну так откуда нам знать? Что за таблица, что и как там храните? Вообще понятие "массово" вставить разнородные данные может подходить только к инсерту, апдейт в вашем случае делается единично каждой записи по условию совпадения поля. Внутри вашего форича после получения данных и делайте апдейт.