如何在不使用表单的情况下在PHP中发布变量,并从下一页访问该变量。
我真正想做的是发布一个这样的变量:
$username = "Sam";
$_POST[$username];
然后我尝试从我元刷新到的页面访问它。
有什么想法吗?
答案 0 :(得分:9)
你想要达到什么目的?我想你可能想要Sessions:
// page1.php
session_start();
$_SESSION['username'] = 'Sam';
header('Location: page2.php');
// page2.php
session_start();
print 'Hello, ' . $_SESSION['username'] . '!';
但是,如果您确定这是您想要的,请查看cURL,这将允许您发布到页面,但我不确定它是否会让您完全导航到它,可以这么说。但是你可以获得它的输出:
// page1.php
$curl = curl_init('http://www.mysite.com/page2.php');
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, array('username' => 'Sam'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
print $result; // prints "Hello, Sam!"
// page2.php
print 'Hello, ' . $_POST['username'] . '!';
答案 1 :(得分:3)
看看我对Passing Information Between PHP Pages这个问题的回答,我想你可能会感兴趣。它讨论了PHP页面之间几种现有通信方法之间的差异。
更具体地说,这是与您的问题有关的摘要:
使用$_GET
(直接在中传递的信息),您可以传递变量,具体取决于它们是什么以及您要实现的目标。
使用$_POST
(在HTTP标头中发布的信息到一个网址),您将无法重定向到某个网页,因为这是由浏览器完成的(客户端)而不是服务器(运行PHP脚本的地方)。你可以使用隐藏的表单和一些javascript来做帖子(和同时重定向)。这可能会有效,具体取决于您的目标受众,因为javascript并非万无一失;它可能在浏览器上被禁用。您也可以像某些人所说的那样使用CURL,尽管这会模仿您的服务器作为浏览器;数据将代表您的用户发布,但他不会自动重定向到 发布的数据页面。如果此帖子的最终结果是对用户进行身份验证,那么您的用户(客户端)将不会为他打开会话。
使用$_SESSION
,其中包含服务器端的信息。它(仅自动)将唯一标识符传递给浏览器(通常通过cookie),以将用户链接到您为其网站上的会话存储的数据。当然,这只有在您将用户重定向到您自己的应用程序而非其他网站时才有用。
因此,根据您的具体问题,有不同的解决方法。
答案 2 :(得分:0)
我不认为这是可能的。请尝试使用$ _GET或会话变量。
编辑:实际上,显然是you can use CURL。
或this method,看起来只是写入文件并再次读取变量。我认为你最好还是使用会话变量。
答案 3 :(得分:0)
目标网页会知道它是基于CURL还是基于表单的提交?