Verileri değiştirmek için POST Uyma

5 Cevap php

Bu yüzden verileri değiştirebilir şey için POST kullanmalısınız okudum.

Örneğin

BAD

<a href="edit.php?id=12">Edit</a>

GOOD

<form action="edit.php" action="post"><input type="hidden" name="id" value="12" /><button type="submit">Edit</button></form>

Şimdi tabii ki ilk kez daha kısa ve öz, ama bunu yapmak için wrong yolu olarak düşünülebilir.

Şimdi genellikle ekstra biçimlendirme bir sorun çok kötü değil, ama ben bu yüzdem 20 kez, ya da belki daha fazla görüntüleme olabilir söylüyorlar. Ve sonra 'bu form için bir fieldset ve efsane elemanları olmalıdır' sorusu var.

Bunun için genel en iyi yöntem nedir? Yoksa geri cepheye bu şeyi var?

5 Cevap

Bu edit.php?id=12 ne ziyaret bağlıdır. Aslında bir şey değiştirmek mi, yoksa bir şey düzenlemek için izin verir başka bir sayfa görüntüleniyor?

Sadece bir şey düzenlemenize olanak tanıyan bir sayfasını görüntüleyen eğer, o zaman GET iyi. Aslında şey değişiyor, o POST yapmak için doğru, anlamsal bir şeydir, ve biçimlendirme biraz şişirilmiş olması ile uğraşmak zorunda.

Verileri değiştirmek GET istekleri ile pratik problem yanlışlıkla takip alabilirsiniz olduğunu - imleri düşünmek, geri / ileri düğmeleri (bir {[(1 denemek ve yeniden göndermeniz durumunda birçok tarayıcı bir uyarı görüntüler) }] istek bu şekilde), arama motorları aşağıdaki bağlantıları vs

Ben bu özetleyebiliriz iyi yolu, iki kolay listeleri şöyledir:

When POST is better than GET

  • Other than duplicate form submissions, users are much less likely to accidentally duplicate a POST request since you can't bookmark POST requests, and if you click the URL bar and press enter the POST request won't resend all the data
  • POST dosyaları eklemenizi sağlar
  • The POST whenever there's a state change also allows for an easier semantic distinction when programming the backend
  • POST requests are easier to code since you don't have to serialize or escape user data POST requests done through forms are the norm, so it's much easier to tack on an AJAX plugin if you feel the urge in the future

When GET is better than POST

  • Istekleri imi olabilir GET. Arama sorguları gibi şeyler hep GET istekleri olmalıdır.
  • Kullanıcıların kendi tarayıcınızın geri tıkladığınızda, (no-cache ve tüm iş) uber-sıkı sayfa bitiminden almak için karar verirseniz, sayfalar POST veri ile oluşturulan, sayfa oluşturmak için POST verileri yeniden göndermek olmaz nerede GET istek olarak başlangıçta olduğu gibi aynı kalacak
  • Isteklerini bazı kullanıcılar için daha "mantıklı" yapmak GET

Özel sorun ile ilgili olarak, ben onların ID = 12 ile bazı sayfasını düzenleyebileceğiniz bir sayfaya kullanıcıyı almak istiyorum sonucuna. Bu durumda, düzenleme sayfaya bağlantı (Eğer ([{o gibi görünüyor böylece URL'leri güzelleştirmek için. Htaccess rewrite kullanarak düşünebilirsiniz edit/12 ziyade olabilir GET ile basit bir HREF olmalıdır 1 )]}). Düzenleme sayfası kendisi POST veri gönderen bir form olmalıdır.

GET POST daha düşük bir sınırı vardır beri, POST iyi bir fikir kullanarak, işlendiği veya depolandığı için sunucuya lots veri geçerken genellikle zaman. POST da şifreli değilse iletim sırasında hariç, nispeten kullanıcıya gizli olmanın yararı vardır.

Eğer yukarıda geçen konum ne gibi basit değerleri geçen iseniz (Eğer şık URL gibi, bu sürece ..) Ancak, daha sonra GET bir sorun değildir kullanarak

Tamam, kullanmak için neden doğru GET var.

Bir örnek verelim. Bir radyo düğmesi sunuşa dayanan bir sayacı artırır veya azaltır bir komut dosyası var varsayalım.

Diyelim ki:

www.example.com/index.php?var=inc artış olur ve www.example.com/index.php?var=dec eksiltme neden olur.

Sorunun bir kullanıcı yanlışlıkla yeniler ise, komut için ileri veya imleri URL Karşı fındık gidecek olmasıdır!

Bu POST tercih etmelisiniz klasik bir durumdur.

Vb şifreleri gibi hassas bilgileri gönderiyorsunuz zaman diğer durum açıkça

bir kimliği ile bağı olan size uygun maşası Eğer id (sayılar gibi) id sağlamak ise, ince ve

neyin yanlış olduğunu kullanıcının bunu imi ve kötü bir hareket olduğunu olabilir uzun bir url yapmak gibi GET gibi bazı formu göndermektir.

Böyle iyi bir şey değil olurdu

<form>
 <input type="text" name="firstname"/>
 <input type="text" name="lastname"/>
 ...
</form>

Ayrıca POST/Redirect/GET policy bakmak için iyi bir formu Politikası I tavsiyesi var.