$_GET uygulamasının dikkat edilmesi gerek noktaları nelerdir

PHP ve MySQL ile ilgili yardım taleplerinizi paylaşabilirsiniz.
Özgür
Deneyimli Üye
Deneyimli Üye
Mesajlar: 352
Kayıt: 16 Şub 2009, 01:16

$_GET uygulamasının dikkat edilmesi gerek noktaları nelerdir

Mesaj gönderen Özgür » 25 Nis 2011, 13:57

sql sorgusundan önce $id=$_GET["id"]; kullanarak PHP üst versiyonuna uyumlu yapıyorum sitelerimi


şöyle bir sayfam var

<?
include "bag.php";
$pwd=$_GET["pwd"];
$pwd=md5($pwd);
$un=$_GET["un"];

$sql="select * from user where un='$un' and pwd='$pwd'";
$sonuc=mysql_query($sql);
$adet=mysql_num_rows($sonuc);
if($adet==1)
{
$satir=mysql_fetch_object($sonuc);
session_register("uye_id");
session_register("uye_adi");
session_register("uye_yetki");
session_register("uye_mesaj");
$uye_id=$satir->id;
$uye_adi=$satir->isim;
$uye_yetki=$satir->yetki_id;
$uye_mesaj=3;

echo "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>";
echo "<table width=\"900\" height=\"154\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" background=\"img_design/karsilama.jpg\">
<tr>
<td><img src=\"images/spacer.gif\"></src></td>
</tr>
<tr>
<td align=\"center\"><a href=\"yonetim.php\" class=\"buyuk_siyah_baslik\">Yönetim</a></td>
</tr>
<tr>
<td align=\"center\"><a href=\"index.php\" class=\"buyuk_siyah_baslik\">Anasayfa</a></td>
</tr>
<td align=\"center\"><a href=\"JavaScript:history.back()\" class=\"buyuk_siyah_baslik\">Kaldığın yerden devam et</a></td>
</tr>
<tr>
<td><img src=\"img_design/spacer.gif\" height=\"20\"></src></td>
</tr>

</table>";

}
else {
header ("Location:index.php?uye_mesaj=1");
//echo "<a href=\"giris_form.php\">Hatalı kullanıcı adı ve/veya şifre</a>";
}
?>
//////////////////////////////////////// Şöyle bir hata veriyor
Warning: Cannot modify header information - headers already sent by (output started at /home/wwwtekli/public_html/user_giris.php:4) in /home/wwwtekli/public_html/user_giris.php on line 49
Sadece sql sorgusundan önce $_GET tanımlaması yaptım. MD5'den geçmezden önce kullandım lokalde çalışmasına rağmen hada veriyor. $_GET uygulamasının dikkat edilmesi gerek noktaları nelerdir.

Kullanıcı avatarı
Gökhan
Deneyimli Üye
Deneyimli Üye
Mesajlar: 390
Kayıt: 11 Şub 2009, 22:57

Re: $_GET uygulamasının dikkat edilmesi gerek noktaları nele

Mesaj gönderen Gökhan » 25 Nis 2011, 19:54

Bu hatanın get ile ilgili olduğunu düşünmüyorum, sayfa içeriği yazılmaya başladıktan sonra header kullandığın için (yönlendirme amaçlı) bu hatayı veriyor. Bunun için header kullandığın ana kadar hiç bir şey yazdırmamış olman gerekli(boşluk dahil), ya da sayfanın tamamı işlenene kadar yazdırmayı bekletmen gerekir, bunun için de sayfanın en başına ve en sonuna şu iki fonksiyonu sırası ile eklemen gerekir;

ob_start();
//...
ob_end_flush();


ve ayrıca, burada login olayı gerçekleşiyor sanırım ve bu kullanıcı adı ve şifre formdan POST ile geliyor sanırım, GET ile aldığın için her seferinde formdan gelen veri alınamıyor ve else kısmına düşüyor, header çağırılmak isteniyor ve az önce yukarıda açıkladığım sebepten dolayı hata mesajı alıyorsun (Satır 49)

