Pergunta
Eu estou apenas começando a aprender php, como eu ia iniciar uma instrução echo após um enviar botão é pressionado, ou até mesmo uma marca de âncora.
Aqui está o meu código até agora
form name="myform" method="get" actions="madlib01.php"
Name: <input type="text" name="name" /> <br />
<input type="submit" name="submit" />
forma
<?php
$Name = $_GET['name'];
$hello .= "Hello $Name";
echo $hello //I would prefer the echo to happen after the submit button is hit
?>
Solução
o atributo correto para o seu tag de formulário é "ação", e não "ações"
Quando o formulário é enviado, um novo pedido é enviado para o servidor (no seu caso, usando GET).
Assim, para fazê-lo tudo em uma página:
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'];
}
?>
Outras dicas
Você primeiro precisa verificar se o PHP recebeu seu parâmetro GET usando isset
ou array_key_exists
:
if(isset($_GET['name']) && !empty($_GET['name'])) {
$Name = $_GET['name'];
echo "Hello $Name";
}
ou
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";
}
Também nota, se você está enviando para a mesma página, você pode omitir o atributo action
de sua marca de formulário completo:
<form method="GET">
echo Olá $
Você apenas ganhou uma vulnerabilidade do HTML-injeção. Se alguém lhe enviar o seu usuário:
http://www.example.com/madlib01.php?name=<script>stealYourCookies()</script>
você tem problemas.
Sim, este é um Meu Primeiro PHP Script. Isso não faz opcional de segurança. Este é um erro a cada marcas Tutorial:. Ensinando má prática desde o início, o tratamento correto (e de segurança, que é um subconjunto de exatidão) como um extra opcional
O resultado é que o código mais PHP lá fora é cheio de buracos. Mas não há nenhuma necessidade de seu ser! Toda vez que você colocar uma corda de texto puro em um contexto HTML circundante, escapar-lo corretamente:
echo htmlspecialchars($hello);
I tendem a definir uma função com um nome mais curto do que ‘htmlspecialchars’ para fazer isso por mim, como eu sou preguiçoso.
<?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>
Agora, se você diz que seu nome é Senhor