Question

J'ai un code hérité qui a ceci:

<?PHP
    if(isset(

J'ai un code hérité qui a ceci:

<*>

Je ne sais pas exactement pourquoi mais cela semble fonctionner. Le code htmlcode1 est chargé lorsque j'ai? Pagina = homepage et le code htmlcode2 lorsque la variable pagina n'existe pas ou est quelque chose d'autre (pas vraiment vu avec quelque chose d'autre, mais pas là). Le site web utilise php4 (je ne connais pas la version exacte). Mais vraiment, comment cela peut-il fonctionner? J'ai regardé le manuel et il est écrit que isset retourne un booléen.

Quelqu'un?

GET['pagina'])=="homepage") { ?> HtmlCode1 <?php } else { ?> HtmlCode2 <?php } ?>

Je ne sais pas exactement pourquoi mais cela semble fonctionner. Le code htmlcode1 est chargé lorsque j'ai? Pagina = homepage et le code htmlcode2 lorsque la variable pagina n'existe pas ou est quelque chose d'autre (pas vraiment vu avec quelque chose d'autre, mais pas là). Le site web utilise php4 (je ne connais pas la version exacte). Mais vraiment, comment cela peut-il fonctionner? J'ai regardé le manuel et il est écrit que isset retourne un booléen.

Quelqu'un?

Était-ce utile?

La solution

Le problème est que " == " n'est pas une comparaison sensible au type. Toute chaîne (non vide) est " égale " boolean true, mais pas identique (pour cela, vous devez utiliser l'opérateur " === ").

Un exemple rapide, pourquoi vous observez ce comportement:
http: //codepad.org/aNh1ahu8

Et pour plus de détails à ce sujet dans la documentation, voir:
http://php.net/manual/fr/language.operators.comparison.php
http://ca3.php.net/manual/fr/types.comparisons.php (les" comparaisons lâches avec == "table spécifiquement"

Autres conseils

isset () renvoie true ou false. Dans une comparaison booléenne, la "page d'accueil" correspondrait à true . Donc, essentiellement, vous avez ici:

if ( isset(

isset () renvoie true ou false. Dans une comparaison booléenne, la "page d'accueil" correspondrait à true . Donc, essentiellement, vous avez ici:

<*>

Si pagina est égal à quelque chose, vous verrez HtmlCode1. Si ce n'est pas défini, vous verrez HtmlCode2.

Je viens de l’essayer pour le confirmer et aller à ? pagina = quelque chose d’autre ne affiche pas la valeur HtmlCode2.

GET['pagina']) == true )

Si pagina est égal à quelque chose, vous verrez HtmlCode1. Si ce n'est pas défini, vous verrez HtmlCode2.

Je viens de l’essayer pour le confirmer et aller à ? pagina = quelque chose d’autre ne affiche pas la valeur HtmlCode2.

Je soupçonne qu’il s’agit d’un bogue, car il n’a pas de sens de comparer vrai / faux avec "page d'accueil". Je m'attendrais à ce que le code soit réellement:

if (isset(

Je soupçonne qu’il s’agit d’un bogue, car il n’a pas de sens de comparer vrai / faux avec "page d'accueil". Je m'attendrais à ce que le code soit réellement:

<*>GET['pagina']) && (

Je soupçonne qu’il s’agit d’un bogue, car il n’a pas de sens de comparer vrai / faux avec "page d'accueil". Je m'attendrais à ce que le code soit réellement:

<*>GET['pagina'] == "homepage")) { }

Quelques idées sur la manière dont cela pourrait fonctionner (en dehors de la "page d'accueil" mentionnée précédemment = true):

  • Isset a été redéfini quelque part?
  • C’est une version auto-modifiée de PHP?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top