Вопрос
Я только начинаю изучать php, как бы мне инициировать оператор echo после нажатия кнопки отправки или даже тега привязки.
Вот мой код на данный момент
form name="myform" method="get" actions="madlib01.php"
Name: <input type="text" name="name" /> <br />
<input type="submit" name="submit" />
форма
<?php
$Name = $_GET['name'];
$hello .= "Hello $Name";
echo $hello //I would prefer the echo to happen after the submit button is hit
?>
Решение
правильным атрибутом для вашего тега формы является "action", а не "действия".
Когда форма отправлена, на сервер отправляется новый запрос (в вашем случае с помощью GET).
Итак, чтобы сделать все это на одной странице:
form.php:
<form action="form.php" method="GET">
<input type="text" name="name"/>
<input type="submit">
</form>
<?PHP
if (! empty($_GET['name'])){
echo 'Hello, ' . $_GET['name'];
}
?>
Другие советы
Сначала вам нужно будет проверить, получил ли PHP ваш параметр GET с помощью isset
или array_key_exists
:
if(isset($_GET['name']) && !empty($_GET['name'])) {
$Name = $_GET['name'];
echo "Hello $Name";
}
или:
if(array_key_exists('name', $_GET) && !empty($_GET['name'])) {
$Name = $_GET['name'];
echo "Hello $Name";
} else {
//example: default to something if nothing has been passed
echo "Hello Guest";
}
Также обратите внимание, что если вы отправляете на ту же страницу, вы можете опустить action
атрибут из вашего тега формы целиком:
<form method="GET">
echo $ привет
Вы только что получили уязвимость при внедрении HTML.Если кто-то отправляет вашего пользователя в:
http://www.example.com/madlib01.php?name=<script>stealYourCookies()</script>
у тебя проблемы.
Да, это Мой Первый PHP-скрипт.Это не делает безопасность необязательной.Это ошибка, которую допускает каждый учебник:преподавание плохой практики с самого начала, рассматривая корректность (и безопасность, которая является подмножеством корректности) как необязательное дополнение.
В результате получается, что большая часть существующего PHP-кода полна дыр.Но в твоем нет никакой необходимости быть таким!Каждый раз, когда вы помещаете чисто текстовую строку в окружающий HTML-контекст, экранируйте ее должным образом:
echo htmlspecialchars($hello);
Я обычно определяю функцию с более коротким именем, чем "htmlspecialchars", чтобы сделать это за меня, так как я ленив.
<?php
function h($text) {
echo(htmlspecialchars($text, ENT_QUOTES));
}
$name= '';
if (isset($_REQUEST['name']))
$name= trim($_REQUEST['name']);
?>
...
<?php if ($name!=='') { ?>
<p> Hello, <?php h($name); ?>! </p>
<?php } ?>
<form method="get" action="madlib01.php">
<p>
<label for="namefield">Name:</label>
<input id="namefield" type="text" name="name" />
</p>
<p>
<input type="submit" />
</p>
</form>
Теперь, если вы скажете, что вас зовут мистер <script>, the page will greet you exactly as such, angle brackets and all, instead of trying to run JavaScript.Это правильный вывод и, следовательно, также безопасный.