Özgür
Deneyimli Üye
Deneyimli Üye
Mesajlar: 352
Kayıt: 16 Şub 2009, 01:16

Re: $_GET uygulamasının dikkat edilmesi gerek noktaları nele

Mesaj gönderen Özgür » 25 Nis 2011, 22:23

Bunun için header kullandığın ana kadar hiç bir şey yazdırmamış olman gerekli(boşluk dahil)

header kullandığım ana kadar echo ""; kullanmamalıyım mı yani

Kullanıcı avatarı
Gökhan
Deneyimli Üye
Deneyimli Üye
Mesajlar: 390
Kayıt: 11 Şub 2009, 22:57

Re: $_GET uygulamasının dikkat edilmesi gerek noktaları nele

Mesaj gönderen Gökhan » 26 Nis 2011, 08:33

php kodlarının dışında da hiç birşey yazdırmamalısın, ayrıca örneğin dreamweaver ve benzeri programlar dosyayı oluştururken, başına senin görmediğin bazı tanımlamalar ekleyebilirler.

Özgür
Deneyimli Üye
Deneyimli Üye
Mesajlar: 352
Kayıt: 16 Şub 2009, 01:16

Re: $_GET uygulamasının dikkat edilmesi gerek noktaları nele

Mesaj gönderen Özgür » 26 Nis 2011, 10:27

Tamam Post ile gönderdiğimi $un=$_POST["un"]; şeklinde post olarak alıyorum. Yine de oturum açmıyor.

Kullanıcı avatarı
Gökhan
Deneyimli Üye
Deneyimli Üye
Mesajlar: 390
Kayıt: 11 Şub 2009, 22:57

Re: $_GET uygulamasının dikkat edilmesi gerek noktaları nele

Mesaj gönderen Gökhan » 26 Nis 2011, 16:24

$pwd ne durumda,

$un ve $pwd değerlerini yazarak test edermisin?

Kod: Tümünü seç

echo "un:".$un."<br>pwd:".$pwd;
exit;

Özgür
Deneyimli Üye
Deneyimli Üye
Mesajlar: 352
Kayıt: 16 Şub 2009, 01:16

Re: $_GET uygulamasının dikkat edilmesi gerek noktaları nele

Mesaj gönderen Özgür » 27 Nis 2011, 11:29

http://www.tekliffiyat.com/user_form_ic.php?yetki_id=4

Firma ekle formunu gece çalıştım, hata img değerinde, resim eklemeyince database'e işliyor. Bugünlük img'yi devre dışı bırakmak zorunda kaldım.

İlgilenmek isteyenler için kodlar aşağıdadır

