Codeigniter form doğrulama geri çağırma işlevi çalışmıyor

3 Cevap php

Ben çalışmıyor basit bir geri çağırma işlevi yazdık. (Aynı kütüphane dosyasında) benim diğer callbacks yüzden sorun benim kodu ile ilgisi var sanırım iyi çalışır.

Geri çağırma işlevi geçirilen parametre işlevinin kendisi eğer () 'deyimi' bir parçasını oluşturmak için ed '() eval olan PHP bir yığın halini alır.

İşte denetleyicisi budur:

$this->form_validation->set_rules('rating', 'Rating','required');
$condition = $this->input->post('rating')  . " != 'Excellent'";
$this->form_validation->set_rules('details', 'Details', 'required_conditional[' . htmlentities($condition) .']');

Ve burada geri çağırma işlevi kendisi bulunuyor:

function required_conditional($str, $condition)
{
    if (eval(html_entity_decode($condition))) {
        if ($str == '') {
            $this->set_message('required_conditional', 'The %s field is required');
            return FALSE;
        }
        else {
            return TRUE;
        }
    }
}

Herhangi bir fikir neden kimse çalışmıyor?

Teşekkürler, Matt

3 Cevap

eval ifadeleri değil, ifadeler değerlendirir çünkü bulunuyor. Bu size bir ayrıştırma hatası verecektir:

$test = "1 > 0";
if (eval($test)) { echo "echo!"; }

Eğer beklediğiniz gibi ve bu çalışacaktır:

$test = "return 1 > 0;";
if (eval($test)) { echo "echo!"; }

Eğer "callback_<function name>" kullanmak gerekir?

Evet doğru sözdizimi "callback_" kullanmak için form doğrulama geri çağırır için