2009-11-22 6 views
20

Zend'i bir süre kullandıktan sonra CodeIgniter'i kullanmaya başladım. Yeni sitemde Ajax'a kayıt olduğunuz bir özellik var. Zend ben sitemden nedenle gelen POST AJAX aracılığıyla olsaydı bu kontrol etmek kullanın ve olabilir: aynı şeyi yapar CodeIgniter'daki kodu parçasıdırBir yazıya bir kod çağrısı ajax çağrısından geldiğini söyleme yolu nedir?

if(!$this->getRequest()->isXMLHttpRequest()) 

var mı? Bir AJAX çağrısı olduğundan emin olmazsam, birisi benim denetleyicime göndermek için bir form oluşturarak istediği her şeyi teorik olarak kaydedebilir.

Teşekkürler!

+0

kullanarak kontrol edebilirsiniz, bu sizin işleyicisi AJAX olup olmadığını hiç fark etmez. POST isteklerini denetlemek için CAPTCHA'ları ve sunucu tarafı kimlik doğrulamasını kullanın (ör. Formun gönderilip gönderilmediğini denetlenen form için gizli bir değişken geçirin). –

+0

Değişkeni görmek ve kendileri eklemek için sadece ateş böceği kullanamazlar mı? – Ethan

+0

Gizli değişken hakkında soru soruyorsanız, haklısınız. İstediğiniz POST verisini iletmek için Firebug, cURL veya yüzlerce başka yöntemi kullanabilirsiniz. Yapmak istediğiniz şey, kullanıcıya o kullanıcı/oturum/zamana özgü ve bir veritabanında saklanan bazı gizli verileri göndermektir. Form gönderildiğinde, veritabanına geçirilen gizli alanı kontrol edebilirsiniz. –

cevap

20
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) {} 

Ancak, codeigniter kullandığınızdan, giriş sınıfını kullanmak daha iyidir. Aşağıda nasıl yapılacağını görün.

if($this->input->is_ajax_request()){ 
    //Execute Your Code 
} 
+0

çözümünüz doğru, ancak CodeIgniter'de yapıldığı şekilde değil. –

35

CodeIgniter 2.0 beri bir ajax isteği için kontrol daha kolay bir yolu yoktur. Kullan: $ this-> input-> is_ajax_request();

Doc: Birinin başka bir web sitesinden yayınlarken konusunda endişeleriniz varsa