在两个 PHP 页面之间传递变量,而不使用表单或页面的 URL

2022-08-30 18:54:06

我想将几个变量从一个PHP页面传递到另一个PHP页面。我没有使用表单。变量是目标页面在出现问题时将显示的一些消息。如何将这些变量传递到其他PHP页面,同时保持它们不可见

例如,假设我有这两个变量:

//Original page
$message1 = "A message";
$message2 = "Another message";

我想将它们从第1页.php传递到第2页.php。我不想通过 URL 传递它们。

//I don't want
'page2.php?message='.$message1.'&message2='.$message2

有没有办法(也许通过$_POST?)发送变量?如果有人想知道为什么我希望它们是不可见的,我只是不想要一个大的URL地址,在上传文件时带有“&message=Problem”等参数。这不是一个有效的.zip文件“,我没有太多时间更改页面的重定向以避免此问题。


答案 1

会议对您来说是个不错的选择。看看PHP手册中的这两个例子:

第1页代码.php

<?php
// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal']   = 'cat';
$_SESSION['time']     = time();

// Works if session cookie was accepted
echo '<br /><a href="page2.php">page 2</a>';

// Or pass along the session id, if needed
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>

第2页代码.php

<?php
// page2.php

session_start();

echo 'Welcome to page #2<br />';

echo $_SESSION['favcolor']; // green
echo $_SESSION['animal'];   // cat
echo date('Y m d H:i:s', $_SESSION['time']);

// You may want to use SID here, like we did in page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>

为了澄清问题 - SID是PHP的预定义常量,其中包含会话名称及其id。示例 SID 值:

PHPSESSID=d78d0851898450eb6aa1e6b1d2a484f1

答案 2

以下是简要列表:

  • JQuery with JSON stuff.(http://www.w3schools.com/xml/xml_http.asp)

  • $_SESSION - 可能是最好的方法

  • 自定义 Cookie - 不会*总是*工作。

  • HTTP标头 - 某些代理可以阻止它。

  • 数据库,如MySQL,Postgres或其他东西,如Redis或Memcached(例如,类似于自制会话,由IP地址“锁定”)

  • APC - 类似于数据库,不会*总是*工作。

  • HTTP_REFERRER

  • URL哈希参数,例如 http://domain.com/page.php#param - 您将需要一些JavaScript来收集哈希。- gmail大量使用这个。


推荐