Вопрос

Я только начинаю изучать 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.Это правильный вывод и, следовательно, также безопасный.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top