从 URL 获取 ID 并将其存储在变量中

Posted

技术标签:

【中文标题】从 URL 获取 ID 并将其存储在变量中【英文标题】:Get ID from URL and store it in variable 【发布时间】:2016-10-19 13:58:37 【问题描述】:

我需要从 URL 获取数据,例如 domain.com/?id=username

用户名因用户而异...一旦他们访问带有此类链接的网站,他们就可以在网站上四处走动,然后在某个时候填写表格。由于他们在网站上移动,因此 url 在路径中不会有 ?id=username,因此我需要将该数据存储在变量中以便能够与表单一起发送。

我假设我需要为每个会话设置和存储 cookie(以便 cookie 在会话/浏览器退出后刷新)

我使用 ob_start() 因为我必须在正文中实现此代码,此时标头已经发送。

ob_start(); 
session_start();
$affid = $_GET['id'];
setcookie('affid',$affid, 0, "/");
$finalaffID = $_COOKIE['affid'];
ob_end_clean(); 
echo '<span class="testoutput">'.$finalaffID.'</span>';

经过一些尝试,我得到了这段代码,但在我移动几页后它没有存储值,它只显示初始页面访问。

有什么想法吗?

【问题讨论】:

来自文档:“一旦设置了 cookie,就可以在 下一页加载 时使用 $_COOKIE 数组访问它们。 " php.net/manual/en/function.setcookie.php 将 ID 存储在会话中,以便您可以在任何页面中使用它:$_SESSION[ "id" ] = $_GET[ "id" ];,您不需要任何表单或 cookie(不要忘记每个页面中的 session_start();!)。 "我假设我需要为每个会话设置和存储 cookie(以便 cookie 在会话/浏览器退出后刷新)" 是的,当浏览器关闭,cookie 可以有更长的寿命。如果你想在那个页面上使用cookie的内容,在重新加载之前,使用$affid,在页面刷新之后,或者访问另一个页面,你可以使用$_COOKIE['affid'] 【参考方案1】:

您可以使用会话变量。

$_SESSION["id"] = $_GET["id"];

这个会话变量可以在会话打开的任何地方访问。只需使用$_SESSION["id"] 调用它。

index.php

网址:www.domain.com/?id=user

    <?php
         session_start();
         if (isset($_GET["id"])) 
              $_SESSION["id"] = $_GET["id"];
    
?>

otherpage.php

网址:www.domain.com/otherpage.php

<?php
session_start();
if (isset($_SESSION["id"]))
echo $_SESSION["id"];

?>

【讨论】:

感谢各位的帮助。 $_SESSION["id"] = $_GET["id"];当我在初始页面加载时回显它时确实会出现这种情况,但是,当我导航到其他页面时,它不会回显任何内容,因为出于某种原因它的空白/空。 @ArchieVigaca 所有试图使用$_SESSION 的页面必须在每个页面试图使用会话之前调用session_start(); 您还必须在该页面上致电session_start(); 不要,在覆盖变量的每个页面上都包含`=$_GET["id"];`。只设置一次就可以了 是的,每次加载页面时都会覆盖它。您可以将其包装在条件 if (!isset($_SESSION['id'])) $_SESSION['id'] = $_GET['id']; 中,或者仅将其放在其中一个页面上。【参考方案2】:

Jose 在会话中保存 ID 是正确的。有一篇关于它的好帖子,专门处理这里的 ID:Cookie vs Session for Storing IDs

但是,如果您想将其存储为 cookie,此代码将存储 ID。

$id  = $_GET['id']);
setcookie('id', $id);

并且此代码允许您检索 ID!

echo $_COOKIE['id'];

【讨论】:

谢谢@ray Li。我选择了会话变量选项,但您的解决方案也有效。 是的!使用会话是要走的路。比 cookie 好得多,也更容易更新 :-)

以上是关于从 URL 获取 ID 并将其存储在变量中的主要内容,如果未能解决你的问题,请参考以下文章

在选择选项中获取所选项目的 id 并将其发送到 URL

使用 PHP 从 URL 获取值并将其发送到 javascript 变量时出错

PHP 通过 id 从跨度中获取文本/值并将其放入具有 cURL 的外部站点的变量中

如何从 ngrx 存储中获取数据并将其更新到 Observable 变量中?

如何从存储过程中获取 SQL 字符串结果并将其保存在 C# Windows 应用程序字符串变量中

接受用户的员工编号 从“员工”表中获取员工详细信息并将其存储到 PL SQL 记录类型变量并打印相同