Come impostare HTML valore di attributo (con spazi)

Quando io uso PHP per impostare il valore di un form HTML elemento di input, funziona benissimo purché non ho spazi nei dati.

<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? "value = ".$_POST["username"] : "value = \"\""; ?> />

Se inserisco “Jonathan”, come il nome utente, si è ripetuto a me, come previsto. Se inserisco “Big Ted”, tuttavia, ho solo “Big” ripetuto quando faccio il submit della form.

Di notare che la $_POST["Username"] variabile è corretto; quando ho l’eco con PHP, è impostato su “Big Ted”.

OriginaleL’autore Kim Prince | 2010-06-20

5 Replies
  1. 22

    Preventivo. Altrimenti lo spazio diventerà un attributo separatore e tutto ciò che gli spazi saranno visti come elemento di attributi. Pulsante destro del mouse la pagina nel browser e visualizza sorgente. Non deve assomigliare a questo (vedi anche la sintassi di colori di evidenziazione):

    <input value=Big Ted>

    ma questo

    <input value="Big Ted">

    Per non parlare che questo sarebbe ancora in pausa quando qualcuno ha una quota nel suo nome e il codice è così sensibile a XSS attacchi). Utilizzare htmlspecialchars().

    Kickoff esempio:

    <input value="<?php echo (isset($_POST['username']) ? htmlspecialchars($_POST['username']) : ''); ?>">
    XSS non ha nulla a che fare qui. Codifica richiesto dalla norma. Anche se si modifica completamente allower HTML nell’area di amministrazione, è necessario htmlencode valori, tra cui textarea contenuto.
    dove ho detto che XSS è relativo al particolare problema? 🙂
    ah sì, ho trascurato. Concentrati sulla parola chiave, si sa 🙂

    OriginaleL’autore BalusC

  2. 1
    <input type="text" name="username"
    <?php echo (isset($_POST['username'])) ? "value = '".$_POST["username"]' : "value = ''"; ?> />

    È necessario avvolgere il risultato variabile tra virgolette, in modo che il browser è in grado di sapere qual è il contenuto dell’input.

    aggiungi un preventivo per il tuo nome e si finisce con lo stesso problema 🙂

    OriginaleL’autore Cristian

  3. 1
    <input type="text" name="username"
    <?php echo (isset($_POST['username'])) ? ('value = "'.$_POST["username"].'"') : "value = \"\""; ?> />

    Essere consapevoli del vostro preventivo di utilizzo.

    aggiungi un preventivo per il tuo nome e si finisce con lo stesso problema 🙂
    Schegge – Questa era una molto banale domanda e io sono troppo utilizzati per quadri che fa il lavoro per me da fastidio si avverte che, ma che…
    Perché non portare un esempio con il tuo quadro preferito usare allora?
    Perché sarebbe fuori dell’ambito di questa semplice domanda e solo complichino ulteriormente le cose.
    Il problema era che lui non era avvolgimento virgolette intorno a una stringa che aveva uno spazio ( correttamente la codifica di un attributo con un valore in HTML ), la soluzione è stata quella di avvolgere virgolette intorno ad esso in modo valido HTML, quindi rispondere alla sua domanda. Sei troppo di essere nitpicky su qualcosa che non è così importante. Grazie per il downvote.

    OriginaleL’autore meder omuraliev

  4. 1

    Come si vede, non PHP5 o il PHP domanda.

    HTML di base conoscenza è obbligatoria per chi vuole essere un PHP.

    E con l’utilizzo di modelli sembra il modo più pulito:

    Ottenere i dati parte del codice:

    $username = "";
    if isset($_POST['username'])) $username = htmlspecialchars($_POST["username"]);

    E codice di modello:

    <input type="text" name="username" value="<?=$username?>">

    Se si divide il codice 2 parti è diventato il modo più sopportabile e leggibile.

    Non è una buona pratica di utilizzare short open tag visto che il server può avere disabilitato, però, vorrei consigliare contro di raccomandare che l’OP.
    beh, basta accenderlo. Non un grande affare. Che cosa sono le impostazioni di configurazione.
    Perché? Si tratta di una cattiva pratica di utilizzare, in primo luogo. Che e non vorrei mai usare il PHP se ho gestito il server.
    chi ha detto che è “cattiva pratica”?
    no, non sono in fase di esaurimento in PHP6, è vuoto rumor. Diffusa da questi “più esperti e sviluppatori PHP”. Non vedo uno là, però. ZF usa i tag nel loro modello di sistema se si preferisce grassi autorità come prova.

    OriginaleL’autore Your Common Sense

  5. 1

    solo assicuratevi di mettere i due punti dopo il campo, per esempio :

      <option value="'.$row['name'].'">

    OriginaleL’autore amruzzzzzzzzzi

Lascia un commento