我创建了一个设置页面来更新用户信息。 (我已经成功创建了一个类似的页面来更改密码,并且运行正常。)
以下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);
}
?>
关于我可能做错什么的任何想法?
答案 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值。