<? session_start();
$uye_id = $_SESSION["uye_id"];
$uye_yetki = $_SESSION["uye_yetki"];
$uye_adi = $_SESSION["uye_adi"];
$uye_mesaj = $_SESSION["uye_mesaj"]; // aşağıdakiler formla ilgili
$un = $_SESSION["un"];
$resim=$_FILES["img"];
// eskiden $img_name olarak bilinen şimdi $resim["tmp_name"] oldu
list($width,$height,$type,$attr) = getimagesize($resim["tmp_name"]);
$id=$_POST["id"];
$un=$_POST["un"];
$pwd=$_POST["pwd"];
$pwd2=$_POST["pwd2"];
$isim=$_POST["isim"];
$firma=$_POST["firma"];
$firma_hakkinda=$_POST["firma_hakkinda"];
$adres=$_POST["adres"];
$il_id=$_POST["il_id"];
$ilce_id=$_POST["ilce_id"];
$sektor_id=$_POST["sektor_id"];
$tel=$_POST["tel"];
$faks=$_POST["faks"];
$gsm=$_POST["gsm"];
$eposta=$_POST["eposta"];
$web=$_POST["web"];
$yetki_id=$_POST["yetki_id"];
$mesaj_id=$_POST["mesaj_id"];
$web=$_POST["web"];
$yonetici_not=$_POST["yonetici_notu"];
$ekleme_zamani=$_POST["ekleme_zamani"];
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
</head>
<body>
<? include "bag.php"; ?>
<?
$sektoru=$sektor_id;
if(!$un){echo "Kullanıcı adınızı girmemişsiniz<a href=\"JavaScript:history.back()\">Geri</a>";exit;}
if(!$firma){echo "Firma adınızı girmemişsiniz<a href=\"JavaScript:history.back()\">Geri</a>";exit;}
//if(!$tel){echo "Telefon numaranızı girmemişsiniz<a href=\"JavaScript:history.back()\">Geri</a>";exit;}
//if(!$gsm){ $gsm="0532";}
if (!eposta) {$eposta="@";}
if(strlen($un)<4){echo "Kullanıcı adınınz 4 den küçük olamaz<a href=\"JavaScript:history.back()\">Geri</a>";exit;}
if(strlen($un)>16){echo "Kullanıcı adınınz 16 karakterden büyük olamaz<a href=\"JavaScript:history.back()\">Geri</a>";exit;}
if(!$pwd){echo "Şifrenizni girmemişsiniz<a href=\"JavaScript:history.back()\">Geri</a>";exit;}
$pwd=md5($pwd);
if ($resim["tmp_name"]){//resim1 varsa
if($type<>"2" and $type<>"1"){ // 2 jpg 1 gif
echo "Fotolar jpg ya da gif olmali";
exit;
}
$sql = "select * from user where un='$un'";
$sonuc=mysql_query($sql);
$adet= mysql_num_rows($sonuc);
if($adet<>0){echo "Bu kullanıcı adı var lütfen başka seçiniz<a href=\"JavaScript:history.back()\">Geri</a>";
exit;}

$sql2 = "select * from user order by id desc Limit 0,1";
$sonuc2 = mysql_query($sql2);
$satir2 = mysql_fetch_object($sonuc2);
$idsi = $satir2->id+1; // son id+1'u klasör adı olarak aldık
mkdir("logolar/$idsi", 0755);

$tip1 = $type;
if($tip1=="2"){$uzanti1 = "jpg";}else{$uzanti1="gif";}
$fadi1=date (dmYHis).mikrotime();
$fadi1=md5($fadi1);
$fadi1=substr($fadi1,6,10);
$fadi1=$fadi1.$uzanti1;
$yol1="logolar/$idsi/".$fadi1;

if(!file_exists($yol1)){
$fadi2_1=$fadi1;
}
$a1=1;
while(file_exists($yol1)){
$fadi2_1 = str_replace("jpg","",$fadi1);
$fadi2_1 = str_replace("gif","",$fadi2_1);
$fadi2_1 = str_replace(".","",$fadi2_1);
$fadi2_1 = $fadi2_1."_".$a1.".".$uzanti1;
$yol1="logolar/$idsi/".$fadi2_1;
$a1++;
}
copy($resim["temp_name"],$yol1);
}else {$fadi2_1="";} //resim1 yoksa
//copy("logolar/1.jpg","logolar/$idsi/resimyok.jpg")

mysql_query("INSERT INTO `user` ( `id`, `img`, `alt`, `isim`, `firma_hakkinda`, `firma`, `title`, `un`, `pwd`, `adres`, `gsm`, `tel`, `faks`, `web`, `eposta`, `il_id`, `ilce_id`, `sektor_id`, `ekleme_zamani`, `yetki_id`, `mesaj_id`, `yonetici_notu`) VALUES ('', '$fadi2_1', 'alt', '$isim', 'firma_hakkinda_yaz', '$firma', '$firma', '$un', '$pwd', '$adres', '$gsm', '$tel', '$faks', '$web', '$eposta', '$il_id', '$ilce_id', '$sektor_id', '$ekleme_zamani', '4', '$mesaj_id', '$yonetici_notu')");
?>

