PHP get_file_contents发布会话页面导航

时间:2018-03-28 19:50:20

标签: php session post navigation

我有一个功课,从搜索帖子数据中检索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开始会话。(代码不可见)。 对不起,我的英语不好,我是弗朗哥 - 撒克逊。

1 个答案:

答案 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",
    )
);

那就是它!