Php İle İlgili Sorularım Birikti
-
abiler kardeşler ablalar selamlar olsun :D bir kaç sorum var şimdi listelemek gerekirse
1-) php ile pdo kullanmıyorum norma mysql kullanıp bağlanıyorum ileride sistem yoğun olursa bu durm performansı çok etkilermi .
2-) <?php ?> tagını bir sayfa içinde birden fazla açarsak bu performansa etksi olurmu yani yani =
<?PHP $calistir = mysql_query("SELECT * FROM account.news ORDER BY id DESC limit 4") or die("Hata oluştu muhtemelen sunucuda bakım var!"); while($oku=mysql_fetch_assoc($calistir)) { ?> <div id="haberler"> <div id="page_content_top"> <div class="title_top"><center> <?PHP echo $oku['titel']; ?></center></div> </div> <div id="page_content_mid"><p><center><?PHP echo $oku['inhalt']; ?></center></p> <div id="required" style="margin-left: 50px; display: none;"> </div> </div> <div id="page_content_bottom"><br> <br> </div><div id="haberler"><p> </p> </div></div> <?PHP } ?>
genelde listelemeleri bu sekil yapıyorum yani while döngüsünden sonra geri kalanı echo icinde yazdırsam tek bir <?php?> tagı içinde işi halletmiş olucam aslında bu olay ilerde performansa etki edermi.
3-) mysql_escape_string(); fonksiyonu sql inj olayı için nekadar yararlı bypass edilebildiğini duymuştum onun için ekstra güvenlik olarak ne gibi fonksiyonlar önerirsiniz.
4-) bir sayfamız var bu sayfamızda işte makale ekleniyorum aciklama kısmında js ile text editor kullanıyorum doğal olarak aciklamadan gelen verileri html filitresinden ve mysql_escape_string fonksiyonunda geçirmiyorum geçirirsem text editor bir işe yaramaz gibime geliyor . şimdi peki en onemlisine geldik siteye uye olup giriş yapan biri makale ekleme sayfasını farklı kaydet diyip bunu açıp text editoru kaldırıp istediği html kodunu gönderebilirmi yoksa bunun için bir önlem lazımmı :)
5-) kafamı en cok kurcalayan bir sorudaha makale eklerken text editor kullanıyoruz dogal olarak veritabanına o alanı html kodlarıyla yolluyor mesele aciklama stununda <strong>internetin faydaları</strong> gibi kaydediyor ben tahribatın döküman bölümünde böküman okurken mesela cok uzun dokuman oldumu bu okuduğum yazı sayfalandırılıyor ya onu nasıl yaparım yani eger açıklama kısmı belirli sayıdan fazla cumle iceriyorsa ilk sayfada belirli sayıda açıklama yazıcak ikinci sayfada belirli sayıda yazıcak bunu nasıl yapabilir php ile normal sayfalama yapabiliyorum konu listelerken ama bunu beceremedim :D ve listeleme işleminde html kodlarıda cümle içinde sayılırmı
şimdiden allah razı olsun cevaplarınız için :)
-
mysql_query, mysql_connect gibi eski nesil, güvenlik sorunları olan ve deprecated fonksiyonlarını kullanma. mysql_real_escape string yeterince güvenli değil. Yakında bu fonksiyonlar php'den kaldırılacak, hatta kaldırıldı. Senin yaptığın classic asp öğrenmek kadar gereksiz. Bak php.net de ne yazıyor;
mysql_query — Send a MySQL query
Warning This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
Description ¶
Gidiyorsun direk PDO öğreniyorsun. prepared sql statements kullanarak ve parametreleri Bind ederek kullanıyorsun sql inj ataklarından tamamiyle kurtuluyorsun.
4-)Strip_tags veya html_purifier a bakacaksın
5-)stringdeki karakter sayısını hesap et belirli sayının üstündeyse 2. sayfa oluştur. Ne dediğimi anlamadıysan biraz daha php de ilerlemende fayda var.
DrKill tarafından 17/Eyl/14 17:03 tarihinde düzenlenmiştir -
kendimce cevaplayayım:
1- uyumluluk açısından artık mysqli veya pdo kullanılması tavsiye ediliyor, performans açısından bilmiyorum
2- çalışma performansına bir şey diyemem ama html kodlarını echo etmemek tavsiye ediliyor :D senin koda bir de şöyle bak:
<?php $calistir = mysql_query("SELECT * FROM account.news ORDER BY id DESC limit 4") or die("Hata oluştu muhtemelen sunucuda bakım var!"); while($oku=mysql_fetch_assoc($calistir)): ?> <div id="haberler"> <div id="page_content_top"> <div class="title_top" style="text-align: center"> <?=$oku['titel']?> </div> </div> <div id="page_content_mid" style="text-align: center"> <p><?=$oku['inhalt']?></p> <div id="required" style="margin-left: 50px; display: none;"> </div> </div> <div id="page_content_bottom"> <br> <br> </div> <div id="haberler"> <p></p> </div> </div> <?php endwhile; ?>
3- htmlentities() ve htmlspeacialchars() fonksiyonlarını da inceleyebilirsin.
http://php.net/manual/tr/function.htmlspecialchars.phphttp://php.net/manual/tr/function.htmlentities.php
4- kullanıcı istediğini gönderebilir, kesinlikle js ile yapılan doğruluğa güvenme ve post edilen veriyi kendin backend'de süzgeçten geçir
5- valla o sayfalama işi sitenin yapısına göre de değişir artık ona kendin bi fantazi oluşturacan
ayrıca ingilizce varsa şu yazıyı okumanı tavsiye ederim:
http://thisinterestsme.com/php-best-practises/
şunu da bence yeni başlayanlar okuyabilir veritabanı veri tipleri ile ilgili: -
DrKill bunu yazdı
mysql_query, mysql_connect gibi eski nesil, güvenlik sorunları olan ve deprecated fonksiyonlarını kullanma. mysql_real_escape string yeterince güvenli değil. Yakında bu fonksiyonlar php'den kaldırılacak, hatta kaldırıldı. Senin yaptığın classic asp öğrenmek kadar gereksiz. Bak php.net de ne yazıyor;
mysql_query — Send a MySQL query
Warning This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
Description ¶
Gidiyorsun direk PDO öğreniyorsun. prepared sql statements kullanarak ve parametreleri Bind ederek kullanıyorsun sql inj ataklarından tamamiyle kurtuluyorsun.
4-)Strip_tags veya html_purifier a bakacaksın
5-)stringdeki karakter sayısını hesap et belirli sayının üstündeyse 2. sayfa oluştur. Ne dediğimi anlamadıysan biraz daha php de ilerlemende fayda var.
hocam beşte şöyle bir sorun olurmu ben stringdeki karakter sayısını hesap ettim diyelim ama stringdeki değer şöyle =
"<strong>selam</strong>" diye geliyor diyelim ben bunun ilk 14 karakterini 1.sayfaya geri kalan 2. sayfaya girsin dersem bu sefer ilk sayfada </strong>selam</ yazıcak sadece yani sonucta veri oraya text editorle olusturulup ekleniyor
-
Hocam güvenlik açısından ve gelecek versiyonlara uyumluluk açısından pdo kullanman daha hayırlı olur.
-
1) mysql_ fonksiyonları pdo sınıfından daha performanslı. ama güvenlik ve oop için pdo sınıfını kullanmalısın. zaten yakın zamanda kaldırılacak istesen de kullanamayacaksın.
2) çok çok çok ufak bir etkisi var. 100 kere açıp kapasan milisaniye bile farketmez.
3) filter_var() - prepared statements
4) yazmışlar.
5) neyi sayfalandıracağına bağlı. "pagination with php" şeklinde araştırabilirsin.
--
if bla bla echo ile bu işler yürümüyor. ilerde çok sıkıntı çekersin. yol yakınken alttaki keywordleri iyice araştır.
oop, design patterns, mvc
-
Hybris bunu yazdı
1) mysql_ fonksiyonları pdo sınıfından daha performanslı. ama güvenlik ve oop için pdo sınıfını kullanmalısın. zaten yakın zamanda kaldırılacak istesen de kullanamayacaksın.
2) çok çok çok ufak bir etkisi var. 100 kere açıp kapasan milisaniye bile farketmez.
3) filter_var() - prepared statements
4) yazmışlar.
5) neyi sayfalandıracağına bağlı. "pagination with php" şeklinde araştırabilirsin.
--
if bla bla echo ile bu işler yürümüyor. ilerde çok sıkıntı çekersin. yol yakınken alttaki keywordleri iyice araştır.
oop, design patterns, mvc
işte onu farkettim hocam yani yaklaşık 3 senedir birşey kodlamadım ama phpye cok güzellikler gelmiş ondan buraya sorayım dedim çok teşekkür ederim gercekten
-
Kendi deneyimlerime testlerime göre mysql çok daha hızlı fakat bir milyon eksisi var ve bu eksiklikler yavaşlatıyor misalen kaydedilen satırı bulmak oopta tek değişken normalinde kontrol veya fonksiyon gerekiyo. Oop doğru seçim