Php 什么';通过多个页面跟踪访问者最简单的方法是什么?

Php 什么';通过多个页面跟踪访问者最简单的方法是什么?,php,html,cookies,Php,Html,Cookies,我有来自有机搜索和付费搜索的用户 有机用户登陆page.php,付费用户登陆page.php?source=paid page.PHP上的PHP变量将根据source字符串进行更改,以帮助我识别用户最初来自何处,例如,如果他从同一页面在我的网站上购买了一些东西,我会有一个指示 问题: 我的网站中有多个页面。一旦付费用户决定导航到另一个页面,如page2.php,指示变量将不起作用,因为他导航到page2.php,而不是page2.php?source=paid 因此,一个可能的混乱解决方案是将字

我有来自有机搜索和付费搜索的用户

有机用户登陆
page.php
,付费用户登陆
page.php?source=paid

page.PHP
上的PHP变量将根据
source
字符串进行更改,以帮助我识别用户最初来自何处,例如,如果他从同一页面在我的网站上购买了一些东西,我会有一个指示

问题:

我的网站中有多个页面。一旦付费用户决定导航到另一个页面,如
page2.php
,指示变量将不起作用,因为他导航到
page2.php
,而不是
page2.php?source=paid

因此,一个可能的混乱解决方案是将字符串拖到整个网站上,在每个链接上放置一个
IF/ELSE
,在页面中所有
href
的末尾插入一个
?source=paid
字符串,在任何情况下,用户最初使用
?source=paid
字符串登陆

但是,还有其他选择吗?我想有一种方法可以用饼干来做?但我从来没有处理过饼干,更确切地说,我没有处理过,除非这很容易

谢谢

这正是我们的目的:

会话是一种根据唯一的会话ID为单个用户存储数据的简单方法。这可用于在页面请求之间保存状态信息。会话ID通常通过会话cookie发送到浏览器,该ID用于检索现有会话数据


要解决这个问题,我建议您使用会话

在第一页上,您需要使用如下内容设置会话变量:

<?php>
session_start();
if isset($_GET['source']) {$_SESSION['source'] = $_GET['source'];}

and the rest of your first page goes here..

?>
<?php>
session_start();
if ($_SESSION['source'] == 'paid')
{ paid version}
else 
{unpaid version}

?>

在其他页面上,您可以回忆sessionvariable,如下所示:

<?php>
session_start();
if isset($_GET['source']) {$_SESSION['source'] = $_GET['source'];}

and the rest of your first page goes here..

?>
<?php>
session_start();
if ($_SESSION['source'] == 'paid')
{ paid version}
else 
{unpaid version}

?>


使用
$\u会话的功能
是否要根据用户是否付费来更改内容?或者你只是想跟踪付费用户完成交易后的去向?前者需要会话,后者只需要cookies。是的,前者-我想根据是否是付费用户来更改内容。我不确定我是否理解会话和cookie之间的区别。为什么饼干是“正义的”?它们不是更复杂吗?@rockyraw:一个是六个,另一个是半打。会话是服务器端管理的,但它们需要cookie或
PHPSESSID
参数,以便服务器可以“调用”数据。Cookie是客户端的,每次访问都会传递,但很多时候访问者会禁用它们。因此,您可能最终通过查询参数“传递接力棒”(尽管是sessiond或source)。@bradcristie这些实例中的哪一个发生在Ronny Grønsdal的答案中建议的代码中?那么cookie一定要涉及吗?是否有一个好的,非常基本的教程来完成我想要的?这将告诉你如何使用它们。它们就像cookies和其他数组一样。有几件事需要知道(比如把
session\u start()
放在每页的顶部)。谢谢,我能在同一页上同时使用这两部分代码吗?(因为用户可以登陆
page2.php?source=paid
,然后进入
page.php
,所以我需要对所有页面进行相同的“处理”,以涵盖所有情况)是的,这是可能的,但您应该稍微更改一下,在设置源代码之前检查是否已设置源代码。