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

时间:2013-12-14 15:09:23

标签: 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>";
第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>";

这两种方式都是有效的可接受的做事方式。我没有理由不向用户显示价值,任何人都没有改变这些价值的伤害或动机。

我正在追踪我网站上的一个问题,并且基本上缩小了任何可能出现问题的可能情况,甚至可能导致我遇到问题。

3 个答案:

答案 0 :(得分:0)

$storeID看起来包含的数据仅与网站上的一组特定网页相关,但人们可能想要链接到哪些网页。它应该构成URL的一部分,以便人们可以链接到它。

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

答案 1 :(得分:0)

使用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'])
?>

使用cookies

<?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);
?>

答案 2 :(得分:0)

选项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)

编辑:

session_start();
if(isset($_POST['store']) && isset($_POST['cust'])){
   $_SESSION['storeID'] = $_POST['store'];
   $_SESSION['custID'] = $_POST['cust'];
}
else {
   echo 'please fill are fields.'
}