我有一个功课,从搜索帖子数据中检索http://wiki.webo-facto.com的第二个结果页面。像这样:
$postdata = http_build_query(
array(
'q' => 'catalogue',
'submit' => 'searchbutton'
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents('http://wiki.webo-facto.com/', false, $context);
没问题。
我的老师说:“一旦搜索完成,搜索条件就会存储在会话中。正是这个会话使导航工作”。
然后,我在同一个脚本中添加$_SESSION['post']=$postdata;
header('Location: getsecondpage.php')
所有这些都存储在poster.php
中。
现在是时候回顾getsecondpage.php
中的第二页:
session_start();
$postdata = $_SESSION['postdata'];
$opts2 = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context2 = stream_context_create($opts2);
$result2 = file_get_contents('http://wiki.webo-facto.com/resultspage-2.html', false, $context2);
echo $result2;
返回第一页的结果,这不是我想要的。
你的建议会非常有帮助。
注意:我也从poster.php
开始会话。(代码不可见)。
对不起,我的英语不好,我是弗朗哥 - 撒克逊。
答案 0 :(得分:0)
您的 sensei 是正确的,搜索条件存储在REMOTE SERVER SESSION中的会话BUT中。所以你需要做的是"告诉服务器你的会话cookie"能够保存并加载它!
因此,对于第一个查询,我们将使用我们的搜索条件执行POST并告诉远程服务器我们的会话名称和ID:
$opts = array('http' =>
array(
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
"Cookie: ".session_name()."=".session_id()."\r\n",
'content' => $postdata
)
);
对于第二个,服务器已经将我们的查询存储在SESSION中,因此我们不需要再次发送它。所以我们要做一个GET。还告诉服务器我们的会话名称和会话ID。
$opts2 = array('http' =>
array(
'method' => 'GET',
'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
"Cookie: ".session_name()."=".session_id()."\r\n",
)
);
那就是它!