<body bgcolor="#336699">
<br>
<? if ($mesaj_id==2)
{?>
Sayın
<?=$un;?>Üye Kaydınız Başarılı. En kısa zamanda aktivasyonunuz yapılacaktır<br>
<br><br>
<a href="index.php">Anasayfa</a> <? } ?>
<? if ($mesaj_id==3)
{?> Sayın <?=$un;?> Editörlük isteğiniz en kısa zamanda değerlendirilecektir<br>
<br><br>
<a href="index.php">Anasayfa</a><? } ?>
<? if ($mesaj_id==4)
{?> Sayın <?=$un;?> Üyelik işleminiz gerçekleşmiştir. Sitemizi ziyarete devam edebilirsiniz<br>
<br><br><a href="index.php">Anasayfa</a><? } ?>
<? if($uye_yetki==1 and session_is_registered("uye_id")){ // Yönetici notu ?>
<a href="yonetim.php">Yönetim Sayfası</a>
<br>
<a href="JavaScript:history.back()">Geri</a>
<br>
<meta http-equiv="refresh" content="1;url=user_form_ic.php?yetki_id=<?=$yetki_id?>&sektor_id=<?=$sektoru?>&yonetici_notu=<?=$yonetici_notu?>&il_id=<?=$il_id?>" />
<p>Bir Başka Üye Ekle</p>
<? } ?>
<br>

<table bgcolor="#336699">
<tr>
<td><center><? include "hosgeldin_cikis.php";?></center></td>
</tr>
</table>
</body>
</html>

Özgür
Deneyimli Üye
Deneyimli Üye
Mesajlar: 352
Kayıt: 16 Şub 2009, 01:16

Re: $_GET uygulamasının dikkat edilmesi gerek noktaları nele

Mesaj gönderen Özgür » 02 May 2011, 13:57

<?
$tid=$_POST["tid"]; // testin id'si
$cevap0=$_POST["cevap0"]; //// buranın yerine
$cevap1=$_POST["cevap1"];
$cevap2=$_POST["cevap2"];
$cevap3=$_POST["cevap3"]; // testte bulunan soru sayısı değişişor bazısı 10 soru bazısı 100 soru burayı for kurgusuyla alamaz mıyız?

$soru_sayisi=$_POST["soru_sayisi"]; // testte bulunan soru sayısı

for ($k=0; $k<=$soru_sayisi; $k++)
{
//$cevap$k=$_POST["cevap$k"]; // ?????? testte bulunan soru sayısı standart değil gelen soru sayısına göre bir döngü kurmam lazım
}
?>

Yardımcı olur musunuz?

Kullanıcı avatarı
Gökhan
Deneyimli Üye
Deneyimli Üye
Mesajlar: 390
Kayıt: 11 Şub 2009, 22:57

Re: $_GET uygulamasının dikkat edilmesi gerek noktaları nele

Mesaj gönderen Gökhan » 02 May 2011, 17:55

Özgür yazdı:<?
$tid=$_POST["tid"]; // testin id'si
$cevap0=$_POST["cevap0"]; //// buranın yerine
$cevap1=$_POST["cevap1"];
$cevap2=$_POST["cevap2"];
$cevap3=$_POST["cevap3"]; // testte bulunan soru sayısı değişişor bazısı 10 soru bazısı 100 soru burayı for kurgusuyla alamaz mıyız?

$soru_sayisi=$_POST["soru_sayisi"]; // testte bulunan soru sayısı

for ($k=0; $k<=$soru_sayisi; $k++)
{
//$cevap$k=$_POST["cevap$k"]; // ?????? testte bulunan soru sayısı standart değil gelen soru sayısına göre bir döngü kurmam lazım
}
?>

Yardımcı olur musunuz?
Bunun için foreach kullanman daha iyi olur sanırım, genel kullanımı şu şekilde;

Kod: Tümünü seç

