2009-12-04 10 views
6

Este: <!---->Encontrar un pícaro <!----> en PHP

Esta ... esta ... cosa. Justo ahí.

7 caracteres del mal, forzando IE para hacer que todas las páginas con él en la parte superior como esta en el modo de peculiaridades:

<!----><!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 

Si no está mal que no sé lo que es, porque sin duda ISN' t en mi archivo de plantilla, ya que las primeras líneas del que son:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <?php $this->outputHead(); ?> 
    </head> 

desde luego, no veo ningún problema en mi código de dar salida real:

function build() 
{ 
    if ($this->disabled) 
    { 
     return $this->content; 
    } 
    else 
    { 
     global $footer; 
     ob_start(); 
     $location = $this->location; 
     include($this->location['theme_nr'].'/overall.php'); 
     return ob_get_clean(); 
    } 
} 

function outputAll() 
{ 
    // stop capturing everything 
    $this->content = ob_get_clean(); 

    // build the page 
    echo $this->build(); 
} 

Realmente no lo entiendo. ¿Cómo podría este cosa entrar en mi código?

sólo puedo imaginar que > poco al final se convierta en una sonrisa, y la cosa es riendo de mí.

Se atormenta a mis sueños, mata a mis gatos, no sé lo que va a hacer a continuación, pero va a matar a algo.

¡Ayúdenme, dioses del desarrollo web!

EDIT: Solo una nota, aparece en todos los navegadores, pero parece conducir IE balístico y ninguno de los otros.

+0

Me gusta el odio hacia el IE. – MitMaro

+0

¿Estás usando algún tipo de marco? – MitMaro

+0

¿Qué código está llamando a sus funciones? – MitMaro

Respuesta

1

Miré en el git repo que publicó y no está dentro. Puede probar un diff desde la copia en github hasta su copia actual ya que el cambio está en los cambios que realizó.


Si está utilizando un IDE, haga una búsqueda de archivo global para la cadena de caracteres. Este tipo de "errores" puede ser problemático.

+0

Estoy usando Notepad ++ ... No creo que tenga esa característica, ya que es más que un Notepad extendido como su nombre lo indica. – unrelativity

+0

Notepad ++ no tiene problemas para buscar pavium

+0

He intentado buscar manualmente en un par de archivos antes de darme por vencido. En cuanto al repositorio git, está actualizado. – unrelativity

0

Parece una situación en la que grep sería útil, si puede usarla a través de cygwin o directamente en Linux. Un ejemplo rápido de cómo encontrar archivos con ese comentario en HTML

grep -R "<\!---->" ./* 

Eso debería limitar la búsqueda.

+0

Lamentablemente uso Windows. En cuanto a Cygwin, bueno, la última vez que traté de instalarlo, miré el tamaño de la descarga y me di por vencido. Eso fue hace uno o dos años. – unrelativity

+0

Aw bien, pensó que algo así podría ser el caso, pero pensé que lo tiraría allí de todos modos. –

+0

Posiblemente no sea la manera más sencilla, pero puede obtener una cuenta en http://silenceisdefeat.com/ (Unix gratis), cargue su archivo usando SFTP con algo como Filezilla, luego conéctelo con Putty y ejecute el comando dado anteriormente: D –

3

Encontré al culpable.

De alguna manera, un kludge que tengo en una función para ocultar un error de MySQL solo está causando problemas en una de mis ramas, aunque la función y de dónde se llama no ha cambiado entre las dos ramas.

Para los interesados, el código en cuestión:

function isexistinguser($uname,$pwd) 
{ 
    global $location; 

    $uname = mysql_real_escape_string($uname); 

    $result = mysql_query("SELECT * FROM users WHERE user_username = '$uname'"); 

    $hit = 0; 
    $rowcounted = false; 
    $salt = ''; 

    echo '<!--'; // cheap fix for mysql error - FIND A BETTER WAY! 

    while($row = mysql_fetch_array($result)) 
    {  
     // Do stuff to figure out what to return 
    } 

    echo '-->'; // cheap fix for mysql error - FIND A BETTER WAY! 

    return array($hit,$salt); 
} 
+2

Eso es realmente divertido. También me gusta cómo se ve el usuario actual como un extintor y ... probablemente ya sepas cómo se ve $ hit. :) – Kevin

+1

'$ hit' parece ... ¿qué? – unrelativity

+3

La apariencia física de $ hit puede variar según la fábrica de $ hit, o los parámetros pasados ​​a la fábrica de $ hit antes de la ejecución del trabajo para crear $ hit. Más comúnmente, generalmente tiene un miembro Color constante de Color.SaddleBrown y tiene un mal olor a código. – snicker

0

Acerca de su tratamiento de errores. La primera forma de resolverlo es definir y usar sus propios manejadores en lugar de los predeterminados de php con set_error_handler.

Como una solución simple, modificar esta línea: $result = mysql_query("SELECT * FROM users WHERE user_username = '$uname'"); con algo así:

$result = mysql_query("SELECT * FROM users WHERE user_username = '$uname'"); 
if(!$result || !is_resource($result){ 
    return array(0, ''); 
} 

Para terminar esto, yo recomiendo que echa PDO utilizar bases de datos.

+0

En realidad, encontré que el error se derivó de algo completamente diferente, y ahora estoy tratando de descubrir qué está causando el problema * that * - http://stackoverflow.com/questions/1845587/how-come-my-php-sessions -arent-llevando-a-través – unrelativity

0

yo hubiera buscado la cadena 'mal':

grep -R '\-\->' /your/folder

Cuestiones relacionadas