J'ai une forme POST PHP et un ensemble d'entrées:
Chaque entrée a l'air identique, seuls les noms changent: p> Comment définir des valeurs par défaut lorsque la valeur = n'est pas disponible? P> < p> [EDIT] P> OK, alors, normalement, je ferais normalement quelque chose comme: p> mais dans ce cas, j'ai un script php qui accroche Entrée les données et l'affiche à l'aide de Value = "<< PHP Echo get_option (" Votre nom ");?>" code>. Je n'ai donc aucune idée de la façon de forcer mon formulaire à afficher "Mike" dans mon entrée. P> p>
11 Réponses :
Vous pouvez faire une instruction de commutation et faire défaut ce que vous voulez que ce soit. p>
Vous devez d'abord vérifier le retour de get_option et remplacer quelque chose si une valeur par défaut n'est pas disponible modifier get_option pour renvoyer une chaîne vide (ou quelque chose d'autre) si la valeur par défaut n'est pas disponible. p> p>
Vous pouvez utiliser ma bibliothèque minuscule valoresolver pour le faire plus simplement
Définissez une certaine variable au début avec les variables de poteau.
comme p>
Il y a un énorme trou XSS dans cela.
Et, ne pas être ridiculement cruellement difficile, une ligne de PHP non terminée dans l'attribut code> code>.
@David Thomas, qu'entendez-vous par ligne non terminée?
@Ummar Il n'y a pas de terminaison ; code> après le
$ nom_val code>. Strictement parler, je ne pense pas qu'il
Veuillez cesser d'utiliser des étiquettes ouvertes courtes. Ils pourraient être désactivés dans certaines configurations et PHP pourraient arrêter de le supporter à l'avenir.
@Marcel Korpel, short_open_tag code> est ouvert par défaut dans la configuration PHP ... et selon les documents PHP, il n'est pas obsolète. [PHP DOCS] ( php.net/manual/fr/ini.core.php a>)
Mais il existe de nombreuses configurations de serveur qui l'ont désactivé. De plus, seul Code> pourrait confondre des programmes qui fonctionnent également avec d'autres langues, comme XML.
@Quentin en regardant PHP pour la toute première fois, pourriez-vous s'il vous plaît élaborer sur votre commentaire sur "Un énorme trou XSS" dans la réponse fournie? Merci.
@Quentin OK, merci. Ainsi, le code affiché est problématique car la variable est en cours d'évaluation, donc si elle contient du code, il fonctionnera. IIU, l'impression de la variable serait correcte. Merci.
@Jodyhagins - Non. Impression de la variable l'envoie au navigateur où elle sera évaluée en tant que HTML (qui peut incorporer JS).
Etant donné que valeur code> est la valeur par défaut, il suffit d'ajouter une condition autour de votre
get_option code> -function, peut-être quelque chose comme ceci:
<input type="text" name="your_name" value="<?php $var = get_option('your_name'); if ($var == '') $var = 'your_default'; echo $var; ?>" />
Ce n'est pas la meilleure pratique d'écrire toute la logique à l'intérieur du HTML :)
Très vrai, mais je démontitais simplement les moyens d'y arriver. Un détachement structuré de code PHP et de HTML doit être supposé.
Vous pouvez modifier la fonction get_option () code> pour être quelque chose comme
Je suis d'accord avec Teneff mais je le briserais.
dans l'index.php, j'aurais ce qui suit en haut de la DOC P>
<? $Name = <<<EOD Name EOD; return $Name; ?>
<input type="text" name="your_name" value="<?php echo empty(get_option('your_name')) ? "TheDefaultValue" : get_option('your_name'); ?>" />
Vous pouvez utiliser ma bibliothèque minuscule valoresolver dans ce cas, par exemple: et n'oubliez pas d'utiliser l'espace de noms Il existe également une capacité à taper, par exemple si la valeur de votre variable devrait Soyez cochez le docs pour plus d'exemples p> p> Utiliser lapalabs \ valoresolver \ résolveur \ valoresolver; code> p>
INTEGER code>, utilisez-le ainsi: p>
Voici comment j'ai résolu ce problème dans mon problème que je crois est similaire, lorsque $ _Post est lu que la valeur est remplie à partir de la valeur $ _post d'ailleurs définit la valeur par défaut de Mike
value="<?php if (isset($_POST['name'])) echo $_POST['name']; else echo "Mike"?>" >
Pour éviter les attaques XSS, remplacez echo $ _post ['nom'] code> ci-dessus avec
echo htmlspecialchars ($ _ post ["nom"]) code>.
Utilisez simplement un opérateur ternaire. c'est assez facile essayez ceci
Vous pouvez stocker la valeur de get_option dans une variable et utiliser l'opérateur de Coalece PHP NULL pour définir une valeur par défaut s'il existe un présent.
<?php $value = get_option('your_name');?> <input type="text" name="your_name" value="<?php echo $value ?? NULL; ?>">
Je ne comprends pas dans quelles circonstances
valeur = code> serait pas b> disponible. Pouvez-vous clarifier pourquoi i> il pourrait ne pas être disponible?
@David Thomas, a mis à jour la question.
N'oubliez pas non plus d'échapper à des caractères spéciaux! Stackoverflow.com/Questtions/6249151/...
@Wordressor, vous pouvez utiliser ma bibliothèque minuscule valoresolver pour le faire plus simplement, vérifier ma réponse, s'il vous plaît