foreach($_POST as $a=>$b)
{
//...
// gelen her bir POST değeri için $a ya name değerini, $b ye de value değerini ekleyecektir.
}

Özgür
Deneyimli Üye
Deneyimli Üye
Mesajlar: 352
Kayıt: 16 Şub 2009, 01:16

Re: $_GET uygulamasının dikkat edilmesi gerek noktaları nele

Mesaj gönderen Özgür » 05 May 2011, 14:05

Kod: Tümünü seç

$as1=$_POST["as1"]; $asdr1=$_POST["asdr1"]; if ($asdr1==1) {$secilenler=$secilenler."@".$as1."@";} else {$secilenler=$secilenler;} 
$as2=$_POST["as2"]; $asdr2=$_POST["asdr2"]; if ($asdr2==1) {$secilenler=$secilenler."@".$as2."@";} else {$secilenler=$secilenler;} 
$as3=$_POST["as3"]; $asdr3=$_POST["asdr3"]; if ($asdr3==1) {$secilenler=$secilenler."@".$as3."@";} else {$secilenler=$secilenler;} 
$as4=$_POST["as4"]; $asdr4=$_POST["asdr4"]; if ($asdr4==1) {$secilenler=$secilenler."@".$as4."@";} else {$secilenler=$secilenler;} 
$as5=$_POST["as5"]; $asdr5=$_POST["asdr5"]; if ($asdr5==1) {$secilenler=$secilenler."@".$as5."@";} else {$secilenler=$secilenler;} 
$as6=$_POST["as6"]; $asdr6=$_POST["asdr6"]; if ($asdr6==1) {$secilenler=$secilenler."@".$as6."@";} else {$secilenler=$secilenler;} 
$as7=$_POST["as7"]; $asdr7=$_POST["asdr7"]; if ($asdr7==1) {$secilenler=$secilenler."@".$as7."@";} else {$secilenler=$secilenler;} 
$as8=$_POST["as8"]; $asdr8=$_POST["asdr8"]; if ($asdr8==1) {$secilenler=$secilenler."@".$as8."@";} else {$secilenler=$secilenler;} 
$as9=$_POST["as9"]; $asdr9=$_POST["asdr9"]; if ($asdr9==1) {$secilenler=$secilenler."@".$as9."@";} else {$secilenler=$secilenler;} 
Alt sektörlerim sabit sayıdaydı alt_sektor_işlem.php sayfama (checkbox seçiliyse 1 geliyor) yukarıdaki pratik uygulama ile alt sektör tercihlerimi alabiliyorum. Kısa açıklama gerekirse yukarıdaki yaptığım işlem sonucunda alt_sektor_id sütununa @125@@26@@18@@12@@3@ gibi yazdırıyorum.

Fakat yeni uygulamada alt sektörlerimin sayısı 400'ü geçti ve bu sayısı değişebiliyor. 400 satır için yukarıdaki yöntemle tercihleri ve değerlerini almam mantıklı değil, ve alt sektörler değişken olduğu için çözüm de değil yukarıdaki uygulama

Şöyle bir kod kullanmayı denedim

Kod: Tümünü seç

$sql3 = "select * from alt_sektor_dizi order by id desc";
$sonuc3=mysql_query($sql3);
$adet3= mysql_num_rows($sonuc3);
for ($j=1; $j<=$adet3; $j++)
	{
	$satir3=mysql_fetch_object($sonuc3);
	$as($j)=$_POST["as($j)"]; $asdr($j)=$_POST["asdr($j)"]; if ($asdr($j)==1) {$secilenler=$secilenler."@".$as($j)."@";} else {$secilenler=$secilenler;} 	
	} 
Fakat hata veriyor yardımcı olabilir misiniz? Akşam notlarımı gözden geçirdim, kurgu olarak doğru ama değişken arasında kullandığım . işaretinni doğru bir şekilde kullanamadım galiba. Çok acil bir durum

Cevapla

Kimler çevrimiçi

Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir