在我的客户下订单后,我使用以下代码发送电子邮件确认,但我想阻止PHPSESSID包含在此电子邮件中:
session.verify = False
在PHP文件的顶部,我有关于SESSION id
的以下内容$body = "";
foreach ($_REQUEST as $Field=>$Value) {
if($Value != ''){
$body .= "$Field: $Value\n\n";
}
}
不知何故,这必须创建一个PHPSESSID字段,其值由我的$ body代码获取。
生成的电子邮件输出如下所示:
<?php session_start(); ?>
<?php if (!isset($_SESSION['id'])) : ?>
有趣的是,B1 Submit和PHPSESSID不是我正在使用的变量,但代码是找到这些值并返回它们。 B1提交令人恼火,但我认为PHPSESSID可能存在安全隐患。
我正在使用$ _REQUEST从用户那里获取表单数据,如下所示:
_fname: Mark
_lname: Smith
_Address_1: South St
_Phone: 123-456-7890
_email: my@email.com
_Date_Needed: 4/19/17
B1: Submit
PHPSESSID: (some string of characters)
也许我应该将其从$ _REQUEST更改为$ _GET,然后在电子邮件创建中使用$ _GET?
答案 0 :(得分:1)
问题可能在于使用$ _REQUEST而不是$ _POST或$ _GET,具体取决于您的表单/标题行为。这就是说我会猜测,因为你正在使用$ _REQUEST,所以你没有对正在发送的数据进行任何卫生。这可能导致您的邮件系统被垃圾邮件发送者劫持,导致被添加到反垃圾邮件黑名单中。您可能希望阅读正确保护邮件系统的安全性,或者使用涵盖这些问题的第三方库。
会话ID由session_start();
生成或重新生成/恢复答案 1 :(得分:1)
如果您的表单正在获取POST数据,那么只需将其更改为:
foreach ($_POST as $Field=>$Value) {
if($Value != ''){
$body .= "$Field: $Value\n\n";
}
}
如果它正在使用GET数据,请将其更改为$_GET
而不是$_POST
答案 2 :(得分:0)
您的提交听起来像是带有值的输入。
您可以使用提交类型没有值的按钮。
以下是一个示例,其中按钮不会显示在输出中:
附注:我在这里使用了POST方法。如果这不能解决问题,我会删除它。
<?php
$body = "";
foreach ($_REQUEST as $Field=>$Value) {
if($Value != ''){
$body .= "$Field: $Value\n\n";
// ...
}
}
?>
<form method="post">
abc1:
<input name="abc1" value="abc1a" type="text">
<br>
abc2:
<input name="abc2" value="abc2a" type="text">
<br>
abc3:
<input name="abc3" value="abc3a" type="text">
<br>
abc4:
<button name="abc4" type="submit">SUBMIT</button>
</form>