不是电子邮件 PHPSESSID
Not email PHPSESSID
我的客户下订单后,我使用以下代码发送电子邮件确认,但我想防止 PHPSESSID 包含在该电子邮件中:
$body = "";
foreach ($_REQUEST as $Field=>$Value) {
if($Value != ''){
$body .= "$Field: $Value\n\n";
}
}
在 PHP 文件的顶部,我有以下关于 SESSION id
<?php session_start(); ?>
<?php if (!isset($_SESSION['id'])) : ?>
不知何故,这必须创建一个 PHPSESSID 字段,其值由我的 $body 代码获取。
生成的电子邮件输出如下所示:
_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)
有趣的是,B1 提交和 PHPSESSID 不是我使用的变量,但代码正在查找这些值并返回它们。 B1 提交令人恼火,但我认为 PHPSESSID 可能存在安全风险。
我正在使用 $_REQUEST 从用户那里获取表单数据,如下所示:
$_fname=$_REQUEST['_fname'];
$_lname=$_REQUEST['_lname'];
$_Address_1=$_REQUEST['_Address_1'];
也许我应该将其从 $_REQUEST 更改为 $_GET,然后在电子邮件创建中也使用 $_GET?
问题可能在于使用 $_REQUEST 而不是 $_POST 或 $_GET,具体取决于您的 form/header 行为。也就是说,我猜想因为您使用的是 $_REQUEST,所以您没有对发送的数据进行任何清理。这可能会导致您的邮件系统被垃圾邮件发送者劫持,从而导致被添加到反垃圾邮件黑名单中。您可能希望阅读有关正确保护邮件系统的内容,或使用涵盖这些问题的第 3 方库。
会话 ID 正在生成或 regenerated/resumed session_start();
如果您的表单正在获取 POST 数据,则只需将其更改为:
foreach ($_POST as $Field=>$Value) {
if($Value != ''){
$body .= "$Field: $Value\n\n";
}
}
如果它使用的是 GET 数据,请将其更改为 $_GET
而不是 $_POST
您的提交听起来像是一个带有值的输入。
您可以使用提交类型为无值的按钮。
这是一个示例,其中按钮不会显示在输出中:
旁注:我在这里使用了 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>
我的客户下订单后,我使用以下代码发送电子邮件确认,但我想防止 PHPSESSID 包含在该电子邮件中:
$body = "";
foreach ($_REQUEST as $Field=>$Value) {
if($Value != ''){
$body .= "$Field: $Value\n\n";
}
}
在 PHP 文件的顶部,我有以下关于 SESSION id
<?php session_start(); ?>
<?php if (!isset($_SESSION['id'])) : ?>
不知何故,这必须创建一个 PHPSESSID 字段,其值由我的 $body 代码获取。
生成的电子邮件输出如下所示:
_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)
有趣的是,B1 提交和 PHPSESSID 不是我使用的变量,但代码正在查找这些值并返回它们。 B1 提交令人恼火,但我认为 PHPSESSID 可能存在安全风险。
我正在使用 $_REQUEST 从用户那里获取表单数据,如下所示:
$_fname=$_REQUEST['_fname'];
$_lname=$_REQUEST['_lname'];
$_Address_1=$_REQUEST['_Address_1'];
也许我应该将其从 $_REQUEST 更改为 $_GET,然后在电子邮件创建中也使用 $_GET?
问题可能在于使用 $_REQUEST 而不是 $_POST 或 $_GET,具体取决于您的 form/header 行为。也就是说,我猜想因为您使用的是 $_REQUEST,所以您没有对发送的数据进行任何清理。这可能会导致您的邮件系统被垃圾邮件发送者劫持,从而导致被添加到反垃圾邮件黑名单中。您可能希望阅读有关正确保护邮件系统的内容,或使用涵盖这些问题的第 3 方库。
会话 ID 正在生成或 regenerated/resumed session_start();
如果您的表单正在获取 POST 数据,则只需将其更改为:
foreach ($_POST as $Field=>$Value) {
if($Value != ''){
$body .= "$Field: $Value\n\n";
}
}
如果它使用的是 GET 数据,请将其更改为 $_GET
而不是 $_POST
您的提交听起来像是一个带有值的输入。
您可以使用提交类型为无值的按钮。
这是一个示例,其中按钮不会显示在输出中:
旁注:我在这里使用了 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>