sayfa değerini görüntüleyen değil echo

6 Cevap

Ben değerini alma ya da değil ama sayfada bir şey görünmüyor olup olmadığını görmek için "echo $ sorgu" kullandık. Onun'getting ne değer görmek için başka bir yol nedir?

Ben Aptana Studio 2.0 FDT kullanın ama breakpointler mümkün değilim. Içinde oldukça yeni.

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

    $ulName = $_GET['ControlName'];
    $query = $_GET['SqlQuery'];
    echo $query;
    mysql_connect('localhost:3306','pffsddsf','dfsdfsd');
    mysql_select_db('publicdb');
    $result=mysql_query("select * from electioncategorymaster");
?>
<ul id="<?php echo $ulName; ?>" name="<?php echo $ulName; ?>">
<?php while($row=mysql_fetch_array($result))
{ ?>
    <li><?php echo $row[1]; ?></li>
<?php } ?>
</ul>

6 Cevap

Eğer beklediğiniz parametreleri almak, böylece komut ile başlamak olabilir

var_dump($_GET);

Sayfanız gerçekten oluyor ne olduğunu görmek için.

Ben sadece veritabanı sunucusu ve istemci tarayıcısına birebir geçirilen parametreleri kabul no-hayır bir güvenlik olduğunu öğrenen takdir ederken.

$ UlName değişken ayırın - Benim orada seçme HTML enjekte, neden alphanumerics bunu sınırlamak değil ki?

if (preg_match('/[^a-z0-9_]/i',  $ulName)
    die("Invalid ControlName specified");

Bir parametre üzerinden SQL kabul gelince, ben gerçekten yapmak değil ki tamamen uygulamanızın kullanıcı güvenmiyorsanız ....

?SqlQuery=DROP+DATABASE+publicdb

Korkunç değil mi? Şimdi nasıl hem bu kusurları kombine olur? Ben senin sayfa görüntülenen bir bağlantı zanaat, ama bu sorguyu içeren gizli alanları ile bir form gömülü, hangi boyunca "komik kedi videoları için tıklayınız beni" dedi büyük bir düğme olabilir. Şimdi ben sadece orada bağlantısını göndermek ve benim kötü teklifi yapmak için bir başkası için beklemek gerekiyor :)

var_dump($query); (ayrıca rapor edecek / gösteri boş dizeler) deneyin

Lütfen sayfa tamamen boş bir Apache içine bakmak (ya da seçtiğiniz web sunucusu) ise errorlogs de yararlı olabilir.

Bu deneyin:

var_dump($query);
exit;

ve neler olacak bakın.

Bu yararsız gelebilir, ama aynı zamanda kullandığınız bir 'örnek' URL kopyalamak gerekir.

PHP harfe duyarlı (bu dizi anahtarları söz konusu olduğunda), bu yüzden biri için, ben GET parametrelerine gelince aradığınız URL doğru durum kullanarak olup olmadığını kontrol ederim.

Bu basit yöntem herhangi bir değeri göstermek için başarısız olduğunda soru doğal olarak ortaya çıkar: "echo çalışma var mı veya gösterilecek hiçbir değeri yoktur?"

Ben bir süre önce benzer bir şey yaptım, ama yerine kullanımı daha echo, ben kullanılan

printf("[%s]", $query);

Yani görebiliyordu boş [] tarafından döndürülen değer yoktur iken $_GET

İlk: hata günlüğünü etkinleştirmek ve ayrıca bir günlük dosyası için oturum açın.

error_reporting(E_ALL);
ini_set('display_errors','On');

hata günlüğü aşağıdaki yaparak çalışıp çalışmadığını deneyebilirsiniz:

error_log("This Error should be displayed!", 0);

php.net sitede hata işleme ve günlüğü hakkında daha fazla görmek: http://www.php.net/manual/en/book.errorfunc.php