2009-12-04 13 views
6

następująco: <!---->Znalezienie nieuczciwych <!----> w PHP

To ... to ... coś. Tam.

7 znaków zła, zmuszając IE do renderowania wszystkich stron z nim na górze tak w trybie quirks:

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

Jeśli to nie jest zła nie wiem co to jest, bo to na pewno nieprawdaż” t w moim pliku szablonu, od pierwszych kilku liniach, które są:

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

pewno nie widzę żadnych problemów w moim rzeczywisty kod wyprowadzanie:

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(); 
} 

Naprawdę po prostu tego nie rozumiem. W jaki sposób ta rzeczy może dostać się do mojego kodu?

mogę tylko wyobrazić że > nieco na końcu zamienia się w uśmiechu, a sprawa jest śmiech na mnie.

Nawiedza moje sny, zabija moje koty, nie wiem, co dalej, ale zabije coś.

Pomóżcie mi, wy, bogowie rozwoju sieci!

EDYCJA: Po prostu notatka, pojawia się we wszystkich przeglądarkach, ale wydaje się napędzać balans IE i żadne inne.

+0

Lubię nienawiść wobec IE. – MitMaro

+0

Czy używasz jakiegoś frameworka? – MitMaro

+0

Jaki kod wywołuje twoje funkcje? – MitMaro

Odpowiedz

1

Zajrzałem do repozytorium git, które opublikowałeś i nie jest ono zawarte. Możesz wypróbować różnicę z kopii githuba do aktualnej kopii, ponieważ zmiana dotyczy wprowadzonych zmian.


Jeśli korzystasz z IDE, poszukaj globalnego ciągu znaków. Tego rodzaju "błędy" mogą być kłopotliwe.

+0

Używam Notepad ++ ... Nie sądzę, że ma taką funkcję, ponieważ jest to po prostu rozszerzony Notatnik, jak sugeruje nazwa. – unrelativity

+0

Notepad ++ nie ma problemów z poszukiwaniem pavium

+0

Próbowałem ręcznie wyszukiwać dla w kilku plikach, zanim się poddałem. Jeśli chodzi o repozytorium git, jest ono aktualne. – unrelativity

0

Wygląda na to, że grep byłby przydatny, jeśli możesz go użyć albo przez cygwin, albo bezpośrednio w Linuksie. Szybki przykład znajdowania plików z tym komentarzem HTML

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

To powinno zawęzić wyszukiwanie.

+0

Niestety używam systemu Windows. Jeśli chodzi o Cygwin, cóż, kiedy ostatnio próbowałem go zainstalować, wpatrywałem się w rozmiar pobierania i poddałem się. To było rok czy dwa lata temu. – unrelativity

+0

No cóż, pomyślałem, że może tak być, ale pomyślałem, że i tak go wyrzucę. –

+0

Prawdopodobnie nie jest to najprostszy sposób, ale możesz dostać konto na http://silenceisdefeat.com/ (darmowy Unix), przesłać swój plik za pomocą SFTP z czymś podobnym do Filezilli, następnie połączyć się z nim za pomocą Putty i uruchomić polecenie podane powyżej: D –

3

Znalazłem winnego.

W pewnym sensie kludge, które mam w funkcji ukrywania błędu MySQL, powoduje tylko problemy w jednym z moich oddziałów, nawet jeśli funkcja i miejsce jej wywołania nie zmieniły się między tymi dwoma gałęziami.

Dla zainteresowanych, kod w pytaniu:

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

To naprawdę zabawne. Lubię też, jak isexistinguser wygląda jak gaśnica i ... pewnie już wiesz, jak wygląda $ hit. :) – Kevin

+1

'$ hit' wygląda jak ...? – unrelativity

+3

Fizyczny wygląd $ hit może się różnić w zależności od fabryki $ hit, lub parametrów przekazanych do fabryki $ hit przed wykonaniem zadania, aby utworzyć $ hit. Najczęściej zwykle ma on stały element Color ColorSaddleBrown i ma nieprzyjemny zapach. – snicker

0

O swojej obsługi błędów. Pierwszym sposobem radzenia sobie z tym problemem jest zdefiniowanie i używanie własnych procedur obsługi zamiast php domyślnych z set_error_handler.

Jako prosty fix, modyfikować tę linię: $result = mysql_query("SELECT * FROM users WHERE user_username = '$uname'"); z czymś takim:

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

W tym celu polecam sprawdzić PDO korzystać z baz danych.

+0

Właściwie, znalazłem błąd pochodzący z czegoś zupełnie innego, a ja próbuję teraz dowiedzieć się, co powoduje * ten problem * - http://stackoverflow.com/questions/1845587/how-come-my-php-sessions -przyprowadzanie po powierzchni – unrelativity

0

bym szukał 'zła' ciąg:

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