- Bir eksik daha cevapladığım soruyu daha sonra düzenleyemiyorum yanlış bir değer yazdığın da öylece kalıyor düzenleyebilirsek sorunsuz bir yazım olmuş olur.
- Soruyu soran kişi cevaplar arasında doğru cevabı işaretler ise ve bu işaretlenen cevap yorumlar da en üste sabitlenir ise çözüme yönelik sorular ortaya çıkar.
- Üstteki maddeye ek olarak birde ziyaretçilerin soruya verilen cevaplara puan verebilmeleri olabilir ben sorun yaşadığım da stackoverflow da çözüm arıyorum bazen işaretlenen cevap doğru cevap olmayabiliyor alternatif cevaplara bakıyorum ve arasından doğru cevap olanlar oluyor.
- Yanlışlık ile soruya cevap verirken bir yere tıkladım ve geri döndüğüm de yazdığım her şey silinmişti. Forumlarda kullanılan form içine yazılan değerleri cache'de tutabilirsin bu eğer olurda yanlışlık ile bir yere tıkladığın da onca yazlan şeyi tekrar yazmak zorunda bırakmaz insanları ki sırf bu yüzden soruyu yanıtlamaktan bile vazgeçebiliyor insan.
Merhaba,
Soru biraz eksik kalmış anlamam için yardımcı ol lütfen. Şimdi sormak istediğin şey bir Müşteri tablon bulunuyor.
Bu tablo üzerinde musteri_tutar,musteri_durum
olarak 2 adet konu ile alakalı sütün bulunuyor bu sütünların musteri_durum
olanı 0
veya 1
şeklinde ödendi, ödenmedi gibi değer tutuyor.
Bu anladığım kadarı anlamadığım kısım ise musteri_tutar
kısmı şimdi eğer musteri_durum
alanında ödendi ve ödenmedi diye değer tutacaksan ödenen tutarı da tutacak bir sütün oluşturman gerekir yada ayrı bir tablo yaparak bunu ayrıştırman gerekir.
Soruya yazdığın örnek üzerinden bir çözüm sunayım.
<?php
// İlk olarak sorgu da select ile sadece musteri_tutarını değil müsteri durumunuda alacaksın
$Fiyat=$db->prepare("SELECT SUM(musteri_tutar) AS sayi,musteri_durum FROM musteri");
$Fiyat->execute();
$FiyatYaz= $Fiyat->fetch(PDO::FETCH_ASSOC);
// daha sonra
if ($FiyatYaz['musteri_durum'] == 1) {
echo echo "Ödenen Toplam Para: ".$FiyatYaz['sayi']." TL";
}else {
echo "Ödenmeyen Toplam Para: ".$FiyatYaz['sayi']." TL";
}
Bu şekilde bunu dediğim gibi gösterdiğin örneğe göre sunuyorum eğer istediğin bu ise bu şekilde yapabilirsin.
merhaba
Altta verdiğim fonksiyonu kullanarak bu tür dışardan girilen kodları önleyebilirsin daha önce bu konudan dolayı müzdarip olduğum için zamanında böyle bir fonksiyon hazırlamıştım.
form üzerinden gelen içerik yazısını bu bug_crusher
fonksiyonundan geçirir isen benim standart olarak izin verdiğim zararsız bir kaç html koda izin verir ve onclick
gibi kodları da her bir yazıyı filtreden geçirerek temizlemiş olursun.
Fonksiyonu kullanırken benim standart olarak ayarladığım kelimeler yetersiz gelir ise 2 inci bir argüman olarak istediğin filtreleri girerek sadece o kodlara izin verebilirsin.
function bug_crusher($text,$filter = null){
if (!$filter) {
$filter = '<p><a><span><strong><u><img><div><code><b><i><h1><h2><h3><h4><h5><h6><h7><em><s><blockquote><iframe><embed></embed><pre></pre><address><kbd><small><ul><li><ol><sub><sup><table><tr><td><th><tbody><thead>';
}
$text = strip_tags(htmlspecialchars_decode(stripcslashes($text)), $filter);
$text = preg_replace('/([onON]+)([a-zA-Z]+)(\s+|)=(\s+|)(["\']+)(.*?)(["\']+)/','', $text);
return htmlspecialchars(trim($text));
}
Örnek bir kullanım;
<?php
$icerik = '
<a href="#" onclick="alert(\'Tıkladın\');">Tıkla Bakalım</a>
<script>alert("2 inci kod girdisi");</script>
<p>Masum bir paragraf</p>
';
function bug_crusher($text,$filter = null){
if (!$filter) {
$filter = '<p><a><span><strong><u><img><div><code><b><i><h1><h2><h3><h4><h5><h6><h7><em><s><blockquote><iframe><embed></embed><pre></pre><address><kbd><small><ul><li><ol><sub><sup><table><tr><td><th><tbody><thead>';
}
$text = strip_tags(htmlspecialchars_decode(stripcslashes($text)), $filter);
$text = preg_replace('/([onON]+)([a-zA-Z]+)(\s+|)=(\s+|)(["\']+)(.*?)(["\']+)/','', $text);
return htmlspecialchars(trim($text));
}
// Standart Kullanım
echo bug_crusher($icerik);
# Çıktı
# <a href="#" >Tıkla Bakalım</a>
#<p>Masum bir paragraf</p>
// Özelleştirilmiş Kullanım - Script koduna izin verme
echo bug_crusher($icerik,'<p><script><a>');
# Çıktı
# <a href="#" >Tıkla Bakalım</a>
#<script>alert("2 inci kod girdisi");</script>
#<p>Masum bir paragraf</p>
?>
Kullanımı gayet basit ve açık onclick
değeri isterse OnCliCk
gibi yazsın fark etmez filtre yakalayıp silecektir.