在PHP电子邮件中设置会话';好像不行

在PHP电子邮件中设置会话';好像不行,php,email,session,Php,Email,Session,哈哈,这个问题在谷歌似乎从来没有被问过 所以,我想做的是通过php表单发送电子邮件。这种情况下,注册会员将通过在文本区域键入尽可能多的电子邮件地址,邀请他们的朋友访问我们的页面。当他们提交表单时,表单将向他们在文本区域中输入的所有电子邮件地址发送电子邮件 这封电子邮件实际上是一封新闻信。在电子邮件中,有一些产品要显示在已寻址的电子邮件中 我想对电子邮件中的$_会话做的是:当拥有电子邮件地址的人单击新闻信函中的某个产品并进入页面时,该页面将获得他获得该页面链接的人 [编辑] 我不想用这样的字符串来

哈哈,这个问题在谷歌似乎从来没有被问过

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

这封电子邮件实际上是一封新闻信。在电子邮件中,有一些产品要显示在已寻址的电子邮件中

我想对电子邮件中的$_会话做的是:当拥有电子邮件地址的人单击新闻信函中的某个产品并进入页面时,该页面将获得他获得该页面链接的人

[编辑]

我不想用这样的字符串来实现它:
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中的一些测试




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



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

请查看电子邮件中的链接:

Click this <a href="index"> link </a>
Click this <a href="http://somewebsite.com/index?referral=' . urlencode($someToken) . '"> link </a>
您可以使用该值来检查数据库中正在跟踪的任何数据。这将告诉您是哪个推荐将特定的新用户带到了该站点


您可以为多个目的生成多个令牌,以及您希望跟踪多少维度以进行转介。

您有一些误解

该会话不会被带入电子邮件中。达到目的最简单的方法是。。。。是的,一个标记

步骤:
  • mail()之前生成令牌。(任何唯一的随机字符串都可以)

  • 在生成链接(例如
    时,您将添加如下令牌:

  • 这一步也是在发送邮件之前进行的。您需要根据某个电子邮件地址保存该令牌。e、 g

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

    • 当有人使用此令牌访问您的站点时,您可以对照上表进行检查,并可以知道他来自哪个电子邮件


在电子邮件中单击的链接中,您在哪里包含推荐信息?会话不会扩展到当前使用网站的用户之外。点击电子邮件中的链接的用户需要有某种方法来确定他们来自何处,标准方法是在链接中包含一些表示引用的查询字符串值。就我对这个问题的理解而言,这并不是你想要的方式。你需要在链接中有某种标识。类似于
例如,token=blahblah
,您可以从邮件列表中查看。会话依赖于每个用户,并且在多个用户之间不能通用。您忘记在第一个代码块中添加会话_start()。@itachi,如果我使用token,那么它只能将用户指向该令牌的一个链接。谢谢您的回答。非常好。但是,如果我设置了一个令牌,您可以看到它仅用于一个链接。我想用这封新闻信来展示我们的产品,每个产品都有自己的链接。@klaudia:你可以在多个链接中添加标记。变量可以重复使用。一旦用户访问该站点,您就可以在数据库中永久跟踪最初将他们带到该站点的推荐。在将来的任何时候,您为该用户生成任何输出时,都可以根据为该用户跟踪的数据有条件地修改该输出,就像任何数据驱动的web应用程序一样。没有什么能阻止你做你想做的事情。那么,你能帮我如何在浏览器url中隐藏令牌,但仍然能够获得它吗?你不需要隐藏令牌。如果我不隐藏它,那么它可以被人更改。当人们更改它时,它将向数据库发送未知令牌。如果向数据库发送未知令牌,则向他们显示404错误页面。他们没有获得所需的页面,因为他们使用的url不是您想要的。您无法使用会话。这在技术上是不可能的。(除非你拥有所有的邮件服务器)。令牌方式是每个站点使用的方式。当你收到在任何网站上签名的验证邮件时,检查他们的链接。他们有一个代币。。。。这是标准做法。
Click this <a href="http://somewebsite.com/index?referral=abc123"> link </a>
$_GET["referral"]
 ID    email              token
 1    mail@example.com    abcdefg1
 2    mail2@example.com   abcdefg2