jQuery PHP: girdi yok ...

2 Cevap php

I'm using jQuery to post HTTP requests to my PHP page (Apache/Linux, if that matters). I carefully validate on the client so that empty requests are not sent. However on occasions, I'd get an empty request like this:
- $_POST collection empty ($_GET collection also empty);
- Content-Length is nonzero (a number below 100, consistent with a valid POST from my script)
- Content-Type properly application/x-www-form-urlencoded
- reading from php://input yields an empty string

$ _POST Şekilde yolda yenir sanki. Ben çok dikkatli kodunu kontrol - Ben $ _POST içeriğine bir şey yapmak değil.

AÇIKLAMA: Ben sunucuda bu durumu yakalamak yapmak; benim kod korkunç öldürdüğü gibi değil. Ama kullanıcı girişi hakiki eksikliği değil çok güçlü bir duygu, ama yolda veri bozulması çeşit var. Neden başka bir sıfırdan farklı içerik-uzunluk olurdu?

Istemci tarafı doğrulama başarısız olursa, ben boş alanları ile $ 'POST olsun istiyorum. Şeyler vardır yolu, ben hiç alanlarını alıyorum. Tamamen şaşkın.

Herhangi bir fikir lütfen?

GÜNCELLEME: istemci tarafı isteği İbraz kod şöyle:

var r = trim((re = document.getElementById("tread")).value),
    m = trim((me = document.getElementById("tmean")).value);
if(r == "" && m == "")
    alert("Please provide.");
else
{
    $.post(URLPrefix + "tsearch.php", {R : r, M : m, Src:"bytext"}, DoneSearch, "html");
}

Gider aynı sunucu tarafı komut dosyası, başka bir istek de var:

$.post(URLPrefix + "tsearch.php", {K0 : KCode(0),
    K1 : KCode(1), K2 : KCode(2), K3 : KCode(3),
    P : document.getElementById("pos").checked ? 1 : 0,
    Src:"bykanji"}, DoneSearch, "html");

Ben tüm alanların koşulsuz olarak bu kod, boş bir POST koleksiyon sağlayabilir nasıl görmüyorum.

2 Cevap

JQuery / Javascript kullanarak istemci tarafında doğrulayarak ediyorsanız, komut dosyası ile müşteriler size doğrulama kodu vurmak değil kapatılır. Bunu test etmek isterseniz, ek bir gizli alan var ve formda JS kullanarak bir değere ayarlayın.

örneğin Formdaki var

<input  type="hidden" value="False, JS is off" name="my-hidden-field" />    

ve javascript int

$('#my-hidden-field').val('True, JS is on');

Boş mesajlar şeyler istemci tarafında çalıştırmak için başarısız doğrulama kodu bir sonucu olup olmadığını görmek için kullanabilirsiniz.

Ben dürüst istemci tarafı ve sunucu tarafı doğrulama hem yapıyor öneririz. PHP kullanarak $ _POST [] dizisindeki boş / geçersiz girişler için denetleniyor saçmadır. Presumably JavaScript boş girişleri yakalamak ve izin vermemelidir istek ama sadece durumda birisi tarafından-geçer JS sunucu üzerinde gerektiği zaman çift kontrol. : Kadar basit bir şey

if(empty($_POST['val']))
 // throw error

Sadece iyi çalışacak, o noktadan itibaren tüm işlem durdurmak veya onu istediğiniz herhangi bir şekilde işleyebilir ya. Veri doğrulama ben gerçekten sunucuda yapılması gerektiğini düşünüyorum önemli ise, JavaScript (veya kesinlikle istemci tarafı bir şey) ile onarmak için sadece çok kolaydır.