PHP, проблемы с POST

#php

#php

Вопрос:

В настоящее время у меня проблема с тем, что мои POST-запросы отображают то, что требуется, то есть повторяют пользовательский ввод. Я использую PhpStorm в качестве своей IDE и XAMPP из установщика для Windows в качестве своего стека.

Форма отправки пользователем выглядит следующим образом, это файл .php.

 <form method="post" action="matches-submit.php">
            <fieldset>
                <legend>Returning User:</legend>
                <ul>
                    <li><label><strong>Name:</strong></label>
                        <input id="name" name="name" type="text" size="16">
                    </li>
                    <li>
                        <input id="submit" name="submit" type="submit" value="Sign Up">
                    </li>

                </ul>
            </fieldset>

        </form>
  

Форма, которая должна обрабатывать эту отправку, выглядит следующим образом:

 <html>
    <body>
    Welcome
        <?php
            echo $_POST["name"];
        ?>
    </body>
</html>
  

Однако я получаю ошибку undefined index. Такая же проблема возникает на моем Mac, где вместо этого я использую стек MAMP. $_GET работает нормально, однако, согласно хорошей практике, вы не хотите использовать GET при обработке форм.

Как я могу это исправить, чтобы он выводил «Welcome $ UserInputHere»?

Комментарии:

1. Используя именно этот скрипт, у меня это сработало. Отправляются ли заголовки?

2. Попробуйте "<pre>",print_r($_POST),"<pre>"; — Это отобразит POST массив и все его содержимое, вы начнете понимать, где вы ошибаетесь, если в массиве нет содержимого, то это проблема с операцией отправки. Убедитесь, что вы не просто открываете страницу, не нажав отправить в форме. 🙂

3. При дальнейшем исследовании кажется, что phpstorms, встроенный в веб-сервер, имеет проблемы с post, поскольку get работает. Таким образом, в качестве продолжения, мне интересно, знает ли кто-нибудь из вас, как заставить phpstorm использовать ваш собственный сервер apache. Я загрузил стек MAMP для своего Mac и, конечно, XAMPP для Windows.

4. также результатом этой команды является: Array ( ). Итак, POST, похоже, ничего не отправляет.

5. Будьте очень осторожны… используйте htmlspecialchars() для любых произвольных данных, используемых в контексте HTML (таких как ваш $_POST['name'] ). В противном случае вы рискуете открыть себя для внедрения кода на вашу страницу.

Ответ №1:

Итак, я нашел решение. Это, конечно, на моем компьютере с Windows, но я полагаю, что аналогичная вещь применима и к Mac. Перейдите в папку xampp, найдите папку httpdocs и выполняйте свою работу там.

После этого включите сервер, и вы сможете получить к нему обычный доступ через localhost. Это означает, что вы все еще можете использовать phpstorm в качестве своей ide, но обходите его встроенный сервер, у которого проблемы с post.

Ответ №2:

Это не решение. Я использую PhpStorm и XAMPP вместе с папкой webroot, расположенной в расположении проекта PhpStorm по умолчанию (все, что требуется, это изменение записи VirtualHost, DocumentRoot), и ответы на мои запросы работают нормально.

Вероятно, это тривиальная неправильная настройка, скорее всего, в вашем предыдущем .htaccess

Редактировать: Чтобы настроить свой виртуальный хост, следуйте этому:

  • Введите C:xamppapacheconfextra , отредактируйте http-vhosts.conf , добавьте это:


<VirtualHost *:80>
ServerName localhost
DocumentRoot C:UsersYOUR_PHPSTORM_PROJECT_FOLDER
</VirtualHost>

  • Редактировать C:system32driversetchosts если вы выбрали имя сервера, отличное от localhost, добавьте следующую запись: 127.0.0.1 arbitraryservername

  • Перезапустите XAMPP

Если вы получаете HTTP 403, вам может потребоваться добавить Require all granted (или Allow from all в более старых версиях apache) для корневого каталога веб-сервера. Вот и все.

Комментарии:

1. Может быть, idk, я полный новичок, и наш профессор показал нам 0 вещей, насколько это касается настройки. Я пытался заставить phpstorm проходить через сервер, и это все время приводит к сбою. Пробовал просмотр видео на YouTube и т.д., И ничего не работало, кроме этого. Если вы можете сказать мне, как это сделать, это было бы здорово.

2. добавлена некоторая информация о том, как настроить ваш виртуальный хостинг