在两个.php页面之间传递变量

在两个.php页面之间传递变量,php,parameter-passing,Php,Parameter Passing,在我的主页上 $storeID= $_REQUEST['store']; $custID= $_REQUEST['cust']; 我在不同的页面上有到上面页面的链接,如下所示 在第1页 echo "<a class='btn btn-info' rel='nofollow' target='_blank' href='/go-to-store.php?store=" . $KID . "&cust=" . $user_ID . "'>" . "shop" . "</a

在我的主页上

$storeID= $_REQUEST['store'];
$custID= $_REQUEST['cust'];
我在不同的页面上有到上面页面的链接,如下所示

在第1页

echo "<a class='btn btn-info' rel='nofollow' target='_blank' href='/go-to-store.php?store=" . $KID . "&cust=" . $user_ID . "'>" . "shop" . "</a>";
echo”“;
第2页

echo "<form action='/go-to-store.php' target='_blank' method='post'>" 
. "<input type='hidden' name='store' value='$postid'>" 
. "<input type='hidden' name='cust' value='$user_ID'>" 
. "<button class='btn btn-mini btn-info' type='submit' style='margin-top:5px;'>" 
. "shop" . "</button>";
echo“”
. "" 
. "" 
. "" 
. “商店”。"";
这两种方式都是有效的、可接受的做事方式。我没有理由不向用户展示这些价值观,任何人改变这些价值观都没有伤害或动机


我正在跟踪我的网站上的一个问题,基本上缩小了任何可能的情况,在这些情况下,甚至可能有一个遥远的机会导致我的问题。

看起来,
$storeID
包含的数据只与网站上的一组特定页面相关,但人们可能希望链接到这些页面。它应该成为URL的一部分,以便人们可以链接到它


$custID
看起来像是包含了特定于用户的数据,但这些数据应该在整个站点中保持不变(除非用户注销,否则不会更改)。它应该存储在cookie中(或存储在服务器上的会话中,该会话与具有cookie的浏览器关联),并且不会在每个请求中传递。

使用cookie或会话存储数据,并在任何页面上使用它们

<?php
     session_start();
     $_SESSION['storeID'] = $_REQUEST['store'];
     $_SESSION['custID'] = $_REQUEST['cust'];

     // now access session variables from other pages
    echo "Store ID : ". $_SESSION['storeID']."<br />";
    echo "Cust ID". $_SESSION['custID'] 

     // to delete variable
     unset($_SESSION['storeID']);
     unset($_SESSION['custID'])
?>

用饼干

<?php

    // store varible in cookie for one day 
    setcookie("soreID", $_REQUEST['store'], 60*60*24);
    setcookie("custID", $_REQUEST['cust'], 60*60*24);

    // retrive data
    echo "Store ID : ". $_COOKIE['storeID']."<br />";
    echo "Cust ID". $_COOKIE['custID']   

    // delete cookie 
    setcookie("soreID", $_COOKIE['store'], time()-3600);
    setcookie("custID", $_COOKIE['cust'], time()-3600);
?>

选项1:通过
base64对变量进行编码,这样用户不解码就看不到变量。将变量放入url

$storeID= urlencode(base64_encode($_REQUEST['store']));
$custID= urlencode(base64_encode($_REQUEST['cust']));

// then use following to get data from url:

$storeID= base64_decode(urldecode($_GET['sid']));
$custID= base64_decode(urldecode($_GET['cid']));
选项2:使用会话。会话允许您将数据保存到服务器,因此它们不会显示给用户

session_start();
$_SESSION['storeID'] = $_REQUEST['store'];
$_SESSION['custID'] = $_REQUEST['cust'];

// then use following to get data from sessions:

session_start();
$storeID= $_SESSION['storeID'];
$custID= $_SESSION['custID'];
选项3:使用文本文件。牢记我不建议使用此选项,因为它会稍微加载服务器,并且不会超过其他选项。(您也可以使用dbs)

编辑:


使用
$\u SESSION
variables使用SESSION或cookie存储变量,不要在cookie中存储密码。我的网站是建立在wordpress之上的,但是保存信息的文件在外部。如果我在wordpress中移动cathing文件,我就可以轻松地获得custID,而无需发送它…我将以这种方式更改它。对不起,如果我的问题不够具体的话。与我现在的问题相比,这两个问题肯定更干净。但是,我移动变量的两种方式中的任何一种都有根本性的错误吗?我已经测试了,测试了,测试了,并且总是在我的接收页面上捕捉到正确的值。然而不知何故,这些值中时不时有一个注册为空?这可能是什么原因?问题可能根本不在我的范围内,但我只是想确定它不是。我打赌您没有检查用户是否没有设置这些字段。您还应该指定您正在使用的请求、get或post。查看我编辑的代码并尝试。值不是由用户设置的,而是始终设置的。值storeid从mysql数据库中获取其值,需要它来知道向客户发送哪个存储。用户ID由wordpress处理,对于所有未登录的用户为0,对于那些已登录的用户为正的unique int,用户ID用于跟踪谁去了那个商店。我将测试帖子而不是请求,但我不明白使用请求怎么会把事情搞砸。。。
session_start();
if(isset($_POST['store']) && isset($_POST['cust'])){
   $_SESSION['storeID'] = $_POST['store'];
   $_SESSION['custID'] = $_POST['cust'];
}
else {
   echo 'please fill are fields.'
}