哪个安全性更高?
在网页上包含供表单使用的PHP文件,还是在用户按下表单按钮时将用户定向到PHP文件?
示例1:包含“文件名”; 示例2:表单action =“ sendingtheuserhere.php” method =“ post”
谢谢
答案 0 :(得分:0)
通常,将包含处理表单数据的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链接。
第二,如果要合并两个文件,则每次有人打开您的表单时,您都会收到一封电子邮件。这是因为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请求是否确实存在。如果没有,您将看到“表格未填写”。之后,为了使请求对任何类型的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>