在PHP电子邮件中设置会话似乎不起作用

时间:2014-11-11 18:12:27

标签: php email session

大笑,似乎这个问题以前从来没有在谷歌问过。

所以,我想要做的是通过php表单发送电子邮件。这种情况是注册会员将通过在文本区域键入尽可能多的电子邮件地址来邀请他们的朋友访问我们的页面。当他们提交表单时,表单会将电子邮件发送到他们在文本区域中输入的所有电子邮件地址。

这封电子邮件实际上是一封新闻信。在电子邮件中,将会有一些产品显示给已发送电子邮件。

我想用电子邮件中的$ _SESSION做的是:当有电子邮件地址的人点击新闻信中的某个产品并进入页面时,该页面将从他获得链接的页面获取这页纸。

[编辑]

我不想用这样的字符串来实现它:index.php?email=$email&username=$username因为这只能设置为一个链接而不是全局链接而这也可以由新来的人操纵。

我的全球联系是指,正如我上面所提到的,我将在时事通讯中展示许多产品,例如../product-a.php,../product-b.php ,.. / product-c.php,.. / product-d.php等。它将使我们在所有页面中创建许多不同的会话,因为所有点击其中一个产品的用户将在决定购买产品或注册到网站之前首先浏览网站。

所以,这是我设置会话的代码:

      <?php

      $kemail=$_POST['to'];
      $to  = "$kemail";

      $referal_identity = "dsfsdf";
      $referal_address = "sadasdad@sada.com";
      $_SESSION['referal_identity']=$referal_identity;
      $_SESSION['referal_address']=$referal_address;



      $subject = 'Your Friend is good';
      // message
      $message = '<html>
                  <head>
                  <title>From our company</title>
                  </head>
                    <body>
                      <p>Your friend invite you. Click this <a href="index"> link </a> </p>
                    </body>
                  </html>';
      $headers  = 'MIME-Version: 1.0' . "\r\n";
      $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
      $headers .= 'From: Klaudia <klaudia@srsrsrthisesr.com>' . "\r\n";
      mail($to, $subject, $message, $headers);

      ?>


        <form action="" method="post">
          Email: <textarea name="to"></textarea>
                 <input type="submit" name="submit" value="send">
        </form>

在index.page中进行一些测试

                <?php
                session_start();        

                    $referal_identity=$_SESSION['referal_identity'];
                    $referal_address=$_SESSION['referal_address'];

                ?>

                        <body>


                        <?php echo $referal_identity ?>
                        <?php echo $referal_address ?>


                        <p><a href="test-referal.php">test-referal.php</a></p>

                        </body>



如果我们刚刚在电子邮件中创建了一个会话,那么我们可以在网页的所有链接的所有页面中一次性调用它。这就是为什么我想用SESSION或类似的东西来做这件事。


2 个答案:

答案 0 :(得分:1)

会话用于跟踪访问网站的特定用户相对较短的时间。他们没有做你想做的事。

查看电子邮件中的链接:

Click this <a href="index"> link </a>

该链接您拥有,用于将数据从该电子邮件正文传输回网站。因此该链接需要携带某种标识符。

当用户创建这些引荐时,生成某种令牌。任何唯一的字符串都可以。将该令牌保存在数据库中以标识有关该引用的信息。这可以包括您要跟踪的任何信息。然后在电子邮件中包含该令牌:

Click this <a href="http://somewebsite.com/index?referral=' . urlencode($someToken) . '"> link </a>

所以用户会点击这个:

Click this <a href="http://somewebsite.com/index?referral=abc123"> link </a>

现在,当该用户点击访问您网站的链接时,您可以获得该标记:

$_GET["referral"]

您可以使用该值检查数据库中是否有您正在跟踪的任何数据。这将告诉您哪个推荐人将该特定新用户带到了该网站。

您可以为多个目标生成多个令牌,以及要跟踪推荐的多个维度。

答案 1 :(得分:0)

你有一些误解。

会话不会被收录到电子邮件中。实现此目的的最简单方法是......是的,令牌

步骤:

  • mail()生成令牌之前。 (任何独特的随机字符串都可以)

  • 同时生成链接,例如<a href="http://example.com/product1">Product 1</a>您将添加如下标记:

    <a href="http://example.com/product1?token=$token">Product 1</a>

  • 这一步也是在发送邮件之前。你需要将该令牌保存在某个地方的电子邮件地址中。 e.g。

     ID    email              token
     1    mail@example.com    abcdefg1
     2    mail2@example.com   abcdefg2
    
    • 之后,发送邮件

    • 当有人按照此令牌进入您的网站时,您可以根据上表查看,并知道他来自哪封电子邮件。