Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

textarea da alt satıra geçme ve güvenlik

Konu, 'PHP' kısmında 2de1 tarafından paylaşıldı.

  1. 2de1

    2de1 Daimi Üye

    Kayıt:
    22 Kasım 2008
    Mesajlar:
    792
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    localhost
    PHP:
    $ekleyen mysql_real_escape_string(@$_POST['ekleyen']);
    $ekleyenmail mysql_real_escape_string(@$_POST['mail']);
    $sarkiadi mysql_real_escape_string(@$_POST['sarkiadi']);
    $sarkiciadi mysql_real_escape_string(@$_POST['sarkiciadi']);
    $soz mysql_real_escape_string(@$_POST['soz']);

    $ekleyen htmlspecialchars(@$_POST['ekleyen']);
    $ekleyenmail htmlspecialchars(@$_POST['mail']);
    $sarkiadi htmlspecialchars(@$_POST['sarkiadi']);
    $sarkiciadi htmlspecialchars(@$_POST['sarkiciadi']);
    $soz htmlspecialchars(@$_POST['soz']);
    ilk sorum verileri yukardaki gibi filtreliyorum. Sizce güvenli mi , kullanmam gereken ek bir fonksiyon var mı ?

    ikincisi textarea ya eklenen

    gibi bir veriyi ekrana bastığımda

    böyle bir görüntü alıyorum bu alt satıra geçme sorununu nasıl halledebilirm ?

    şmdiden teşekkürler arkadaşlar :)
     
  2. BitaMig

    BitaMig Daimi Üye

    Kayıt:
    23 Mart 2008
    Mesajlar:
    1,244
    Beğenilen Mesajlar:
    2
    Meslek:
    MIS / BI
    Şehir:
    ISTANBUL
  3. Ferhat Ozdemir

    Ferhat Ozdemir Daimi Üye

    Kayıt:
    14 Nisan 2006
    Mesajlar:
    3,265
    Beğenilen Mesajlar:
    1
    Meslek:
    Elektronik, Bilgisayar
    Şehir:
    Texas
    Güvenlik icin bu şekilde kullanabilirsin. Ama XSS yi de unutmamak gerek.
    Ayrica @ neden kullaniyorsun ve neden iki defa post verisi aliyorsun ? tek defada iki fonksiyondan da gecirebilirsin?

    satir sorununa gelince
    PHP:
    $soz nl2br($soz);
    fonksiyonu ile satir sorununu halledebilirsin.

    @BitaMig kardeşim ben mesaj yazarken mesajın yoktu ondan tekrarladim :)
     
  4. 2de1

    2de1 Daimi Üye

    Kayıt:
    22 Kasım 2008
    Mesajlar:
    792
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    localhost
    @BitaMig,
    nl2br denemiştim ama olmamıştı.tekrar deniyorum..

    @BlueNight,

    '@' kullanmamın sebebi sayfaya $_POST daki değişkenler yoksa hata vermesin diye. 2 dafa post verisi almamın bi mantığı yok haklısın :D copy/paste yapmışım .farketmemiştim bunu saol :D
     
  5. 2de1

    2de1 Daimi Üye

    Kayıt:
    22 Kasım 2008
    Mesajlar:
    792
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    localhost
    veri tabanına kaydederken

    PHP:
    $ekleyen htmlspecialchars(mysql_real_escape_string(@$_POST['ekleyen']));
    $ekleyenmail htmlspecialchars(mysql_real_escape_string(@$_POST['mail']));
    $sarkiadi htmlspecialchars(mysql_real_escape_string(@$_POST['sarkiadi']));
    $sarkiciadi htmlspecialchars(mysql_real_escape_string(@$_POST['sarkiciadi']));
    $soz htmlspecialchars(mysql_real_escape_string(@$_POST['soz']));


    $ekleyen =strip_tags($ekleyen,"<br><p><i><b><u>");
    $ekleyenmail strip_tags($ekleyenmail,"<br><p><i><b><u>");
    $sarkiadi strip_tags($sarkiadi,"<br><p><i><b><u>");
    $sarkiciadi strip_tags($sarkiciadi,"<br><p><i><b><u>");
    $soz strip_tags($soz,"<br><p><i><b><u>");

    veriyi gösterirken de böyle yapıyorum
    PHP:
    $sarki['soz']= nl2br($sarki['soz']); 

    ama hala sorun devam ediyor :garip:
     
  6. Ferhat Ozdemir

    Ferhat Ozdemir Daimi Üye

    Kayıt:
    14 Nisan 2006
    Mesajlar:
    3,265
    Beğenilen Mesajlar:
    1
    Meslek:
    Elektronik, Bilgisayar
    Şehir:
    Texas
    @ işaretinin işlevini biliyorum. Benim demek istedigim kullanman gereksiz.
    Onun yerine daha mantikli kod kullanabilirsin.

    nl2br fonksiyonu işini fazlasiyla gorur. Sanirim sen ekrana yazdirirken filtre kullaniyorsan ondan sorun olabilir.
    hic bir filtreleme kullanmadan dene. Sonucu goreceksin.
     
  7. Alone

    Alone Üye

    Kayıt:
    29 Ağustos 2007
    Mesajlar:
    241
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    - inönü -
    POST'taki değişkenler yoksa hatayı saklamak yerine uyarı verebilirsin. Daha mantıklı bir yaklaşım olur :)
     
  8. sdemirkeser

    sdemirkeser Daimi Üye

    Kayıt:
    28 Ağustos 2008
    Mesajlar:
    2,320
    Beğenilen Mesajlar:
    0
    yanyana harf yapiyorsa aaaaa gibi ifadede wordwrap kullanabilirsiniz. ama onun yerine bir div koyup overflow vermek daha mantikli
     
  9. 2de1

    2de1 Daimi Üye

    Kayıt:
    22 Kasım 2008
    Mesajlar:
    792
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    localhost
    @BlueNight,
    sarkıyı gösterirken herhangi bir filtre uygulamıyorum.

    @Alone,
    hem @ kullanmışım hem de uyarı vermişim. bi scriptte ikisine yer yoktu ve @'leri kaldırdım :D

    @sdemirkeser,
    hocam tam anlayamadım dediğinizi
     
  10. sdemirkeser

    sdemirkeser Daimi Üye

    Kayıt:
    28 Ağustos 2008
    Mesajlar:
    2,320
    Beğenilen Mesajlar:
    0
  11. Alone

    Alone Üye

    Kayıt:
    29 Ağustos 2007
    Mesajlar:
    241
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    - inönü -
    Ayrıca şu her değişkene mysql_real_escape_string vb komutlar uygulamak yerine bu bir fonksiyon yardımı ile yapabilirsin.

    PHP:
    function temizle($veri)
    {
        
    $veri mysql_real_escape_string($veri);
        
    $veri htmlspecialchars($veri);
        
    $veri strip_tags($veri'<br><p><i><b><u>');
        return 
    $veri;
    }

    // Kullanımı aşağıdaki gibidir

    $isim temizle($_POST['isim']);

    gibi, hata varsa üstadlar düzeltsin lütfen :)
     
  12. 2de1

    2de1 Daimi Üye

    Kayıt:
    22 Kasım 2008
    Mesajlar:
    792
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    localhost
    abi iyileştirmeler sorun değil de şu textarea sorununu niye halledemiyorum anlamadım :)
     
  13. Alone

    Alone Üye

    Kayıt:
    29 Ağustos 2007
    Mesajlar:
    241
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    - inönü -
    Tam olarak kodları yazarsan bakarız aslında böyle senin kodlarını görmeden zor işimiz.
     
  14. 2de1

    2de1 Daimi Üye

    Kayıt:
    22 Kasım 2008
    Mesajlar:
    792
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    localhost
    şarkıyı gösterdiğim fonksiyon

    PHP:
    function sarkigoster($gelensarki){
    $sarkimiz['soz']= nl2br($sarkimiz['soz']);  
    echo 
    '<a href="javascript:history.go(-1)"><-Geri Don</a> ';
    $secilensarki=mysql_query("select * from icerik where ID=$gelensarki ");
    while(
    $sarkimiz=mysql_fetch_assoc($secilensarki)){
    echo 
    "<div><b>Sarki Adi : </b> ".$sarkimiz['baslik']."</div><br>
    <div><b>Sarkici Adi : </b>"
    .$sarkimiz['sanatci']."</div>
    <br><div><center><b><u>Sarkinin Sozleri</u></b><br><br><br>"
    .$sarkimiz['soz']."</div><br>";
    }
    }
    post dan gelen verileri yukardaki fonksiyonlardan geçiriyorum

    ve kayıt yaptığım query

    PHP:
    $ekleme=mysql_query("insert into icerik (baslik,soz,sanatci,ekleyen,tarih,ip,mail ) values ('$sarkiadi', '$soz','$sarkiciadi','$ekleyen','$tarih','$ip','$ekleyenmail')");
    EDİT: Başka kodlara ihtiyac varsa koyabilirm :)
     
  15. sdemirkeser

    sdemirkeser Daimi Üye

    Kayıt:
    28 Ağustos 2008
    Mesajlar:
    2,320
    Beğenilen Mesajlar:
    0
    menuelden verdigim linke baktiniz mi?
     
  16. goodmen_ulvi

    goodmen_ulvi Aktif Üye

    Kayıt:
    1 Nisan 2007
    Mesajlar:
    338
    Beğenilen Mesajlar:
    0
    Şehir:
    Yersiz.
    normalde nl2br ile çalışması lazım. baktın olmuyor. ben sana en son çareyi söleyim. veriyi veritabanına kaydederken str_replace(); fonksiyonu ile \r ya da \n olan içeriklere <br /> attır
     
  17. Caos

    Caos Üye

    Kayıt:
    4 Mart 2008
    Mesajlar:
    125
    Beğenilen Mesajlar:
    0
    Kod:
    function mynl2br($text) { 
       return strtr($text, array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />')); 
    }
     
  18. 2de1

    2de1 Daimi Üye

    Kayıt:
    22 Kasım 2008
    Mesajlar:
    792
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    localhost
    @sdemirkeser,
    abi baktım ama pek kafama yatmadı.

    @goodmen_ulvi ve Caos
    replace etmeyi de denedim olmadı.


    B|U|i tagları olan bi editör kullanmayı düşünüyorum ? bildiğiniz bir editör var mı böyle ?
     
  19. sdemirkeser

    sdemirkeser Daimi Üye

    Kayıt:
    28 Ağustos 2008
    Mesajlar:
    2,320
    Beğenilen Mesajlar:
    0
    textareanin word wrap özelligi ile yada php wordwrap ile yapmaniz gerekiyor. ortada karakter yok ki replace edesiniz. karakterler yan yana geldigi için tek satirda gosteriyor doğal olarak
     
  20. 2de1

    2de1 Daimi Üye

    Kayıt:
    22 Kasım 2008
    Mesajlar:
    792
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğrenci
    Şehir:
    localhost
    evet aslında. myadminden bakıyorum kayıtlara \n , \r gibi karakterler yok . bu yzden replace etmenin de bi anlamı yok.
    word wrap özelliğinde belli bi genişlik verip ordan sonrasını alt satıra geçiyoruz anladığım kadarıyla ama bu bana uygun gelmedi. çünkü bi cümleyi yarıda kesebilir word wrap. yanlışım varsa düzeltin