• 06-07-2019, 15:16:46
    #1
    Merhaba, kodlarımı saklayacağım blog tarzında bişey yaparken, php kodu yazdığımda kaydederken hata alıyorum özel karakter vs. eklerken hata vermemesi için ne yapmam lazım. teşekkür ederim
  • 06-07-2019, 15:19:21
    #2
    Üyeliği durduruldu
    html encoding

    https://www.webatic.com/html-entities-convertor
  • 06-07-2019, 15:33:08
    #3
    ystr 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
    #4
    Üyeliği durduruldu
    hkasistan 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
    Hocam anlayamadım tam ne demek istediğinizi de, özel karakterleri veritabanında saklamak istiyorsanız;
    https://www.w3schools.com/php/func_s...mlentities.asp

    Bunu kullanabilirsiniz.
  • 06-07-2019, 22:44:23
    #5
    Ö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:25
    #6
    ystr adlı üyeden alıntı: mesajı görüntüle
    magicphp adlı üyeden alıntı: mesajı görüntüle
    Ö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.
    Kaydederken 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.


    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:43
    #7
    hkasistan adlı üyeden alıntı: mesajı görüntüle
    Kaydederken 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.


    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" />';
    
    }
    
    }
    PDO 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ğin
    // 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/