Domanda

Sto appena iniziando a imparare php, come potrei iniziare un'istruzione echo dopo aver premuto un pulsante di invio o persino un tag di ancoraggio.

Ecco il mio codice finora

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

?>
È stato utile?

Soluzione

l'attributo corretto per il tag del modulo è " azione " ;, non " azioni "

Quando il modulo viene inviato, una nuova richiesta viene inviata al server (nel tuo caso, usando GET).

Quindi, per fare tutto in una sola pagina:

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

Altri suggerimenti

Dovrai prima verificare se PHP ha ricevuto il tuo parametro GET usando 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";
}

Inoltre, se stai inviando alla stessa pagina, puoi omettere del tutto l'attributo action dal tag del modulo:

<form method="GET">
  

echo $ hello

Hai appena guadagnato una vulnerabilità nell'iniezione HTML. Se qualcuno invia il tuo utente a:

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

hai problemi.

Sì, questo è un My First PHP Script. Ciò non rende la sicurezza opzionale. Questo è un errore che ogni tutorial fa: insegnare le cattive pratiche fin dall'inizio, trattare la correttezza (e la sicurezza, che è un sottoinsieme di correttezza) come un extra opzionale.

Il risultato è che la maggior parte del codice PHP è pieno di buchi. Ma non c'è bisogno che il tuo sia! Ogni volta che inserisci una stringa di puro testo in un contesto HTML circostante, scappa correttamente:

echo htmlspecialchars($hello);

Tendo a definire una funzione con un nome più breve di & # 8216; htmlspecialchars & # 8217; farlo per me, dato che sono pigro.

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

Ora, se dici che il tuo nome è Mister < script > ;, la pagina ti saluterà esattamente come tale, tra parentesi angolari e tutto il resto, invece di provare a eseguire JavaScript. Questo è l'output corretto e quindi anche sicuro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top