2013-04-30 5 views
1

Я форму с полем ввода пароляфункция Php всегда возвращает ноль

<form id="form-login" class="row-fluid" novalidate="novalidate" method="post" action="#"> 
<input class="span12" type="password" name="password" pattern="[0-9 ]{5,15}" /> 
</form> 

при отправки формы я делаю вызов Ajax:

... 
var data = $('form').serialize(); 

$.ajax({ 

    url: "/wp-admin/admin-ajax.php", // wordpress 
    type: "POST", 
    data: data + '&action=login_check', 
    cache: false, 

    success: function (html) {   
     $('.loading').hide(); 

     if (html == 0) { 
      $('.undone').fadeIn('slow'); 
     } else if (html == 1) { 
      $('.done').fadeIn('slow');     
     } 
    } 
}); 

return false; 
... 

что проверить пароль, используя эту функцию в functions.php (Wordpress):

function login_check(){ 

     $pw = 'hello'; 

     if(md5($pw) == md5($_POST['password'])){ 

      $_SESSION['key'] = 1; 
      return 1; 

     } else { 

      return 0; 

     } 

    die(); 

} 

add_action('wp_ajax_login_check', 'login_check'); 
add_action('wp_ajax_nopriv_login_check', 'login_check'); 

, и я хочу, что данная функция возвращает 0 или 1 в success функция в вызове ajax. Но он всегда возвращает 0, также при вводе правильного пароля. Где я не прав?

var_dump($_POST); 

array(3) { 
    ["password"]=> 
    string(5) "hello" 
    ["s"]=> 
    string(0) "" 
    ["action"]=> 
    string(11) "login_check" 
} 
+0

Что вы получаете в 'var_dump ($ _ POST)'? –

+0

Попробуйте поставить оператор return в if, также. Current Это только условие else. И затем проверьте –

ответ

4

Вы проверяете для Number в вашем яваскрипте Ajax обработчика обратного вызова. Но параметр html будет acutally String. Изменить обратный вызов на:

if (html == '0') { 
    $('.undone').fadeIn('slow'); 
} else if (html == '1') { 
    $('.done').fadeIn('slow');     
} 

Что происходит? Вы формально, (перед выпуском вопрос) ничего не вернули '' об успехе и '0'. Но из-за свободной системы ввода javascript оба оцениваются до ==0. Проверьте яваскрипт кода:

""==0; // true 
"0"==0; // true 

изменить и return заявления в PHP в echo заявление. Обратите внимание, что оператор return фактически ничего не выводит:

if(md5($pw) == md5($_POST['password'])){ 
    $_SESSION['key'] = 1; 
    echo '1'; 
} else { 
    echo '0'; 
} 
+0

за интересный ответ, но он все равно не работает ... –

+0

Что дает вам предупреждение ('>>' + html + '<<'); '? Любые пробелы до или после содержимого? – hek2mgl

+0

всегда дает тот же самый проклятый ноль: '>> 0 <<' (без пробелов) –

Смежные вопросы