web-dev-qa-db-fra.com

Utilisant un PHP variable dans une entrée de texte value = statement

Je récupère trois informations de la base de données, un entier, une chaîne et une date.

Je les répète pour vérifier que les variables contiennent les données.

Lorsque j'utilise ensuite les variables pour renseigner trois zones de saisie sur la page, elles ne sont pas renseignées correctement.

Les suivants ne fonctionnent pas:

id: <input type="text" name="idtest" value=$idtest>

Oui, la variable doit être à l'intérieur de <? Php var?> Pour être visible.

Alors:

id: <input type="text" name="idtest" value=<?php $idtest ?> />

Le champ affiche /.

Quand j'échappe aux citations,

id: <input type="text" name="idtest" value=\"<?php $idtest ?>\"  />

le champ affiche alors \"\".

Avec des guillemets simples

id: <input type="text" name="idtest" value='<?php $idtest ?>'  />

le champ n'affiche rien ou est vide.

Avec des guillemets simples échappés,

id: <input type="text" name="idtest" value=\'<?php $name ?>\'  />

le champ affiche \'\'.

Avec une barre oblique (je sais que ce n'est pas correct, mais pour l'éliminer de la discussion),

id: <input type="text" name="idtest" value=/"<?php $name ?>/"  />

le champ affiche /"/".

Les guillemets doubles, les guillemets d'échappement, les guillemets d'échappement du côté gauche uniquement, etc. ne fonctionnent pas.

Je peux définir une zone de saisie pour une chaîne. Je n'ai pas essayé d'utiliser une variable de session, car je préfère éviter de le faire.

Qu'est-ce que j'oublie ici?

7
malcolm laplante

Essayez quelque chose comme ça:

<input type="text" name="idtest" value="<?php echo htmlspecialchars($name); ?>" />

C’est la même chose que ce que trentaine n’a pas suggéré , sauf que l’on prévienne également les attaques XSS.

Vous pouvez également utiliser la syntaxe <?= (voir la remarque), bien que cela puisse ne pas fonctionner sur tous les serveurs. (Il est activé par une option de configuration.)

36
icktoofay

Vous avez besoin, par exemple:

<input type="text" name="idtest" value="<?php echo $idtest; ?>" />

La fonction echo est ce qui sort réellement la valeur de la variable.

6
thirtydot

Solution

Il vous manque un écho . Chaque fois que vous souhaitez afficher la valeur d'une variable en HTML, vous devez y envoyer un écho.

<input type="text" name="idtest" value="<?php echo $idtest; ?>" >

Remarque: En fonction de la valeur, votre écho est la fonction que vous utilisez pour l’échapper, comme htmlspecialchars.

2
jckhan

Du point de vue HTML, tout a été dit, mais corrigeons un peu l'approche PHP et prenons en compte les conseils de Thirtydot et icktoofay:

<?php echo '<input type="text" name="idtest" value="' . htmlspecialchars($idtest) . '">'; ?>
2
8084635

Si vous voulez lire une fonction créée, procédez comme suit:

<input type="button" value="sports" onClick="window.open('<?php sports();?>', '_self');">
0
John Don