不发送电子邮件给PHPSESSID

时间:2017-04-18 21:07:38

标签: php sessionid

在我的客户下订单后,我使用以下代码发送电子邮件确认,但我想阻止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?

3 个答案:

答案 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>