从 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 并将其存储在变量中的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 从 URL 获取值并将其发送到 javascript 变量时出错
PHP 通过 id 从跨度中获取文本/值并将其放入具有 cURL 的外部站点的变量中
如何从 ngrx 存储中获取数据并将其更新到 Observable 变量中?