Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取唯一的URL代码并放入PHP会话中_Php_Session_Url_Get_Isset - Fatal编程技术网

获取唯一的URL代码并放入PHP会话中

获取唯一的URL代码并放入PHP会话中,php,session,url,get,isset,Php,Session,Url,Get,Isset,当用户访问我的站点并在页面中使用它时,我试图从URL检索“活动”代码。然后,此活动代码将存储在访问的其余页面的会话中,因此如果用户查看站点,它不会丢失。当然,如果访问的用户在URL中没有“活动”代码(比如他们来自谷歌),那么我想给他们分配一个默认代码。我想我已经掌握了以下内容,因为它似乎在我的服务器上工作,但我不确定它是否代码太多和/或存在安全风险 <?php session_start(); // starts the PHP session data if ( isset( $_GE

当用户访问我的站点并在页面中使用它时,我试图从URL检索“活动”代码。然后,此活动代码将存储在访问的其余页面的会话中,因此如果用户查看站点,它不会丢失。当然,如果访问的用户在URL中没有“活动”代码(比如他们来自谷歌),那么我想给他们分配一个默认代码。我想我已经掌握了以下内容,因为它似乎在我的服务器上工作,但我不确定它是否代码太多和/或存在安全风险

<?php
session_start(); // starts the PHP session data

if ( isset( $_GET['campaign'] ) ) // check if there is a 'campaign' code in the URL as a variable
{
    $campaign = $_GET['campaign']; // first, if there is a 'campaign' code in the URL use that$campaign = 
}
elseif ( isset( $_SESSION['campaign'] ) ) // if no campaign code is in the URL but there is session data for the 'campaign' code use that - usually on other pages on the same server
{
    $campaign = $_SESSION['campaign'];
}
else // Otherwise, if no campaign code is either in the URL or session data, use the default 'campaign' code
{
    $campaign = "test1";
}

//save the 'campaign' value in a session
$_SESSION['campaign'] = $campaign; // store session data
?>

然后,无论我想在页面中的何处添加活动代码,我都将使用:

<?php echo $campaign; ?>


提前感谢您的回答。

这取决于您以后如何使用此值。例如,若您将会话存储在数据库中,并且您也有一个用于该值的字段,那个么您需要首先对其进行转义。没有看到来自该代码的任何其他可能的风险。

使用
如果(!isset($\u GET['campaign'])
,您正在检查变量是否不存在。请注意:)您也在添加;在if条件之后。虽然这并不是错误的,但它会让你得到意想不到的结果。谢谢,下面的练习会更好吗<代码>谢谢。我是这个网站的新手,所以我花了一段时间才意识到你修改了代码。现在刚试过,效果很好。我正在考虑完全删除“isset”引用,这似乎也行得通。这样做有什么影响吗<代码>首先,如果($campaign=$\u GET['campaign']),那是什么将要检查。如果($\u GET['campaign']),您可以这样做
,然后检查
$\u GET['campaign']
中是否应该有某些内容,否则
if
将不为真。但这也是错误的,因为你不可能是100%的舒尔,在数组
$\u GET
中会有索引
活动
。如果没有,它会给你一个警告或错误。不记得了。无论哪种方法,isset都是检查此索引是否存在的最佳方法。目前,您只是在if条件语句中分配值。