HTML表单指向PHP文件或包含PHP文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML表单指向PHP文件或包含PHP文件相关的知识,希望对你有一定的参考价值。
哪个有更高的安全性?
将php文件包含在网页上以供表单使用,或者在用户按下表单按钮时将用户导向PHP文件?
示例1:包含'filename';示例2:form action =“sendingtheuserhere.php”method =“post”
谢谢
通常,将包含表单数据的PHP代码包含在包含表单的文件中或者为了相同的目的而拥有单独的PHP文件并不重要。
重要的是你如何处理表单数据。以下是一个例子:
form.php - 具有html表单
<html>
<head></head>
<body>
<form action="send.php" method="post">
<input name="subject" />
<textarea name="message"></textarea>
<button>Send</button>
</form>
</body>
</html>
send.php - 处理表单数据
<?php
$user_subject = $_POST['subject'];
$user_message = $_POST['message'];
$send_to = 'myemail@gmail.com';
mail($send_to, $user_subject, $subject_message);
?>
现在有了上面的代码,你应该知道几件事。
- send.php文件具有不安全的代码。
- 访问send.php将向$ send_to地址发送一封电子邮件,无论是否有人提交表单。
现在,如果您必须分开文件,每次访问send.php文件时,都会发送一封电子邮件。那就是你填写表格还是只是访问send.php链接。
其次,如果您要合并这两个文件,那么每当有人打开您的表单时,您都会收到一封电子邮件。那是因为mail();
函数每次都被触发。
要解决此问题,您必须确保仅在提交表单时触发邮件功能。您可以通过将send.php中的代码更改为以下内容来执行此操作:
新的send.php
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") { // checks whether a POST request actually exists or not.
$user_subject = strip_tags(trim($_POST['subject']));
$user_message = strip_tags(trim($_POST['message']));
$send_to = 'myemail@gmail.com';
mail($send_to, $user_subject, $subject_message);
} else {
echo 'form not filled';
}
?>
现在,在上面的代码中,我们做的第一件事就是检查POST请求是否确实存在。如果没有,你会看到“Form not filled”。在那之后,为了使请求对任何类型的code injections更安全,我们使用了PHP trim();
和strip_tags();
函数。
你可以像这样组合两个PHP文件:
form.php的
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") { // checks whether a POST request actually exists or not.
$user_subject = strip_tags(trim($_POST['subject']));
$user_message = strip_tags(trim($_POST['message']));
$send_to = 'myemail@gmail.com';
mail($send_to, $user_subject, $subject_message);
}
?>
<html>
<head></head>
<body>
<form action="form.php" method="post">
<input name="subject" />
<textarea name="message"></textarea>
<button>Send</button>
</form>
</body>
</html>
以上是关于HTML表单指向PHP文件或包含PHP文件的主要内容,如果未能解决你的问题,请参考以下文章