Nasıl PHP gönderme değil, diğer tarayıcılarda, IE hatasına neden gelir?

5 Cevap php

Ben Firefox ve diğer tarayıcılarda çalışır MySQL aramaları bazı PHP kodu var, ancak IE bunu işlemek için görünmüyor.

<?php include "casti/mysql_connect.php"; 
$result = mysql_query("SELECT * FROM ".$_POST['table']." WHERE id='".$_POST['id']."'");
$row = mysql_fetch_array( $result ); // Line 60 !

echo $row['title'];

?>

Ve burada IE gösterir ne olduğunu ...

Uyarı: mysql_fetch_array(): Verilen argüman hattı 60 / httpd / html / prohuntingcz / www / cms.php geçerli MySQL result resource değildir

Herhangi bir yardım için teşekkür ederiz.

5 Cevap

PHP ve MySQL tamamen tarayıcısından ayrıdır. Büyük olasılıkla orada vb Firefox'tan doğru table ve id değişkenleri gönderir HTML veya JavaScript şey, ama IE yanlış. Bize bu kodu yerine göstermek lütfen.

PHP bu yüzden tarayıcı ile ilgisi sunucu tarafında işlenir. Ne senin soruna neden olabilir onları sunucuya göndermeden önce form alanlarını işler bazı javascript olabilir - bu tarayıcı bağımlı parçası.

Eğer bu hata varken büyük ihtimalle IE eklemek için php kod sonuçlarını önbelleğe tarayıcılar durdurmak için, komut bir önceki sürümünden sayfayı önbelleğe

header("Cache-Control: no-store, no-cache, must-revalidate");

Eğer sonuçları görüntüleniyor konum her php script başına. Ayrıca, yerine bir şey gibi kullanarak ilk önce sterilize gerekir, sadece saldırı size açılır yayınlanmıştır değişken bu gibi bir sql sorgusunda doğrudan kullanılmak üzere izin vermez

$user_table = $_POST['table'];
$user_id = $_POST['id'];

$user_table = mysql_real_escape_string($user_table);
$user_id = mysql_real_escape_string($user_id)

$query = "SELECT * FROM ".$user_table." WHERE id='".$_user_id."'";
echo "<div>The query is: " . htmlentities($query). "</div>";

echo değişken değiştirmelerin sonuçlarını görmek için geri tarayıcıya sorgu ing deneyin - size oldukça hızlı bir şekilde yanlış gitti ne olduğunu görmek gerekir.

<?php include "casti/mysql_connect.php"; 
$query = "SELECT * FROM ".$_POST['table']." WHERE id='".$_POST['id']."'";
echo "<div>The query is: " . htmlentities($query). "</div>";
$result = mysql_query($query);
$row = mysql_fetch_array( $result ); // Line 60 !

echo $row['title'];
?>

bu kod çok hackable olduğunu.

Değiştirmeyi deneyin

$result = mysql_query("SELECT * FROM ".$_POST['table']." WHERE id='".$_POST['id']."'");

karşı

$result = mysql_query("SELECT * FROM " . mysql_real_escape_string($_POST['table']) ." WHERE id='" . mysql_real_escape_string($_POST['id']) . "'");

Ayrıca HTML form elemanları id elemanı için tablo elemanı ve name = "id" için name = "tablo" olduğundan emin olun. Eğer zaten id = "masa" ve id = "id" varsa, o zaman sadece name = "masa" ekleyin ve name = "id" de