Question

Je commence tout juste à apprendre php, comment puis-je créer une déclaration echo après avoir appuyé sur un bouton d'envoi, ou même une balise d'ancrage.

Voici mon code jusqu'à présent

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

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


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

formulaire

<?php

$Name = $_GET['name'];

$hello .= "Hello $Name";

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

?>
Était-ce utile?

La solution

l'attribut correct pour votre balise de formulaire est & "action &", pas & "actions &";

Lorsque le formulaire est soumis, une nouvelle demande est envoyée au serveur (dans votre cas, à l'aide de GET).

Donc, pour tout faire en une seule page:

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'];
}
?>

Autres conseils

Vous devez d’abord vérifier si PHP a bien reçu votre paramètre GET avec isset ou < 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";
}

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

Notez également que si vous vous soumettez à la même page, vous pouvez omettre l'attribut action de votre balise de formulaire:

<form method="GET">
  

echo $ bonjour

Vous venez d’obtenir une vulnérabilité d’injection HTML. Si quelqu'un envoie votre utilisateur à:

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

vous avez des problèmes.

Oui, il s’agit d’un premier script PHP. Cela ne rend pas la sécurité optionnelle. C’est une erreur commise par tous les tutoriels: enseigner les mauvaises pratiques dès le début, traiter l’exactitude (et la sécurité, qui est un sous-ensemble de l’exactitude) comme un extra facultatif.

Le résultat est que la plupart du code PHP est rempli de trous. Mais il n’est pas nécessaire que le vôtre Chaque fois que vous placez une chaîne de texte pur dans un contexte HTML environnant, échappez-la correctement:

echo htmlspecialchars($hello);

J'ai tendance à définir une fonction avec un nom plus court que & # 8216; htmlspecialchars & # 8217; de le faire pour moi, comme je suis paresseux.

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

Maintenant, si vous dites que votre nom est Mister < script > ;, la page vous accueillera exactement comme tel, entre crochets et tout, au lieu d'essayer d'exécuter JavaScript. Ceci est la sortie correcte et donc également sécurisée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top