我根据本教程制作了一个联系表单:http://blog.teamtreehouse.com/create-ajax-contact-form
我在我的服务器上使用的是PHP5.3.10-1Ubuntu3.4版本,但我遇到了http_response_code();
的问题,这正是上面链接中的示例教程所使用的。我读过http_response_code();
仅适用于PHP5.4。因此,我转而使用header();
。
我的表单工作得很好,提交时显示成功消息,而不是使用http_response_code();
时出现错误,但我的PHP不是那么好,我想知道我所做的是可以接受的,还是应该换一种方式?如果是,请更正我的代码。
下面是我的mailer.php文件的内容,您可以看到我已经注释掉了http_response_code();
并且正在使用header();
。
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Get the form fields and remove whitespace.
$name = strip_tags(trim($_POST["name"]));
$name = str_replace(array("\r","\n"),array(" "," "),$name);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$phone = trim($_POST["phone"]);
$company = trim($_POST["company"]);
$minbudget = trim($_POST["minbudget"]);
$maxbudget = trim($_POST["maxbudget"]);
$message = trim($_POST["message"]);
$deadline = trim($_POST["deadline"]);
$referred = trim($_POST["referred"]);
// Check that data was sent to the mailer.
if ( empty($name) OR empty($phone) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Set a 400 (bad request) response code and exit.
//http_response_code(400);
header("HTTP/1.1 400 Bad Request");
echo "Error (400). That's not good, refresh and try again otherwise please email me and let me know you are having trouble submitting this form.";
exit;
}
// Set the recipient email address.
// FIXME: Update this to your desired email address.
$recipient = "myemail@domain.com";
// Set the email subject.
$subject = "Website enquiry from $name";
// Build the email content.
$email_content = "Name: $name\n";
$email_content .= "Email: $email\n\n";
$email_content .= "Phone: $phone\n";
$email_content .= "Company: $company\n\n";
$email_content .= "Budget: $minbudget $maxbudget\n";
$email_content .= "Deadline: $deadline\n";
//$email_content .= "Max Budget: $maxbudget\n";
$email_content .= "\n$message\n\n";
$email_content .= "Referred: $referred\n";
// Build the email headers.
$email_headers = "From: $name <$email>";
// Send the email.
if (mail($recipient, $subject, $email_content, $email_headers)) {
// Set a 200 (okay) response code.
//http_response_code(200);
header("HTTP/1.1 200 OK");
echo "Thank You! I'll be in touch soon.";
} else {
// Set a 500 (internal server error) response code.
//http_response_code(500);
header("HTTP/1.0 500 Internal Server Error");
echo "Error (500). That's not good, refresh and try again otherwise please email me and let me know you are having trouble submitting this form.";
}
} else {
// Not a POST request, set a 403 (forbidden) response code.
//http_response_code(403);
header("HTTP/1.1 403 Forbidden");
echo "Error (403). That's not good, refresh and try again otherwise please email me and let me know you are having trouble submitting this form.";
}
我通过查看PHP源代码来确定具体发生了什么,就我自己的类似问题回答了这个问题。
这两种方法在功能上基本上是等价的。http_response_code
基本上是编写http状态头的一种简写方式,附加的好处是PHP将通过将您的响应代码与它在php-src/main/http_status_codes.h中维护的枚举中的一个值进行匹配,从而得出一个合适的原因短语来提供。
请注意,这意味着您的响应代码必须与PHP知道的响应代码匹配。您不能使用此方法创建自己的响应代码,但是可以使用header
方法。还请注意,http_response_code
仅在PHP 5.4.0及更高版本中可用。
简而言之-http_response_code
和header
之间用于设置响应代码的区别:
>
使用http_response_code
将使PHP匹配并应用硬编码到PHP源代码中的原因短语列表中的原因短语。
由于上面的第1点,如果使用http_response_code
,则必须设置PHP知道的代码。您不能设置自己的自定义代码,但是,如果使用header
函数,您可以设置自定义代码(和原因短语)。
问题内容: 我想在我的JTable派生类的标题中设置标签的垂直对齐方式。 我知道 我的标题比字体高得多,我想将文本 放在 垂直中心的 下方 。 如何做到这一点而又不至于压倒一切? 谢谢 问题答案: 一种方法是设置,默认情况下返回,例如
在JavaScript的世界里,一切都是对象。 但是某些对象还是和其他对象不太一样。为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // 'number' typeof NaN; // 'number' typeof 'str'; // 'string' typeof true; // 'boolean' typeof undefined
你可以同时在同一个图表上显示多个实例的指标,以比对和分析数据。图表上的每一条线或面积表示已选择实例的性能。选择左侧窗格中的实例以将其指标添加到图表。以同样的方式从图表中删除指标。
我正在尝试突出显示由鼠标悬停的瓷砖。这是我的代码: 编辑: 光标对象不在鼠标下面,我如何修复和对齐它?
问题内容: 你能给我一些有关对象头中确切存储的信息吗?我知道,这可能取决于JVM,但也许至少对于HotSpot?我正在寻找专门针对第一行的确切描述。 我已经阅读了一些信息,这些信息无法用我找到的信息进行正面验证。也许你有指向全部内容的OpenJDK Wiki的链接? 问题答案: 对象头由一个标记词和一个klass指针组成。 所述标记字具有(字大小在32位体系结构中,在64位体系结构)和 在克拉斯指
问题内容: 基本上,我有一个JTable包含具有右对齐单元格但左对齐标题的列,这看起来确实很糟糕。我想在不更改标题的“外观”的情况下,将这些列的标题右对齐。 谢谢 问题答案: 这是修改表格的的另一种方法。对于此用法,这不是严格必要的,但可以最大程度地减少对UI委托外观的影响。 典型用法: 自定义标题渲染器: