İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Soru ve Cevap ile Personal Home Page

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
Arkadaşlar merhaba,

PHP ile çalışırken yaşadığınız her türlü problemi bu konuya yazabilir ve cevap alabilirsiniz.

Bu konuya yazarken dikkat etmeniz gereken bir takım kurallar vardır. Bunlar;

1. Sorunuzu gayet anlatır bir dil ile belirtmeniz gerekir.
2. Sorun yaşadığınız PHP kodları PHP tagları ile birlikte konuya eklemeniz gerekir.
3. Olmayan birşeyi konuya ekleyip "Lütfen bana bunu veriniz" tarzı mesajlar atmayın hemen sileceğim o tür mesajları. Sizlere yardımcı olabilmemiz için bir şeylere başlamanız ve başladığınız şeylerde problem yaşamanız gerekmektedir.

Örneğin: Şurda şunu yapmak istiyorum nasıl yapacağımı bilmiyorum mesajına "al sana oraya koymak gereken fonksiyon bunu şu şekilde çağıracaksın" demeyeceğiz. Yani armut piş ağzıma düş yok bu konuda.

Amma velakin: Şöyle bir fonksiyon yazdım amacı bu ama bir yerde hata yapıyorum neresi olabilir dediğinizde yardımcı olmaktan memnun olacağım.

Saygılar...
 

CaLViN

0
İyinet Üyesi
Katılım
25 Kasım 2004
Mesajlar
7,485
Reaction score
63
Konum
Antalya
Deneme olarak ve yol göstermek adına ilk soruyu ben soruyorum arkadaşlar.

Soru: Request edilen verileri kontrol ederken

Merhaba,

Web sitemde POST ve GET yolu ile request edilen veriler mevcuttur. Bunların bazıları formdan bazılarıda istemcilerden gelmektedir. İstemcilerden gelen veriler az olduğu için bunları tek tek yazarak istemediğim stringleri escape edebiliyorum.

Yanlız uzun bir form olduğunda (örn: 50 field içeren) tek tek buradaki stringleri escape etmek hem çok fazla kod yazmama neden oluyor hemde gereksiz vaktimi çalıyor.

Burada bir kaç kod ile bu verilerin hepsini temizleyebilmem sağlanabilir mi?
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
Deneme olarak ve yol göstermek adına ilk soruyu ben soruyorum arkadaşlar.

Soru: Request edilen verileri kontrol ederken

Merhaba,

Web sitemde POST ve GET yolu ile request edilen veriler mevcuttur. Bunların bazıları formdan bazılarıda istemcilerden gelmektedir. İstemcilerden gelen veriler az olduğu için bunları tek tek yazarak istemediğim stringleri escape edebiliyorum.

Yanlız uzun bir form olduğunda (örn: 50 field içeren) tek tek buradaki stringleri escape etmek hem çok fazla kod yazmama neden oluyor hemde gereksiz vaktimi çalıyor.

Burada bir kaç kod ile bu verilerin hepsini temizleyebilmem sağlanabilir mi?

İlk olarak deneme sorusu için teşekkür ederim. Gelelim şimdi yanıta...

Evet bahsettiğin problemi aslında bir çok webmaster yaşamakta. Gelen verileri tek tek temizleme yoluna gidiyorlar buda çok zaman alıyor. Bir müddet sonra tek tek temizlemek yerine hiç temizlemiyorlar ve SQL Injection dediğimiz hadise ortaya çıkıyor.

İstediğin yöntem aslında gayet basi bunu mysql_escape_string ve strip_tags ile halletmeye calışalım.

İlk olarak temizle adında bir fonksiyon oluşturuyoruz. Bu fonksiyonun amacı gelen veriyi mysql'e injectionsuz bir şekilde kayıt edilebilir hale getirecek.

PHP:
function temizle($deger) {
	$deger = strip_tags ( $deger );
	$deger = trim ( $deger );
	$deger = mysql_escape_string ( $deger );
	return $deger;
}

Bu girdiğimiz temizle fonksiyonun amacı tekil değeri temizlemek olacak. Örneğin;

PHP:
$id=temizle($_GET['id']);

Şimdi gelelim çoklu değişkenler içeren post verilerine; diyelim ki bir post formumuz var ve bu form içerisinde 150 ayrı değer içeriyor. Tabii ki bunları tek tek temizle fonksiyonu ile temizlemeyeceğiz bu hem bizim 20 dk boşa zamanımızı alır hemde güzelim parmaklarımızın daha iş yapamadan yorulmasına neden olur.

O zaman ne yaparız temizle ile birlikte çalışacak ikinci bir fonksiyon yazıyoruz bu ne olsun. dizi_temizle olsun.

PHP:
function dizi_temizle($deger) {
	foreach ($deger as $key => $value) {
		if (!is_array($deger[$key])) {
			$deger[$key]=temizle($value);
		} else {
			$deger[$key]=dizi_temizle($deger[$key]);
		}
	}
	return $deger;
}

dizi_temizle fonksiyonumuzun amacı çoklu değerleri temizlemek. Hatta ve hatta diyelim ki bu çoklu değerler altında alt değerler olsun onlarıda temizleyecek.

Örneğin
PHP:
$data['sonuc']="Merhaba";
$data['sonuc']['Merhaba']="Hi";

Bu tür alt dizileri var olan arraylarıda temizleyebilecek. Peki bunları hep birlikte nasıl kullancak ona bakalım.

PHP:
<?
function temizle($deger, $utf=false) {
	$deger = strip_tags ( $deger );
	$deger = trim ( $deger );
	$deger = mysql_escape_string ( $deger );
	
	if($utf) $deger = tr_to_utf($deger);
	
	return $deger;
}

function dizi_temizle($deger) {
	foreach ($deger as $key => $value) {
		if (!is_array($deger[$key])) {
			$deger[$key]=temizle($value);
		} else {
			$deger[$key]=dizi_temizle($deger[$key]);
		}
	}
	return $deger;
}

if ($_POST['gonder']) {
    $form=dizi_temizle($_POST); //İşte burada temizliyoruz
    foreach ($form as $deger => $value) {
       echo $deger." -> ".$value."<br />";
    }
}
?>
<form action="" method="POST">
<input type="text" name="deger1" size="20"><br />
<input type="text" name="deger2" size="20"><br />
<input type="text" name="deger3" size="20"><br />
<input type="text" name="deger4" size="20"><br />
<input type="text" name="deger5" size="20"><br />
<input type="text" name="deger6" size="20"><br />
<input type="text" name="deger7" size="20"><br />
<input type="text" name="deger8" size="20"><br />
<input type="text" name="deger9" size="20"><br />
<input type="text" name="deger10" size="20"><br />
<input type="hidden" name="gonder" value="1">
<input type="submit" value="Gönder">
</form>

Bu kadar. Saygılar.
 
  • Like
Reactions: Eif

Antika

0
İyinet Üyesi
Katılım
23 Aralık 2010
Mesajlar
451
Reaction score
18
üye şifresini sessionda tutmanın yan etkileri var mıdır ?
 

BarışBey

1
İyinet Üyesi
Onaylı Üye
Katılım
17 Eylül 2010
Mesajlar
2,107
Reaction score
51
while ile for arasında nasıl farklar vardır ben genelde hep karıştırıyorum bunları :)
 

selim61

0
İyinet Üyesi
Onaylı Üye
Katılım
10 Mayıs 2006
Mesajlar
5,299
Reaction score
11
Konum
<?=selim61?>
while ile for arasında nasıl farklar vardır ben genelde hep karıştırıyorum bunları :)

For döngüsünü döngünün ne kadar döneceğini bildiğimiz durumlarda kullanırız.
While de ise şart geçerli olduğu sürece sürer yani iterasyon sayılı belli değildir,while içinde belirlenir. Oysa for da daha baştan bellidir.

Kafaya koyarsanız ikisiylede aynı şeyi yapabilirsiniz.

Mesela bu iki kullanım arasında fark yoktur
PHP:
for(int i=0;i<10;i++)
{

}

while($i<10){
$i++;
}


Şöyle bir kullanıma bakalım
PHP:
$finished = false;                       
while ( ! $finished ):                   
  if (blablabla):       //blablablaysa $finished true
    $finished = true;                    // normal devam eder ve başa döndüğünde artık while girmez
  endif;
endwhile;

Tabi buda for da yapılabilir

PHP:
$finished = false;   
for (; ; ) {
  if (blablabla):       //blablablaysa $finished true
    $finished = true;                    
    break;            //bu anda for dan çıkar
  endif;
}
 

selim61

0
İyinet Üyesi
Onaylı Üye
Katılım
10 Mayıs 2006
Mesajlar
5,299
Reaction score
11
Konum
<?=selim61?>
@Caesar bana 5 giriş- tek çıkış 2 katmanlı artificial neural networks tasarlasana. eğitim setini ben bulurum :p
 

xgitarx

0
İyinet Üyesi
Katılım
25 Mayıs 2010
Mesajlar
1,354
Reaction score
23
Bir soruda ben sormak istiyorum, basit birşey olduğunu düşünüyorum fakat sonuca ulaşamadım, şimdi kullanıcı forma istediği değerleri giriyor ve buna göre formülden hesaplama yaptırıyorum ve ekrana hesaplanan değeri yazdırıyorum, fakat hesaplanan değerin formül ne hesaplarsa hesaplasın örneğin maksimum 90 değerini göstermesini istiyorum

PHP:
$sayi=x+y

(kullanıcı formdan x ve y değerlerini giriyor)

echo ("$sayi");


yani formül 90 altı değerlerde formülün hesapladığını, 90 ve üstü değerlerde max 90 değerini göstermek istiyorum, yardımcı olursanız sevinirim.
 

Alaycı Kuş

0
İyinet Üyesi
Katılım
31 Mart 2013
Mesajlar
30
Reaction score
0
Merhaba,

Yönetim Panelinden makaleleri ve menüleri oluşturuyorum. Menüde göstermek istediğim makaleyi menü oluştururken seçiyorum. Tablolar şu şekilde;

Makaleler DB:
makale_id | makale_baslik | makale_icerik

Menu DB:
menu_id | menu_adi | menu_baglanti | menu_makale_id


Actığım sayfayla ilişkili makaleyi nasıl arayüze çekebilirim ? Mantığı kuramadım bir türlü.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst