PHP导致空白页面 - 更新用户信息

时间:2014-07-21 21:39:44

标签: php

我创建了一个设置页面来更新用户信息。 (我已经成功创建了一个类似的页面来更改密码,并且运行正常。)

以下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);
}
?>

关于我可能做错什么的任何想法?

2 个答案:

答案 0 :(得分: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 :(得分:3)

正如@esqew所说,你没有关闭你的阵列,但你还没有关闭你的第一个声明。

<?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);
    }
}
?>

正如您所看到的,我也改变了您的比较,无需来检查isset的bool值或为空,只需使用!即可。在使用之前,请检查$ _POST值。