PDO ile MySQL'e php kodu eklerken hata
6
●535
- 06-07-2019, 15:19:21Üyeliği durduruldu
- 06-07-2019, 15:33:08ystr adlı üyeden alıntı: mesajı görüntüle
Çok teşekkür ederim de bunu nasıl entegre edebilirim.
<div class="form-group"> <?php $text=htmlspecialchars($text_from_DB,ENT_QUOTES,'UTF-8',false); ?> <textarea name="konu_kod" value="<?=$text?>" rows="8" cols="80" style="width: 100%;color: #f92447;"></textarea> </div>
bu şekilde de işe yaramadı. PDO da kod olarak olduğu için izin vermiyor galiba. PDO ya nasıl uyarlayabilirim - 06-07-2019, 15:35:59Üyeliği durdurulduHocam anlayamadım tam ne demek istediğinizi de, özel karakterleri veritabanında saklamak istiyorsanız;hkasistan adlı üyeden alıntı: mesajı görüntüle
https://www.w3schools.com/php/func_s...mlentities.asp
Bunu kullanabilirsiniz. - 06-07-2019, 22:44:23Öncelikle kontrol etmeniz gereken şey sorun yazdırırken mi ortaya çıkıyor yoksa kaydederken mi ? Bunu anlamak için veritabanınızı kontrol edebilirsiniz. Eğer sorun kaydederken ortaya çıkıyor ise öncelikle veritabanına insert ettiğiniz metni bir fonksiyonun içerisinden geçirip geçirmediğinizi kontrol edin. Kullandığınız fonksiyon metni bozuyor olabilir. Eğer sorun yazdırırken ortaya çıkıyor ise bu sefer yapmanız gereken htmlspecialchars fonksiyonundan geçirmek ki siz bunu yapmışsınız. Sorun muhtemelen kaydederken ortaya çıkıyor. Kaydederken kullandığınız kodları paylaşırsanız daha kolay yardımcı olabiliriz.
- 08-07-2019, 16:31:25ystr adlı üyeden alıntı: mesajı görüntüleKaydederken hata alıyorum. div ekliyo mesela ama php tagında ki soru işaretinden felan bile kabul etmiyor sanırım özel karakterleri de kaydetmek gibi yada özel kod girme izni gibi bişeye izin sağlamamız gerekiyor sanırım.magicphp adlı üyeden alıntı: mesajı görüntüle
if (isset($_POST['konuekle'])){ date_default_timezone_set('Europe/Istanbul'); $konu_baslik = $_POST["konu_baslik"]; $konu_kategoriID = $_POST["konu_kategoriID"]; $konu_kod = $_POST["konu_kod"]; $konu_aciklama = $_POST["konu_aciklama"]; $konu_sayac = "0"; $konu_tarih = date("d.m.Y-H:i"); $konuekle=$db->exec("INSERT INTO konular SET konu_baslik='$konu_baslik', konu_kategoriID='$konu_kategoriID', konu_kod='$konu_kod', konu_aciklama='$konu_aciklama', konu_sayac='$konu_sayac', konu_tarih='$konu_tarih'"); if ($konuekle){ echo '<script type="text/javascript">alert("Yeni Konu Eklendi");</script> <meta http-equiv="refresh" content="0;URL=panel.php" />'; }else{ echo '<script type="text/javascript">alert("HATA! Tekrar Deneyin!");</script> <meta http-equiv="refresh" content="0;URL=konu-ekle.php" />'; } } - 08-07-2019, 20:50:43PDO kullanmanızın bir anlamı kalmamış. Bu tarz kullanıcıdan aldığınız verileri SQL sorgusu içerisinde kullandığınız zaman exec fonksiyonu yerine prepare fonksiyonunu kullanın. Örneğinhkasistan adlı üyeden alıntı: mesajı görüntüle
// Hatalı ve SQL Injection açığına sahip kod $kategori = $_POST["kategori"]; $db->exec("SELECT * FROM konular WHERE konu_kategori = ' " . $kategori . " ' "); // Düzeltilmiş hali $kategori = $_POST["kategori"]; $sorgu=$db->prepare("SELECT * FROM konular WHERE konu_kategori = ?"); $sorgu->execute([$kategori]);Şimdi kodunuzu düzeltelim.
if (isset($_POST['konuekle'])){ date_default_timezone_set('Europe/Istanbul'); $konu_baslik = $_POST["konu_baslik"]; $konu_kategoriID = $_POST["konu_kategoriID"]; $konu_kod = $_POST["konu_kod"]; $konu_aciklama = $_POST["konu_aciklama"]; $konu_sayac = "0"; $konu_tarih = date("d.m.Y-H:i"); $sorgu=$db->prepare("INSERT INTO konular SET konu_baslik=?, konu_kategoriID=?, konu_kod=?, konu_aciklama=?, konu_sayac=?, konu_tarih=?"); $konuekle=$sorgu->execute([$konu_baslik,$konu_kategoriID,$konu_kod,$konu_aciklama,$konu_sayac,$konu_tarih]); if ($konuekle){ echo '<script type="text/javascript">alert("Yeni Konu Eklendi");</script> <meta http-equiv="refresh" content="0;URL=panel.php" />'; }else{ echo '<script type="text/javascript">alert("HATA! Tekrar Deneyin!");</script> <meta http-equiv="refresh" content="0;URL=konu-ekle.php" />'; } }lütfen devam etmeden önce bu kaynağı okuyun: http://www.erbilen.net/pdo-kullanimi/