Ответы пользователя по тегу PHP
  • Как перенаправлять пользователя, если возникла ошибка 500?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    иногда на сайте могут возникать ошибки http(404, 401, 500 и т.д.),
    Это абсолютно разные ошибки, и обрабатываться должны по разному.
    404 должна обрабатываться самим движком сайта, отдавать именно запрошенный урл без перенаправления, и отдавать 404 статус, в том числе для того чтобы поисковые роботы вывели страницу из индекса.
    401 скорее всего вообще ошибка настройки серверной части и прав на папки/файлы, редко когда эта ошибка вываливается просто так...
    500 вообще не является конкретной ошибкой, это скорее общее оповещение что на конкретной странице что-то пошло не так или сайт в целом не работает. Упрощенно это любой фатал ерор, скрытый настройками вывода ошибок, + некоторые ошибки системного характера.

    пробывал в htacces:
    ErrorDocument 500 /error?error=500
    Логично что если сайт не работает, то и любое обращение к нему будет вызывать ту же 500 ошибку. Единственный способ что-то отобразить - статика, просто хтмл страничка оформленная в стиле сайта с нужным статичным контентом...
    Ответ написан
    3 комментария
  • Каким методом можно вернуть переменную из proc_open?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    А как вывести переменную?
    Не очень понятно что вы пытаетесь поучить и куда. Откуда взялся $res?

    Не echo $res; а return $res; и получить её в $stdout?
    stream_get_contents() возвращает строку, что бы вы себе не навоображали...
    Ответ написан
    5 комментариев
  • Почему при ajax запросе на php файл ничего не приходит?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вроде запрос уходит
    Что в пэйлоаде? Вангую что там ничего связанного с $_POST переменными нет...

    contentType:"application/json; charset=utf-8"
    Так как вы явно указываете что будете передавать строку жсон в теле запроса, не понятно что вы пытаетесь найти в $_POST.

    <?echo($_POST);?>
    Во первых отвыкайте использовать шорт теги, во вторых переменная $_POST это массив, и соответственно через ехо его выводить бессмысленно, и в третьих, как я написал выше, там ничего нет, так как данные передаются в теле запроса.
    Ответ написан
  • Почему не отправляется форма?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Что пишет конслоль?
    2) Запрос вообще выполняется? В нетворке виден запрос по субмиту на mail.php?
    3) Что показывает нетворк в пэйлоаде запроса?
    4) Что возвращает сервер на запрос?
    Ответ написан
  • Почему сессия не уничтожается?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Давайте вместе почитаем документацию и поучимся понимать что пишут умные дяди и тети:

    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?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    PHP файл, который должен отправлять форму мне на почту.
    Не должен, должен передать в очередь отправки. Дальше система сама решает что делать.

    Подскажите, пожалуйста, в чем моя ошибка?
    Использование внутренней функции mail() оправдано только в случае если это полностью контролируемый и настроенный вами сервер.

    Используйте phpmailer/swiftmailer.
    Ответ написан
    1 комментарий
  • Почему не приходит значение переменной при Ajax запросе на страницу отправки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    С помощью JS я получаю кое какие значения. И мне их нужно отправить на страницу, чтобы сторонний парсер зашел на эту страницу и смог их прочитать.
    Во первых, сторонний парсер скорее всего не увидит ваши значения полученные через js, так как 99% парсеров читают текст страницы, но не выполняют скрипты, а значит они увидят ровно ничего. Во вторых надо разобраться с кашей в голове и в коде. Давайте смотреть:

    При обновлении страницы значение txt не приходит на страницу,
    Оно не на страницу должно приходить, а в переменную data внутри скрипта.

    отображается null и код $('p.out').text(data);
    Нулл отображается так как вы открыли страничку методом get, соответственно переменная $_POST абсолютно пустая. Далее вы скриптом запросили страничку уже методом POST, и в ответ получили ВЕСЬ ЗАПРОШЕННЫЙ ФАЙЛ, начиная с <html> и далее весь текст страницы. Ну и в конце уже правильный ответ в json, так как сейчас метод запроса POST.
    Для особо... задумчивых - в аякс колбэк в переменную data возвращается ВСЕ что вернул сервер, а не только то что вы себе нафантазировали.

    Закономерный вопрос, я бы сказал классика русской философии - что делать? Во первых, разобраться как это все работает и почему все именно так как получилось. Чисто для лучшего понимания как вообще работает связка пхп-жс-аякс (ну и все подобные взаимодействия клиент-сервер). Ну и логично что если нам нужно получить только json_encode($arr);, то выводить его надо ДО вывода всей остальной страницы, и на этом сказать скрипту строгое "стопэ, дальше не надо", при этом если метод НЕ ПОСТ, то пхп скрипт вывода срабатывать вообще не должен. Как это реализовать оставляю на вашу фантазию, сообразительность и умение пользоваться гуглом.
    Ответ написан
    5 комментариев
  • Почему не приходит ответ на запрос?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    смотрите консоль браузера, читаете ошибку, гуглите, бросаете заниматься фигней.
    Так же ососзнаете, что приватные данные по типу ключа апи в открытом виде (например в переменных js) хранить не стоит, так как любой малолетний хацкер его спалит за 3 секунды.
    Такие запросы делаются на стороне сервера.
    Ответ написан
    Комментировать
  • Отправка формы и разделение на массив данные из формы?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    explode(), foreach массива, trim() значений, опять explode(), получаете ваши значения.

    UPD:
    Как теперь массово выдать монеты этим пользователям через mysqli ?
    Ну так откуда нам знать? Что за таблица, что и как там храните? Вообще понятие "массово" вставить разнородные данные может подходить только к инсерту, апдейт в вашем случае делается единично каждой записи по условию совпадения поля. Внутри вашего форича после получения данных и делайте апдейт.
    Ответ написан
    Комментировать
  • Как исправить ошибку при подключении БД Access к PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вроде ODBC не предназначен для аксеса, везде рекомендуют использовать пдо. Либо ставить руками поддержку аксеса, что скорее всего в любом случае понадобится.
    https://stackoverflow.com/questions/2222684/connec...
    https://stackoverflow.com/questions/19807081/how-t...

    Так же, что нужно для доступа к аксесу как источнику (там про мс скуель, но драйверы будут одинаковые нужны и для пыха):
    https://learn.microsoft.com/ru-ru/sql/integration-...

    PS: Все еще не понимаю назачем издеваться над собой, не легче экспортировать базу во что-то живое?
    Ответ написан
    2 комментария
  • Выдает ошибку при создании AJAX запроса (POST http://blackmamba/score.php 404 (Not Found) ) очки score должны передаваться из js в php(?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    при создании AJAX запроса (POST blackmamba/score.php...
    и
    xhr.open('POST', 'score.php',
    как-то не стыкуется...
    Ответ написан
  • Структура паттерна MVC и модели?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вообще при наличии интернета все вопросы гуглятся за время меньшее чем написание этого поста...
    Мой класс для работы с базой данных расположен в моделях,
    Это не класс модели. Это адаптер работы с бд.
    там же классы для работы с таблицами в бд User и Goods
    Это больше похоже на мвц, но вот дальше какая-то непонятная фигня:
    Я вызываю все эти модели в /app/core/model.php - основной класс моделей, который в свою очередь вызывается в основном контроллере.
    Куда вызываете? Зачем? Ваши User и Goods должны наследоваться от модели, если у вас выбран тип Active Record. А в контроллере вы уже создаете экземпляры нужных классов.

    Вопрос 2. Что вообще должно быть в моделях? Насколько правильно создавать функции для работы с той или иной таблицей? Где подчерпнуть пример?
    В модели должна быть реализована бизнес логика и методы работы с бд (в случае Active Record), в некоторых случаях так же связи объектов между собой. Все это легко гуглится, посмотреть можно в любом современном фреймворке, например что-то простенькое типа fat-free или более серьезное типа лары или симфони.
    Ответ написан
    Комментировать
  • Как раскодировать данную строку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Там же написано, бэйс64декод.

    попытки уже перешли в более 4 часов
    Сурово тупите...
    Ответ написан
    6 комментариев
  • Как получать данные из формы на сайте в разные таблицы БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    if(isset($submit)) А если я не нажал кнопку, просто нажал ентер в любом поле?
    $number = $_POST['phone_number'];Такого поля в форме вообще нет.
    if(isset($name) && isset($email)) Ну допустим есть такие переменные, если в них не нэйм и емэйл то что делать? С мессажем та же фигня...

    Запросы ВСЕГДА должны выполняться через подготовленные выражения.
    Ответ написан
    1 комментарий
  • Как сделать продажу файлов на PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    файлы кладете в любое хранилище, доступное от сервера, но недоступное из веб (например на том же сервере выше документ рут). Далее код - проверки, танцы, прочее учетное непотребство, и в конце readfile() и соответствующие заголовки.
    Ответ написан
  • Как заставить работать Class «RarArchive» not found?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Подскажите, что я упускаю?
    Может то, что для веб и для cli php.ini разные?
    phpinfo() в помощь.
    Ответ написан
  • Почему не работает $_SESSION?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Файл подключения:
    Зачем? Тут нет никакой логики связанной с логином.

    Что у вас в сессии смотрели?
    var_dump($_SESSION);
    if (isset($_SESSION['logged_user']))...
    Ответ написан
  • Как вызвать метод класса внутри другого метода?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вы НЕ возвращаете ответ ИЗ контроллера, вы возвращаете ответ в функцию. Так работать не будет, смотрите мой комментарий с выдержкой из доки.
    -$this->validateItems($request, $rules);
    +return $this->validateItems($request, $rules);
    Ответ написан
    Комментировать
  • По какой причине сайт не работает на хостинге?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    выдает ошибку 500
    По скрину видно что ошибка должна же быть 404?

    Файлы, выгруженные на хост:
    Папка то какая на хосте?
    Ответ написан