2009-09-13 14 views
1

Je commence à peine à apprendre php, comment lancer une instruction d'écho après avoir appuyé sur un bouton d'envoi, ou même une balise d'ancrage.Simple Php Echo

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" /> 

forme

<?php 

$Name = $_GET['name']; 

$hello .= "Hello $Name"; 

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

?> 
+0

Vous essayez de faire apparaître l'écho juste après avoir appuyé sur le bouton. Vous ne pouvez pas faire cela avec PHP, c'est une technologie côté serveur. Essayez JavaScript ou une autre technologie côté client. – defines

Répondre

3

l'attribut correct pour votre balise form est « action », non "actions"

Lorsque le formulaire est soumis, une nouvelle demande est envoyée au serveur (dans votre cas, en utilisant GET).

Donc, pour le 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']; 
} 
?> 
1

Vous devez d'abord vérifier si PHP a reçu votre paramètre GET à l'aide 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"; 
} 

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

<form method="GET"> 
+0

citations magiques "Bonjour $ Nom" devrait être déconseillé car ils sont obsolètes dans les futures versions de php –

+5

Je ne pense pas que cela a quelque chose à voir avec des citations magiques. –

+2

@Jonathan Fingland, les citations magiques sont ce que PHP utilise pour échapper automatiquement les données - l'exemple de karim79 n'a rien à voir avec ça. –

0

echo $ bonjour

Vous venez gagné une vulnérabilité d'injection de 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 script My First PHP. Cela ne rend pas la sécurité optionnelle. C'est une erreur que fait chaque tutoriel: enseigner une mauvaise pratique dès le départ, traiter l'exactitude (et la sécurité, qui est un sous-ensemble de la correction) comme un supplément facultatif.

Le résultat est que la plupart du code PHP est plein de trous. Mais tu n'as pas besoin de l'être! Chaque fois que vous placez une chaîne pure texte dans un contexte HTML environnant, échapper correctement:

echo htmlspecialchars($hello); 

Je tends à définir une fonction avec un nom plus court que « htmlspecialchars » 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 Monsieur script <>, la page vous accueillera exactement comme tels, équerres et tous, au lieu d'essayer d'exécuter JavaScript. C'est la sortie correcte et donc également sécurisée.

+0

+1 pour la fonction h(). Ils ont ça aussi dans Ruby (tu le sais probablement) –