我写了一些代码,它甚至可能没有运行,还没有尝试过。但是如果需要的话,我已经用if else编写了所有内容。我想不出更好的写作方式。对你来说有更好的方法吗?
如果提交了带有“email_notification”字段的表单,代码将进入脚本的头部并拦截页面的构建。如果是这样,它确实是这样,检查他们是否已输入电子邮件地址,以及他们订阅的项目是否存在,然后添加它们,并为每个else语句提供错误状态消息。最终,它会重定向到另一个页面,其结果是发生了什么,并终止了脚本其余部分的执行。
感谢。
if (isset($_POST['email_notification'])) {
if (!empty($_POST['software_id'])) {
if (!empty($_POST['email_address'])) {
if ($result = mysql_query("SELECT shortname, fullname FROM soft_data WHERE shortname = '{$_POST['software_id']}'")) {
$fullname = mysql_fetch_array($result);
if (false !== mysql_query("INSERT INTO email_subs(soft_name, email_address) VALUES('{$_POST['software_id']}', '{$_POST['email_address']}')")) {
$status = "Your email address will be notified when " . $fullname['fullname'];
}
} else {
$status = "Software ID not found.";
}
} else {
$status = "No email address entered.";
}
} else {
$status = "No software ID entered.";
}
header("Location: http://example.com/subscription/?status=$status");
die();
}
答案 0 :(得分:1)
例如:
$errors = array();
if (empty($_POST['software_id'])) $errors[] = 'No software ID entered.';
if (empty($_POST['email_address'])) $errors[] = 'No email address entered.';
...
if (count($errors)) {
// display errors
} else {
// process
}
答案 1 :(得分:0)
我要么在一个方法中嵌入该批次并返回状态(字符串)或true(如果成功),或者构建一个帮助方法来输出状态并结束脚本,如下所示:
<?php
function reportStatus($status) {
header("Location: http://example.com/subscription/?status=$status");
exit();
}
if (!isset($_POST['email_notification']))
reportStatus("No email address entered.");
if (empty($_POST['software_id']))
reportStatus("No software ID entered.";
if (empty($_POST['email_address']))
reportStatus("No email address entered.");
if (false === $result = mysql_query("SELECT shortname, fullname FROM soft_data WHERE shortname = '{$_POST['software_id']}'"))
reportStatus("Software ID not found.");
$fullname = mysql_fetch_array($result);
if (false !== mysql_query("INSERT INTO email_subs(soft_name, email_address) VALUES('{$_POST['software_id']}', '{$_POST['email_address']}')"))
reportStatus("Your email address will be notified when " . $fullname['fullname']);
//Is above actual an error??
/* Rest of script processing goes here*/
?>
答案 2 :(得分:0)
您还可以执行类似的操作以进行快速变量状态检查:
function reportStatus($status) {
header("Location: http://example.com/subscription/?status=$status");
exit();
}
$ar = array(
'email_notification' => null,
'software_id' => 'No software ID entered.',
'email_address' => 'No email address entered.'
);
$df = array_diff($ar, $_POST);
if (!empty($df)) {
$status = current($df);
if (!empty($status)) {
report_status($status);
}
}
而不是继续你的代码...