Pregunta

Tengo un código heredado que tiene esto:

<?PHP
    if(isset(

Tengo un código heredado que tiene esto:

<*>

No sé exactamente por qué, pero esto parece estar funcionando. El htmlcode1 se carga cuando tengo? Pagina = homepage y el htmlcode2 se carga cuando la var de la pagina no existe o es otra cosa (realmente no he visto con otra cosa, simplemente no existe). El sitio web está utilizando php4 (no sé la versión exacta). Pero realmente, ¿cómo puede funcionar esto? Miré el manual y dice que isset devuelve un bool ..

¿Alguien?

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

No sé exactamente por qué, pero esto parece estar funcionando. El htmlcode1 se carga cuando tengo? Pagina = homepage y el htmlcode2 se carga cuando la var de la pagina no existe o es otra cosa (realmente no he visto con otra cosa, simplemente no existe). El sitio web está utilizando php4 (no sé la versión exacta). Pero realmente, ¿cómo puede funcionar esto? Miré el manual y dice que isset devuelve un bool ..

¿Alguien?

¿Fue útil?

Solución

El problema es que " == " No es una comparación sensible al tipo. Cualquier cadena (no vacía) es " igual " a booleano true, pero no idéntico a él (para eso necesita utilizar el operador " === ").

Un ejemplo rápido, por qué estás viendo este comportamiento:
http: //codepad.org/aNh1ahu8

Y para obtener más detalles al respecto en la documentación, consulte:
http://php.net/manual/en/language.operators.comparison.php
http://ca3.php.net/manual/en/types.comparisons.php (las " Comparaciones sueltas con == " tabla específicamente)

Otros consejos

isset () devuelve verdadero o falso. En una comparación booleana, " página de inicio " se evaluaría como true . Así que esencialmente tienes aquí:

if ( isset(

isset () devuelve verdadero o falso. En una comparación booleana, " página de inicio " se evaluaría como true . Así que esencialmente tienes aquí:

<*>

Si pagina equivale a algo, verás HtmlCode1. Si no está configurado, verá HtmlCode2.

Acabo de intentarlo para confirmar esto, y yendo a ? pagina = somethingelse no muestra HtmlCode2.

GET['pagina']) == true )

Si pagina equivale a algo, verás HtmlCode1. Si no está configurado, verá HtmlCode2.

Acabo de intentarlo para confirmar esto, y yendo a ? pagina = somethingelse no muestra HtmlCode2.

Sospecho que es un error, ya que realmente no tiene sentido comparar verdadero / falso con " página de inicio " ;. Espero que el código sea:

if (isset(

Sospecho que es un error, ya que realmente no tiene sentido comparar verdadero / falso con " página de inicio " ;. Espero que el código sea:

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

Sospecho que es un error, ya que realmente no tiene sentido comparar verdadero / falso con " página de inicio " ;. Espero que el código sea:

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

Algunas ideas sobre cómo podría funcionar esto (aparte de la " página de inicio " &=; == verdadera) mencionada anteriormente:

  • ¿Se ha redefinido Isset en algún lugar?
  • ¿Es una versión auto-modificada de PHP?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top