代码之家  ›  专栏  ›  技术社区  ›  kizawa tomaru

PHP get\u file\u内容会话后页面导航

  •  1
  • kizawa tomaru  · 技术社区  · 6 年前

    我有一个作业要检索第二页的结果 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;
    

    返回第一页的结果,这些结果不是我想要的。 你的建议会很有帮助。 注意:我也从 招贴画php 。(代码不可见)。 对不起,我的英语不好,我是佛朗哥萨克森。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Javier S    6 年前

    你的 唤醒 是正确的,搜索条件存储在会话中,但存储在远程服务器会话中。因此,您要做的是“告诉服务器您的会话cookie”,以便能够保存和加载它!

    因此,对于第一个查询,我们将发布搜索条件,并告诉远程服务器我们的会话名称和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
        )
    );
    

    对于第二个,服务器已经在会话中存储了我们的查询,所以我们不需要再次发送它。所以我们要做一个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",
        )
    );
    

    就这样!