php form hataları

6 Cevap php

merhaba im özel hataları ayarlamak çalışıyorum. i bir form var. post.php eylemler i Form i aynı sayfada hataları ayarlamak için gereken hataları post.php gitmek istemiyorum. ben denedim

$sql = "
    INSERT INTO yazilar (baslik, spot, spot_kisa, spot_resim, spot_resim_isim, icerik, kategori, tiklanma, eklemetarihi)
    VALUES
    ('$_POST[baslik]','$_POST[spot]','$_POST[spot_kisa]','$_POST[spot_resim]','$_POST[spot_resim_isim]','$_POST[icerik]','$_POST[kategori]','$_POST[tiklanma]','$_POST[tarih]')
";
$sonuc = mysql_query($sql);

<?
    if ($sonuc) {
        echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
    } 
    if(! $sonuc) {
        echo ("<p class='msg warning'>Ekleme basarisiz oldu.</p>");  
    }
?>

Bu her zaman Yeni icerik basarili bir sekilde eklendi gösterir.

this.

plx bana yardım

6 Cevap

Eğer hataları sadece form sayfanın içine post.php kodu taşımak ve bu gibi durum göndererek şeklinde göstermek için çalışıyorsanız:

<?php
if(isset($_POST['baslik'])) {
  $sql = "
    INSERT INTO yazilar (baslik, spot, spot_kisa, spot_resim, spot_resim_isim, icerik, kategori, tiklanma, eklemetarihi)
    VALUES
    ('$_POST[baslik]','$_POST[spot]','$_POST[spot_kisa]','$_POST[spot_resim]','$_POST[spot_resim_isim]','$_POST[icerik]','$_POST[kategori]','$_POST[tiklanma]','$_POST[tarih]')
";
  $sonuc = mysql_query($sql);

  if ($sonuc) {
    echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
    exit;
  } 
  else {
    $error = "<p class='msg warning'>Ekleme basarisiz oldu.</p>";  
  }
}
?>

// form code here
<?php if(isset($error)) { echo $error; } ?>
// around where you'd like the error to display

Eylemi bir başarı Şimdi eğer başarı mesajı aksi takdirde form konumlandırılmış hata mesajı ile yeniden görüntülenecektir, başka bir şey ile gösterecektir. Ayrıca, SQL enjeksiyon soulmerge adlı bakın lütfen, bu kolayca önlenebilir ciddi bir güvenlik riski bulunuyor.

Sizin sorgu geçerli ve ikinci değil sırayla ilk if "tetikler" olan, bu nedenle MySql_Query() true döndürür, sucsesfully veri ekler, ama.

return values of MySql_Query için belgelerine bakın.

Eğer doğrulama istiyorsanız, bunu yazmak zorunda.

ayrıca: Senin iki ifadeleri birine refactored eğer. if/else sözdizimi bak

değiştirmek

$sonuc = mysql_query($sql);

bununla

$sonuc = mysql_query($sql) or die(mysql_error());

herhangi bir hata var mı?

bu tablo alanları olanları eklemek bu eşleşmiyor mümkündür?

Bu konuda ne yanlış? return values of mysql_query() is a boolen for INSERT queries, which is true operasyon başarılı olsaydı. Eğer (çok uzun bir metin gibi) geçersiz değerleri ekleme denediniz mi? Bu bir uyarı oluşturmak ve yanlış dönmelidir.

Ama çok daha rahatsız kod SQL injection açık olmasıdır. Bu sorunu çözmek için sql injections on php.net nasıl kadar okuyunuz.

Bu deneyin

    $sonuc = mysql_query($sql);

    <?php
       if($sonuc !== false){
          echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
       } else {
          echo ("<p class='msg warning'>Ekleme basarisiz oldu.</p>");     
       }
    ?>

EDIT: Bu sorgu kontrol çalıştı eğer yerine bir çek bir doğrulama gerektiğinde http://www.php-mysql-tutorial.com/wikis/php-tutorial/form-validation-using-php.aspx

Jan Hančič zaten soruyu yanıtladı ama bir yan not olarak gelmiştir:

Bitecek sorguları doğrudan POST verileri kullanmak etmeyin kötü güven bana!