2017-01-04 3 views
2

У меня возникла странная проблема, которую я не могу отлаживать должным образом. В настоящее время я создаю регистрационную форму, используя запросы AngularJS и JSON для файлов PHP. Вот пример входных данных, которые я использовал для отладки.PHP, если инструкция using! Empty() не правильно проверяет существующие переменные

Registration form

Теперь запрос отправлен, очевидно, содержит следующие данные, замеченные отладки ответ JSON.

Debug 1 Debug 2

Теперь по какой-то причине, $response['debug-two'] или $response['debug-info-two'] не добавляется отвечающему JSON, даже если все поля, необходимые являются !empty() или true. Также нет $reponse['empty-fields']. Поэтому он действительно должен сводиться к пустым поля if-statement, но я не могу понять, почему, поскольку все поля заданы как $response['debug-info'].

# Prevent XSRF 
if ($session->checkXSRF()) { 
    # Get POST data 
    $data = json_decode(file_get_contents("php://input")); 

    $fullname = $data->fullname; 
    $email = $data->email; 
    $birthday = $data->bithday; 
    $password1 = $data->password1; 
    $password2 = $data->password2; 
    $agreement1 = $data->agreement1; 
    $agreement2 = $data->agreement2; 

    $response['debug'] = $data; 
    $response['debug-info'] = $fullname.$email.$birthday.$password1.$password2.$agreement1.$agreement2; 

    # Check if empty fields 
    if ((!empty($fullname)) && (!empty($email)) && (!empty($birthday)) && (!empty($password1)) && (!empty($password2)) && ($agreement1)) { 
     $response['debug-two'] = $data; 
     $response['debug-info-two'] = $fullname.$email.$birthday.$password1.$password2.$agreement1.$agreement2; 
    } else { 
     # All fields are required 
     $reponse['empty-fields'] = true; 
    } 
} else { 
    # XSRF Error detected 
    $response['xsrf-invalid'] = true; 
} 

# Return JSON response 
echo json_encode($response); 
+1

В этой строке есть опечатка; '$ reponse ['empty-fields'] = true;' - должен быть '$ response ['empty-fields'] = true;' (вы пропустили 's'). Что вы на самом деле пытаетесь проверить с помощью оператора if? – Tom

+0

@thebluefox О, да, это заставило пустые поля уйти, но почему это так? Когда все поля являются пустыми(), а соглашение1 верно? – PhyCoMath

+1

Сделайте небольшую отладку и посмотрите, какое из этих выражений ложно. 'var_dump ((! empty ($ fullname)). '&&'. (! empty ($ email)). '&&'. (! empty ($ birthday)). '&&'. (! empty ($ password1)) . '&&'. (! empty ($ password2)). '&&'. ($ agreement1)); ' – Tom

ответ

1

У вас есть пара опечаток, которые вызывают проблемы.

Первый в $birthday = $data->bithday; - вы пропустили «г» от «рождения»

Во-вторых, в $reponse['empty-fields'] = true; вы пропустили «S» от «ответ».

# Prevent XSRF 
if ($session->checkXSRF()) { 
    # Get POST data 
    $data = json_decode(file_get_contents("php://input")); 

    $fullname = $data->fullname; 
    $email = $data->email; 
    $birthday = $data->birthday; 
    $password1 = $data->password1; 
    $password2 = $data->password2; 
    $agreement1 = $data->agreement1; 
    $agreement2 = $data->agreement2; 

    $response['debug'] = $data; 
    $response['debug-info'] = $fullname.$email.$birthday.$password1.$password2.$agreement1.$agreement2; 

    # Check if empty fields 
    if ((!empty($fullname)) && (!empty($email)) && (!empty($birthday)) && (!empty($password1)) && (!empty($password2)) && ($agreement1)) { 
     $response['debug-two'] = $data; 
     $response['debug-info-two'] = $fullname.$email.$birthday.$password1.$password2.$agreement1.$agreement2; 
    } else { 
     # All fields are required 
     $response['empty-fields'] = true; 
    } 
} else { 
    # XSRF Error detected 
    $response['xsrf-invalid'] = true; 
} 

# Return JSON response 
echo json_encode($response); 
Смежные вопросы