你能继续使用$ _POST变量吗?

时间:2012-03-01 02:01:51

标签: php html variables

  

可能重复:
  PHP Pass variable to next page

这是我目前的代码:

$search = $_POST['s'];
$search = strtoupper($search); 
$search = strip_tags($search); 
$search = trim($search); 
$search = mysql_real_escape_string($search);

我需要能够将$ search变量传递给我的第二,第三等页面。

我是php的初学者,我有点卡在这里

4 个答案:

答案 0 :(得分:1)

会议似乎是你的朋友。在最简单的形式中,会话将把数据放入发送到用户浏览器和从用户浏览器发送的cookie中。确保在对会话执行任何操作之前调用session_start(),这将启动或恢复用户的会话。之后,您可以使用$_SESSION作为将在页面之间保留的全局关联数组。

Xander已将您与文档相关联, Here are some simple examples。确保你理解session_start(),否则你会有一些错误。

N.B。不要将此基本会话格式用于敏感数据。查看使用memcache之类的东西来存储数据,然后简单地将memcache密钥放入$ _SESSION。另外,请考虑加密会话。这些是在处理用户身份验证/登录时应该考虑的更高级的事情

答案 1 :(得分:1)

虽然建议使用$_SESSION,但另一个选项是在后续生成的网页上使用隐藏字段(具有相同名称并填充适当的值)。然后,当这些页面被回发时,它们也将在$_POSTS中提供该字段(此时由隐藏字段提供,而不是原始文本字段)。

优点:

  • “绑定到当前页面”;非常适合某些页面上下文相关的东西! (会话的范围是浏览器,而不是页面。)
  • 避免使用会话/ cookie(如果其他目的已经需要会话,则不会出现问题)。

缺点:

  • “绑定到当前页面”:当从后面/下一个上下文之外导航时,值将丢失。 (正如Bert所说,稍作修改可以使用这种“breadcrumb”方法来改变URL并使用GET参数,这可以使数据普遍持久,但代价是“不太漂亮”的URL。)
  • 数据必须被视为不受信任且不安全,就像原始帖子一样。
  • 需要额外[隐藏]字段的填充。

快乐的编码。

答案 2 :(得分:1)

假设它是一个搜索字符串,则理智的方法:

首先,将表单的方法更改为GET 接下来,使用GET方法在查询字符串中传递搜索变量。

您必须应用的唯一修改是urlencode()

所以,代码应该是

$query_string = 'search='.urlencode($_GET['search']);
echo "<a href='?page=2&$query_string'>page 2</a>";

生成HTML代码

<a href="?page=2&search=search+string">page 2</a>

因此用户可以点击此链接,您将获得搜索字符串

答案 3 :(得分:0)

在您要访问搜索变量的每个页面中使用session_start()

在第一页

$search = $_POST['s'];
$search = strtoupper($search); 
$search = strip_tags($search); 
$search = trim($search); 
$search = mysql_real_escape_string($search);

将会话变量设置为

$_SESSION['searchStr']=$search

然后在每个其他页面

session_start(); // at the very begining

if(isset($_SESSION['searchStr'])) {

   $search=$_SESSION['searchStr']
}