2014-07-21 4 views
-1

Я создал страницу настроек для обновления информации о пользователе. (Я успешно создал аналогичную страницу, чтобы изменить пароль, и работал отлично.)PHP, вызывающий пустую страницу - Обновление информации пользователя

Следующий скрипт вызывает пустую страницу, когда страница пытается загрузить:

<?php 
if (isset($_GET['success']) === true && empty($_GET['success']) === true) { 
    echo 'Your details have been updated!'; 
} else { 
if (empty($_POST) === false && empty($errors) === true) { 

    $update_data = array(
     'info'  => $_POST['info'], 
     'website' => $_POST['website'], 
     'location' => $_POST['location'], 
     'name'  => $_POST['name'], 
     'email'  => $_POST['email'], 

    update_user($session_user_id, $update_data); 
    header('Location: settings.php?success'); 
     exit(); 

    } else if (empty($errors) === false) { 
    echo output_errors($errors); 
} 
?> 

Любые идеи о том, что может Я ошибаюсь?

+3

Пустая страница - 9 раз из 10 из-за синтаксической ошибки. –

ответ

3

Как @esqew сказал, что вы не закрыли свой массив, но также вы не закрыли свое первое заявление else.

<?php 
if (!empty($_GET['success'])) { 
    echo 'Your details have been updated!'; 
} 
else { 
    if (!empty($_POST) && empty($errors)) { 

     $update_data = array(
      'info'  => isset($_POST['info'])  ? $_POST['info']  : null, 
      'website' => isset($_POST['website']) ? $_POST['website'] : null, 
      'location' => isset($_POST['location']) ? $_POST['location'] : null, 
      'name'  => isset($_POST['name'])  ? $_POST['name']  : null, 
      'email' => isset($_POST['email']) ? $_POST['email'] : null, 
     ); 

     update_user($session_user_id, $update_data); 
     exit(header('Location: settings.php?success')); 
    } 

    if (!empty($errors)) { 
     echo output_errors($errors); 
    } 
} 
?> 

Как вы можете видеть, ив также изменил свои сравнения, нет никакой необходимости проверить булево значение Исети или пусто, просто используйте ! для нет. Также проверьте значения $ _POST перед использованием.

5

Вы не закроете array заявление:

$update_data = array(
    'info'  => $_POST['info'], 
    'website' => $_POST['website'], 
    'location' => $_POST['location'], 
    'name'  => $_POST['name'], 
    'email'  => $_POST['email'], 

должен быть

$update_data = array(
    'info'  => $_POST['info'], 
    'website' => $_POST['website'], 
    'location' => $_POST['location'], 
    'name'  => $_POST['name'], 
    'email'  => $_POST['email'] 
); 

Хотя за рамки вашего вопроса, то это хорошо, чтобы упомянуть, если вы получаете пустые страницы с таким кодом, вы можете проверить свои уровни отчетов об ошибках. При правильной настройке PHP генерирует довольно описательные ошибки. Для получения дополнительной информации, вы можете взглянуть на error_reporting() entry in the PHP manual.

+1

Возможно, стоит указать отчет об ошибках – Steve

+0

@ user574632 Абсолютно согласованный - отредактирован. – esqew

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