Öncelikle verot net sınıfında yüklenen öğeyi gif olarak kaydete bilirsin ama bunlar hareketli görseller için geçerli değil animasyon içeriğini tarayamadığı için onu normal image olarak alıyor taramadan kastım animasyon kalıbları farklı hepsini tanımlayamaz görsellerdeki gibi işlemiyor verot neti kullanmamızdaki amaçta zaten sadece uzantı kontrolü değiş dosyayı kendi açıp içinde yapının image oldğunu da kontrol ediyor bu yüzden tercih ediyoruz hacklenmek imkansız hale geliyor upload üzerinden. Çözüm olarak direkt olarak uzantıya izin verebilirsin ama ozaman da gif üzerinden shell sokabilirler eğer admin panelinde böyle bir işlemi yapacaksan olabilir ama normal kullanıcı arayüzünde böyle bir şeyi yapacaksan sana önerim tercih etmemen olur onun yerine upload edilmiş bir siteden url olarak eklet gif türünde şeyleri.
ajax yapına contentType: false, cache: false, processData:false dahil et tekrar dene
Php tagını seçtiğin için bir yöntem söylüyorum recursive fonksiyon mantığını kullan sorguyu gönder değer olarak 2 inci parametre de dizi içinde tablo isimleri gir acct_table1, acct_table2 diye 2 parametredeki değer sayısı kadar aynı fonksiyonu döndür her döngü de diğer tablo adını döndür. Örneğin;
function insert_recursive($sorgu,$array = []){
$tabloadi = array_shift($array);
$insertislemi = query('INSERT INTO '.$tabloadi.' '.$sorgu);
if(count($array) > 1){
insert_recursive($sorgu,$array);
}
}
$sorgu = "(acctsessionid, acctuniqueid, username,
realm, nasipaddress, nasportid,
nasporttype, acctstarttime, acctstoptime,
acctsessiontime, acctauthentic, connectinfo_start,
connectinfo_stop, acctinputoctets, acctoutputoctets,
calledstationid, callingstationid, acctterminatecause,
servicetype, framedprotocol, framedipaddress,
acctstartdelay, acctstopdelay, xascendsessionsvrkey)
VALUES
('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}',
'%{SQL-User-Name}',
'%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}',
'%{NAS-Port-Type}', '%S', NULL,
'0', '%{Acct-Authentic}', '%{Connect-Info}',
'', '0', '0',
'%{Called-Station-Id}', '%{Calling-Station-Id}', '',
'%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}',
'%{%{Acct-Delay-Time}:-0}', '0', '%{X-Ascend-Session-Svr-Key}')";
insert_recursive($sorgu,["acct_table1","acct2_table1"]);
Tabi bu örnek basit bir örnek içinde kontrol yok sorgu yerine gelmez ise işlem tamanınca dönecek cevap gibi şeyler yok mantığı anlaman için basit bir örnek verdim.
15 Gün geçmiş üstünden ama ERBİLEN'in dediği gibi bu aslında sende bitiyor şirketler siteleri 80 lira 50 lira ya bile satıyor o mantıkla hareket edersen bir şey kazanamazsın.
Bazıları dediği gibi proje ne olursa olsun 10 binden açıyor fiyatı ben proje ne olursa olsun e-ticaret dışında 1500'den açıyorum istediği her ek sisteme zorluğuna göre 150 ile 500 arası ek fiyat veriyorum.
E-Ticarette 3 binden açıyorum ek sistemlerle fiyatta artıyor bu benim kendi fiyat aralığım.
Eskiden bunu 1500'den e-ticaret 500'den diğer projelere açıyordum.
Ve türkiye de daha uyguna yaptırılıyor inan kişinin adını vermeyeceğim beni r10 üzerinden görüp fiyat aldı ve benle dalga mı geçiyorsun dedi
proje için ona en uygun fiyat olarak 10 bin dolar çekmişler ben proje için 7500tl dediğim de kur ozamanlar 3 tl hesap et nasıl bir fiyat farkı var ve istemişler.
Ne yazık ki, bu tür kullanım mümkün değil. Burayı da inceleyebilirsin
Generated content does not alter the document tree. In particular, it is not fed back to the document language processor (e.g., for reparsing).
Üstte alıntıladığım alan verdiğim linkdeki bir kısımdan yani şunu demek istiyor,
dile bakmaksızın bu özellikler işaret olarak yorumlanmaz.
Örnek olarak, verilen CSS'yi aşağıdaki HTML ile kullandığımız da:
Bu çıktıya neden olur:
```<a href="#top"> Geri Dön </a> Başlık```
Bunun sebebi content içinde girilen değeri sayfa tekrardan yorumlamadığı için girilen değeri direk olarak text olarak görür ve yorumlar.
yapılan işlem yetki sistemine tâbi ise yaptıracağın sayfa da kontrol etmen gerekiyor
GROUP_BY
yazmışım o GROUP BY
olacak direk kopyalama orayı düzeltirsin yorumu düzenle alanı olmadığı için düzenleyemedim.
Direk senin kodunu alıntıladğım için echo echo yazmışsın görmedim büyük ihtimal onun hatasını veriyordur.
şimdi tablo id | musteri_tutar | musteri_durum
bu 3 sütündan oluşuyor ise başta büyük bir yanlışın var kullanıcıları nerde tutuyorsun sorusu çıkıyor ortaya.
Ben yapını söyle düşündüm ona göre söyledim id | musteri_id | musteri_tutar | musteri_durum
bu tablonda müşteri her borç yazdırdığında bir satır ekleniyor diye düşündüm.
Sana önerim şu müşteri durumu iptal et odenen_tutar
diye bir alan yap ödenen tutarı buraya yaz yani yapın şöyle görünecek.
id | musteri_id | musteri_tutar | odenen_tutar |
---|---|---|---|
1 | 1 | 50 | 25 |
2 | 1 | 20 | 10 |
2 | 2 | 40 | 20 |
2 | 3 | 60 | 15 |
yapın eğer böyle olur ise örnek tablo da verdiğim mesela 1
numaralı müşterinin toplam borcu 70 ₺
ödediği toplam borç miktarı ise 35 ₺
Bu mantıkta olmalı ozaman şöyle bir sorgu istediğin sonucu alabilirsin.
SELECT
SUM(musteri_tutar) as toplam_borc,
SUM(odenen_tutar) as toplam_odenen_tutar,
musteri_id
FROM
musteri
GROUP_BY musteri_id
eğer sorgun böyle olur ise bunun çıktısı sana şunu verecek
toplam_borc | toplam_odenen_tutar | musteri_id |
---|---|---|
70 | 35 | 1 |
40 | 20 | 2 |
60 | 15 | 3 |
şeklinde bir çıktı verecektir.
böylelikle hangi müşterinin ne kadar toplam borcu var ve bu borcun ne kadarını ödediğini görebilirsin.
Bunun php'de kullanımı nasıl olacak peki.
<?php
$sorgu = $db->prepare(
'SELECT SUM(musteri_tutar) as toplam_borc,
SUM(odenen_tutar) as toplam_odenen_tutar,
musteri_id
FROM musteri GROUP_BY musteri_id'
);
$sorgu->execute();
$veriler = $sorgu->fetchAll(PDO::FETCH_ASSOC);
foreach($veriler as $sutun){
echo 'Müşteri Numarası: '.$sutun['musteri_id'].PHP_EOL;
echo 'Toplam Tutar: '.$sutun['toplam_borc'].PHP_EOL;
echo 'Ödenen Toplam Tutar: '.$sutun['toplam_odenen_tutar'].'<hr>';
}
?>
Bunun çıktısı da bu şekilde;
Müşteri Numarası: 1
Toplam Tutar: 70
Ödenen Toplam Tutar: 35
Müşteri Numarası: 2
Toplam Tutar: 40
Ödenen Toplam Tutar: 20
Müşteri Numarası: 3
Toplam Tutar: 60
Ödenen Toplam Tutar: 15
Merhaba,
Aleyküm selam, benimde sorun yaşadığım bir mevzu şu şekilde bir çözüm ürettim.
2 kere cache aldırıyorum biri giriş yaptıktan sonra sadece içerik alanını diğeri ise tüm sayfayı kontrol ediyorum eğer bir kullanıcı girişi yok ise bu tüm sayfa cache gösteriyorum o alanda zaten giriş yap, kayıt vb. görünüyor ama eğer giriş yapmış ise o dediğim diğer cache gösteriyorum.
Böylelikle o 2 alanı ayırmış oluyorum tabi bunun için yapının bu mantığa uygun olması gerekir ne gibi post edilecek sayfayı cache dışında tutman gerekir yoksa cevap alamazsın cache çalışacağı için yazdığın kodlar işlemeyecektir.
Örneğin Tayfun ERBİLEN Udemy üzerinde Php Eğitim Setinde kullandığı mvc yapısını ele alalım.
Onun bir controller
ve birde views
alanı bulunuyor sen eğer cache bu gibi yapı da kalkıp views
alanında kullanıyorsan cache kullanmanın bir anlamı yok.
Cache niye kullanıyoruz aynı sorguları her seferinde tekrar tekrar yapmamak için bu yüzden bu gibi bir yapı da controller
alanında sorguların üstünde kullanmalısın ki sorgular 1 sefer yapılsın daha sonra sayfa açıldığın da aynı sorgular sorgulanmasın.
Soruya geri dönelim neydi soru sağ veya solda giriş yap var ise mesela bunu erbilenin yapısında kullanamazsın.
Neden onun yapısı bu tür bir cache kullanımına uygun değil ama uygulanabilir hale getirebilirsin
Örneğin;
Giriş yapmamış ise; Cache sistemini controller'ın başında başlatabilirsin.
Giriş yapmış ise; cache kullanacağın için sorgularını bir sınıfta tutmalısın ve kullanırken direk view içinde sınıf içindeki fonksiyonu çağırarak sorgunu yapacaksın.
Bunu neden yapıyoruz çünkü eğer giriş yapmış ise header'dan sonra cache başlatacaksın sorgular sınıftan geleceği için controllerı kapsamayacak böylece giriş yapılmış ise sadece içeriği cachelersin, giriş yapılmamış ise tüm sayfayı cachlemiş olursun.
Tabi bu verdiğim erbilen'in yapısı için geçerli.
Merhaba
bu bir sorun değil aslında bir önlem ama gene de bu önlemi kaldırmak mümkün.
Kullandığın mysql sürümü fark etmez hepsinde my.ini
dosyası bulunuyor bu dosyayı açıp
ister CTRL
+F
ile istersen de tek tek bakarak sql_mode
kelimesini bul bulduktan sonra içinde yazan değeri değiştirister CTRL
+F
ile istersen de tek tek bakarak sql_mode
kelimesini bul bulduktan sonra içinde yazan değeri değiştireceksin.
Eğer tüm kontrolleri kaldırmak istiyorsan sql_mode=""
olarak içi boş şekilde kaydedip mysql yeniden başlat. Ama sadece bazı değerleri string
gibi kaldırmak istiyorsan ozaman da aralarında STRICT_TRANS_TABLES
kelimesini bulup sil ve kaydet bu ikisi de sorunu çözecektir.