• 10-01-2020, 15:27:35
    #1
    Merhaba, PDO ile yeni yazı eklerken içerikte (tek tırnak ve çift tırnak) özel karakter kullanamıyorum. Hatayı nasıl düzeltirim. Teşekkürler


    Kodum bu şekilde:

     if (isset($_POST['yeniyazikle'])){
    
    $yazi_baslik = $_POST["yazi_baslik"];
    $yazi_kategori = $_POST["yazi_kategori"];
    $yazi_etiket = $_POST["yazi_etiket"];
    $yazi_detay = $_POST["yazi_detay"];
    $yazi_tarih = date("d.m.Y H:i:s");
    
    $yeniyazikle=$db->exec("INSERT INTO hk_yazilar SET
    
    yazi_baslik='$yazi_baslik',
    yazi_kategori='$yazi_kategori',
    yazi_etiket='$yazi_etiket',
    yazi_detay='$yazi_detay',
    yazi_tarih='$yazi_tarih' ");
    
    
    if ($yeniyazikle){
    
    echo 'tamam';
    
    }else{
    
    echo 'hata';
    
    }
    }
  • 10-01-2020, 15:30:25
    #2
    https://www.php.net/manual/tr/function.addslashes.php
    hocam bunu kullanabilirsiniz
  • 10-01-2020, 15:31:41
    #3
    efsungokmen adlı üyeden alıntı: mesajı görüntüle
    Örnek yapabilirmisiniz lütfen
  • 10-01-2020, 15:36:53
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Exec ile bu işlemi yapmak yerine prepare kullanabilirsiniz.

    $yazi_baslik = $_POST["yazi_baslik"];
    $yazi_kategori = $_POST["yazi_kategori"];
    $yazi_etiket = $_POST["yazi_etiket"];
    $yazi_detay = $_POST["yazi_detay"];
    $yazi_tarih = date("d.m.Y H:i:s");
    
    $query = $db->prepare("INSERT INTO hk_yazilar SET
    yazi_baslik = :baslik,
    yazi_kategori = :kategori,
    yazi_etiket = :etiket,
    yazi_detay = :detay,
    yazi_tarih = :tarih");
    
    $insert = $query->execute(array(
    "baslik" => $yazi_baslik,
    "kategori" => $yazi_kategori,
    "etiket" => $yazi_etiket,
    "detay" => $yazi_detay,
    "tarih" => $yazi_tarih
    ));
    
    if ( $insert ){
    echo 'tamam';
    }else{
        echo 'hata';
    }
  • 10-01-2020, 16:23:03
    #5
    grafiemo adlı üyeden alıntı: mesajı görüntüle
    Exec ile bu işlemi yapmak yerine prepare kullanabilirsiniz.

    $yazi_baslik = $_POST["yazi_baslik"];
    $yazi_kategori = $_POST["yazi_kategori"];
    $yazi_etiket = $_POST["yazi_etiket"];
    $yazi_detay = $_POST["yazi_detay"];
    $yazi_tarih = date("d.m.Y H:i:s");
    
    $query = $db->prepare("INSERT INTO hk_yazilar SET
    yazi_baslik = :baslik,
    yazi_kategori = :kategori,
    yazi_etiket = :etiket,
    yazi_detay = :detay,
    yazi_tarih = :tarih");
    
    $insert = $query->execute(array(
    "baslik" => $yazi_baslik,
    "kategori" => $yazi_kategori,
    "etiket" => $yazi_etiket,
    "detay" => $yazi_detay,
    "tarih" => $yazi_tarih
    ));
    
    if ( $insert ){
    echo 'tamam';
    }else{
        echo 'hata';
    }
    olmadı
  • 10-01-2020, 20:31:46
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Hocam prepared statement'ın mantığı hiç böyle değil. Bu sorguda SQL Injection açığı vardır. Birileri yetkisizce SQL kodlarını çalıştırabilir ve şifrelerinizi çalabilir ya da tüm veritabanını silebilir. Gelelim koda;
    $yeniyazikle=$db->prepare("INSERT INTO hk_yazilar SET
    yazi_baslik=?,
    yazi_kategori=?,
    yazi_etiket=?,
    yazi_detay=?,
    yazi_tarih=? ");
    $sonuc = $yeniyaziekle->execute([
       $yazi_baslik,
       $yazi_kategori,
       $yazi_etiket,
       $yazi_detay,
       $yazi_tarih
    ]);
    if($sonuc)
       echo "eklendi";
    else
       var_dump($sonuc);