Pregunta

Estoy empezando a aprender php, ¿cómo iniciaría una declaración de eco después de presionar un botón de envío, o incluso una etiqueta de anclaje?

Aquí está mi código hasta ahora

form name="myform" method="get" actions="madlib01.php"

 Name: <input type="text" name="name" /> <br />


     <input type="submit" name="submit" />

formulario

<?php

$Name = $_GET['name'];

$hello .= "Hello $Name";

echo $hello  //I would prefer the echo to happen after the submit button is hit

?>
¿Fue útil?

Solución

el atributo correcto para su etiqueta de formulario es " action " ;, no " actions "

Cuando se envía el formulario, se envía una nueva solicitud al servidor (en su caso, utilizando GET).

Entonces, para hacerlo todo en una 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'];
}
?>

Otros consejos

Primero deberá verificar si PHP ha recibido su parámetro GET utilizando isset o < a href = "http://www.php.net/array_key_exists" rel = "nofollow noreferrer"> array_key_exists :

if(isset($_GET['name']) && !empty($_GET['name'])) {
    $Name = $_GET['name'];
    echo "Hello $Name";
}

o:

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";
}

También tenga en cuenta que si está enviando a la misma página, puede omitir el atributo action de su etiqueta de formulario por completo:

<form method="GET">
  

echo $ hola

Acaba de obtener una vulnerabilidad de inyección HTML. Si alguien envía a su usuario a:

http://www.example.com/madlib01.php?name=<script>stealYourCookies()</script>

tienes problemas.

Sí, este es mi primer script PHP. Eso no hace que la seguridad sea opcional. Este es un error que comete cada tutorial: enseñar malas prácticas desde el principio, tratar la corrección (y la seguridad, que es un subconjunto de corrección) como un extra opcional.

El resultado es que la mayoría del código PHP está lleno de agujeros. ¡Pero no hay necesidad de que lo sea el tuyo! Cada vez que coloque una cadena de texto puro en un contexto HTML circundante, escape de manera adecuada:

echo htmlspecialchars($hello);

Tiendo a definir una función con un nombre más corto que & # 8216; htmlspecialchars & # 8217; hacer eso por mí, ya que soy flojo.

<?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>

Ahora, si dice que su nombre es Mister < script > ;, la página lo saludará exactamente como tal, corchetes angulares y todo, en lugar de intentar ejecutar JavaScript. Esta es la salida correcta y, por lo tanto, también segura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top