PHP - GET ve POST diziler ile başa çıkmak

2 Cevap php

Benim webapp ben display.php adında bir sayfa var. Bu sayfadaki komut dosyası POST bağlı olarak farklı şekilde davranır ve diyelim ki, dizi içerik / varlığını GET: Ben bu sayfayı çağırmak ve dizi isset GET ise, script'll başka, $ _GET ['id'] kullanarak kayıt yüklemek durumda, GET isset ama böylece annoying POST script'll DB rastgele bir rekor yük anahtarı ... ve isset eğer.

Sayfamın üst kısmında ben bu basit (önemsiz) kodu ekledim:

//random loading
if(!isset($_GET['id']) && !isset($_POST["MM_update"])){

 ##
 $fresh_call=true;
 $saving_call=false;
 $pick_a_call=false;
 ##

 $_SESSION['call_id']=time().$_GET['operatore'];

 $call_id=$_SESSION['call_id'];

//I need to load a specified record 

}else if (isset($_GET['id']) && !isset($_POST["MM_update"])) { 

  ##
 $pick_a_call=true;
 $saving_call=false;
 $fresh_call=false;
 ##

 $_SESSION['call_id']=$_GET['id'];

 $call_id=$_SESSION['call_id'];

//update the record

}else if (!isset($_GET['id']) && isset($_POST["MM_update"])){ 

 ##
 $saving_call=true;
 $pick_a_call=false;
 $fresh_call=false;
 ##

 $call_id=$_POST['call_id'];
}

Display.php kendini sonrası veri kaydı güncelleme (kod son durum) için display.php için bir form da var.

Yazısının geri kalanında ben doğru UPDATE / INSERT / SEÇ SQL ile db sorgulamak için $ fresh_call, $ saving_call, $ pick_a_call değerleri kontrol ediyorum.

Benim çözüm konusunda emin değilim, ben benim komut dosyası, daha "açık" ve daha hafif hale yardımcı olabilir bir sınıf tasarlamak istiyorum. Bu durum muhtemelen PHP kodlama çözmek için tipik bir proplem olduğunu da düşünüyorum.

2 Cevap

Burada yayınlanan koduyla aynı çalışması gerektiğini, ancak anlamak için biraz daha kolay olabilir işlevsel bir alternatif bulunuyor:

function set_call_id( $val )
{
    $_SESSION['call_id'] = $val;
}

if( isset($_GET['id']) )
{
    set_call_id( $_GET['id'] );
    pick_a_call();
}
else if( isset($_POST["MM_update"]) )
{
    set_call_id( $_POST['call_id'] );
    saving_call();
}
else
{
    set_call_id( time() . $_GET['operatore'] );
    fresh_call();
}

Bu attılar senaryonun parçası değil, ama yapmanız gereken en önemli şey öncelikle GET / POST veritabanını sorgulamak için kullanmadan önce vars kaçan emin olduğunu düşünüyorum.

MySQL kullanıyorsanız Örneğin, sen-ebil kullanma mysql_real_escape_string().