Bir haydut bulma

5 Cevap php

Bu: <!---->

Bu ... Bu ... şey. Tam orada.

Tuhaflıklar modunda bu gibi üst onunla tüm sayfaları işlemek için IE zorlayarak şer 7 karakterleri:

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

O kötülük değilse ben o ilk birkaç satır olduğundan kesinlikle, benim şablon dosyasında değil, çünkü ne olduğunu bilmiyorum:

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

Ben kesinlikle benim gerçek çıkışının kodunda herhangi bir sorun görmüyorum:

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

Ben gerçekten sadece alamadım. Bu nasıl thing benim koduna alabilir?

Ben sonunda sadece imagine o > bit bir gülümseme dönüşüyor olabilir, ve bir şey laughing bana olduğunu.

Bu, benim kediler öldürür ben sonraki ne olacak bilmiyorum ama öldürecek, rüyalarıma giriyor something.

Web geliştirme bana, siz tanrılar yardım!

EDIT: Sadece bir not, tüm tarayıcılarda görünmüyor, ancak IE balistik ve diğerlerinin hiçbiri sürücü görünüyor.

5 Cevap

Ben suçlu bulundu.

Her nasılsa, ben bir MySQL hatası gizlemek için bir işlevi var bir kludge sadece gelen denir fonksiyonu ve nerede iki kolu arasında değişmemiş olsa bile, benim dallarından birinde sorunları neden oluyor.

İlgilenenler için, söz konusu kod:

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

Ben deftere git repo içine baktı ve içinde yer değildir. Değişiklik yapılan değişiklikler olduğu gibi mevcut kopya github kopyadan bir diff deneyebilirsiniz.


Eğer bir IDE kullanıyorsanız karakter dizesi için küresel bir dosya arama yapın. Bu tür "hata" zahmetli olabilir.

Cygwin aracılığıyla veya doğrudan Linux ya da kullanabilirsiniz eğer, grep kullanışlı olacak bir durum gibi görünüyor. Sadece HTML açıklama ile dosyaları bulma hızlı bir örnek

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

Bu aramayı daraltmak gerekir.

Lütfen hata işleme hakkında. Bunun ile ilgili ilk yolu set_error_handler ile kendi işleyicileri yerine php varsayılan olanları tanımlamak ve kullanmaktır.

As a simple fix, modify this line : $result = mysql_query("SELECT * FROM users WHERE user_username = '$uname'"); with something like that :

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

Bu bitirmek için, sana PDO veritabanları kullanmak için kontrol etmenizi öneririz.

Ben 'kötü' bir dize için baktım olurdu:

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