#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. добавлена некоторая информация о том, как настроить ваш виртуальный хостинг