Php $ _REQUEST $ _GET ve $ _POST vs

11 Cevap

Daha verimli ve daha hızlı olacaktır altındaki kodun hangi kılavuz beni lütfen.

$temp = $_REQUEST['s'];

VEYA

if (isset($_GET['s'])) {
  $temp = $_GET['s'];
}
else {
  $temp = $_POST['s'];
}

11 Cevap

Ben açıkça $ _POST ve $ _GET kullanarak öneririm.

$ _REQUEST Kullanarak yine uygun bir site tasarımı ile gereksiz olabilir ve daha kolay CSRF / XSS saldırıları ve URL veri depolama gelen diğer sillyness açık bırakarak gibi bazı olumsuz yanları ile birlikte olmalıdır.

Hız farkı en az iki şekilde olmalıdır.

TALEP kullanın. Kimse böyle basit bir işlem hızı hakkında umurunda, ve daha temiz bir kod.

Merak etmeyin. Ama hala beri $_GET $_REQUEST ile güvenlik sorunları vardır (çünkü, ikinci çözümü (artı mevcut olan değişkenlerin hiçbiri için ekstra bir kontrol) kullanmanız gerekir {[(2)] }) bu dizi için tek kaynak değildir.

$_REQUEST dün ile sorunlar hakkında bir yazı vardı, ben inanıyorum. Bana bulalım.

EDIT: Oh iyi, doğrudan değil bir yazı, ama burada yine de şu: http://kuza55.blogspot.com/2006/03/request-variable-fixation.html

if (isset($_GET['s'])) {
  $temp = $_GET['s'];
}
else {
  $temp = $_POST['s'];
}

Daha güvenli olduğu için kullanın ve bu fark hız farkı yapmaz

GET vs. POST

1) GET ve POST bir dizi (örneğin, array (anahtar => değer, anahtar2 => value2, key3 => değer3, ...)) oluşturun de. Bu dizi anahtarları form denetimleri ve değerlerin isimleri anahtar / değer çiftleri, tutan kullanıcıdan veri girişi vardır.

2) GET ve POST $ _GET ve $ _POST olarak kabul edilir de. Ve özel bir şey yapmanıza gerek kalmadan, herhangi bir fonksiyon, sınıf veya dosyadan erişebilirsiniz - Bunlar ne olursa olsun kapsamı, her zaman erişilebilir olduğu anlamına gelir, superglobalstır.

3) $ _GET URL parametreleri ile geçerli komut geçirilen değişken bir dizidir.

4) $ _POST HTTP POST yöntemi ile geçerli komut geçirilen değişken bir dizidir.

When to use GET?

GET metodu ile bir formdan gönderilen bilgiler herkes (tüm değişken isimleri ve değerleri URL görüntülenir) görülebilir. Göndermek için de bilgi miktarına sınırları vardır GET. Sınırlama yaklaşık 2000 karakterdir. Değişkenleri URL görüntülenir Ancak, çünkü bu sayfa imi mümkündür. Bu, bazı durumlarda yararlı olabilir.

Olmayan hassas verileri göndermek için kullanılabilir GET.

Not: şifreleri ve diğer hassas bilgileri göndermek için asla kullanılmamalıdır GET!

When to use POST?

POST yöntemi ile bir form gönderilen bilgiler başkalarına görünmez (tüm isimler / değerleri HTTP istek gövdesinin içinde gömülü) ve göndermek için bilgi miktarına sınırları yoktur.

Sunucuya dosya yükleme sırasında Ayrıca POST, çok parçalı bir ikili giriş için destek gibi gelişmiş işlevleri destekler.

Değişkenleri URL görüntülenen değil çünkü Ancak, imi sayfası mümkün değildir.

Daha açık olarak ben ikinci yöntemi kullanmak istiyorum. Değişkenleri nereden geldiğini Aksi halde bilmiyorum.

Neden yine GET ve POST hem de kontrol etmek gerekiyor? Şüphesiz birini kullanarak veya başka sadece daha mantıklı.

Sen erken optimize edilir. Ayrıca, gerçekten GET güvenlik nedenleriyle POST-ing, konum şeyler için kullanılması gerekip gerekmediğini biraz düşünce koymak gerekir.

Ben sadece hiç _GET ya da 'POST kullanın. Ben kontrole sahip olmak tercih.

OP kod parçası ya da HTTP yöntemi kullanılan hangi bilgileri atmak olduğunu konuda ben sevmiyorum. Ve bu bilgi giriş sıhhileştirilmesinde için önemlidir.

Örneğin, bir komut DB girilmesi gidiyor formdaki verileri kabul ederse o şekilde daha iyi kullanılması POST vardı (use GET only for idempotent actions). Komut GET yöntemi ile giriş verilerini alırsa Ama sonra (normalde) ret edilmelidir. Benim için böyle bir durum, bir işaret Birileri bir şey çalışıyor beri hata günlüğüne bir güvenlik ihlali yazılı garanti olabilir.

OP kod parçası ile, bu sanitization mümkün olmazdı.

$ _GET Sorgu dizesi veya URL değişkenleri alır.>

$ _POST Gibi (genellikle) formları gibi bir POST yöntemi değişkenleri alır.

$ _REQUEST $ _POST $ _GET Geçersiz nerede $ _GET ve $ _POST bir birleştirilmesi olduğunu. Doğrulamaları için kendini refrential formlarda $ _REQUEST kullanmak iyidir.

$ _GET Sorgu dizesi veya URL değişkenleri alır.>

$ _POST Gibi (genellikle) formları gibi bir POST yöntemi değişkenleri alır.

$ _REQUEST $ _POST $ _GET Geçersiz nerede $ _GET ve $ _POST bir birleştirilmesi olduğunu. Doğrulamaları için kendini refrential formlarda $ _REQUEST kullanmak iyidir.