Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

textarea fazladan satır ekliyor

editör olarak ckeditor kullanıyorum. editöre <pre> tagları arasına kod yazdığım zaten kaydedince veriler veri tabanına fazladan satırlar eklenerek kaydediliyor. aynı şekilde editörsüz bir textareadan da alırken aynı sorun oluşuyor.

Tam anlatamadım ama ekteki resime bakarak ne demek istediğimi anlayacağınızı umuyorum. resimde 3 ayrı resim var.

1.resim kodu editöre yazdığım(kaydet denemeden önce) resim, 2.resim kaydet butonuna basınca veritabanına kaydedilen verinin gösterimi, 3. resim ise sitenin ön yüzünde görünen hali.

Ekli Dosyalar

+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • huseyiniskender adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    47 cevap - 20 soru
    Geçen gün benzer bir durumla bende karşılaştım, fikir vermek açısından izlediğim yol şu oldu:

    a.php > textareanın bulunduğu sayfa.
    b.php > textareadan gelen değerin veritabanına işlendiği sayfa.
    c.php > veritabanındaki verinin ekrana basıldığı sayfa.

    a.php de bulunan textareanın adı deger olsun, veri post metodu ile yollandığında aşağıdaki şekilde alıp vtye kayıt ediyorum.

    function temizle($veri){
    if(!get_magic_quotes_gpc()){ $veri=addslashes($veri); }
    return $veri;
    }
    $deger=temizle(trim($_POST['deger']));
    


    üstteki değer veritabanına kayıt edildiğinde eğer satır boşluğu varsa vtye \r\n şeklinde kayıt oluyor. Bu \r\n kodunun ekrana basacaksan nl2br kullanacaksın böylece \r\n karakteri <br> ye dönüşecek.Texareaya basacaksan nl2br kullanmadan yazdıracaksın böylece php \r\n'i boşluk olarak ifade edecek ve textarea bunu doğru anlayacak.

    Burada 2 durum önemli. Vtdeki veriyi ekrana mı basıcan yoksa textareanın içine mi basıcan.

    Eğer ekrana basacaksan echo nl2br(stripslashes($deger));
    Textareaya basacaksan echo stripslashes($deger);

    Yazdıklarıma dikkat edip uygularsan sorunun büyük ihtimal çözülecektir, çünkü aynısını geçen gün yaşadım bir günüm bunu anlamaya gitti.
  • Alexander adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    29 cevap - 28 soru
    cevaplarınız için teşekkürler arkadaşlar. Dediklerinizi uyguluyorum ama sorun hala devam ediyor. problem pre ile alakalı değilmiş normal textareadan düz yazı giriyorum yine aynı problem oluşuyor.

    Sorun galiba veriyi veri tabanına kaydederken oluşuyor.
    Codeigniter framework kullanıyorum ve kendisi verileri sql injection a karşı filtreliyor.

    Her düzenleme yaptığımda girdiğim yazıya fazladan <br>ekliyor ve sorgu şu hale geliyor.

    asdfasdf\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\n\r\n\nasdfasdf
    


    bir daha düzenle dediğimde yukarıdakine fazladan \n ekliyor böyle böyle her düzenlede yazı uçuyor :D
    • Alexander adlı üyenin fotoğrafı Alexander
      bir de şöyle birşey denedim.

      normal bir php sayfasında textaredan gelen veriyi

      echo nl2br($_POST['veri'])


      düzgün bir şekilde yazdırıyor.

      fakat aynı kodu codeigniter controller dosyasında yazdığımda her defasında bir tane fazladan br ekliyor.
      12 yıl önce yazılmış
    • Lokupz adlı üyenin fotoğrafı Lokupz
      Kodları <br> ile Filtreliyor Demekki
      12 yıl önce yazılmış
    • Alexander adlı üyenin fotoğrafı Alexander
      peki bunu nasıl çözebiliriz. br ile filtrelemesi normal mi yoksa bir açıkmı?
      12 yıl önce yazılmış
    • Alexander adlı üyenin fotoğrafı Alexander
      arkadaşlar sorunu çözdüm. Eğer sizde ci 2.0'a geçtiyseniz ve windows üzerinde çalışıyorsanız aynı sorunla büyük ihtimalle karşılaşacaksınız.

      Çözüm için appliccation->core dizini altına MY_Input.php adında yeni bir dosya oluşturuyoruz ve aşağıdaki kodları yapıştırıyoruz.

      class MY_Input Extends CI_Input
      {
          public function __construct()
          {
              if(PHP_EOL == "\r\n")
              {
                  $this->_standardize_newlines = FALSE;
                  log_message('debug', 'Windows server: standardize newlines disabled.');
              }
              parent::__construct();
          }
      
      }
      
      12 yıl önce yazılmış