现在有a,b三个页面
b是登陆页面,访问a页面,如果没有登录,则header到b页面
在b页面取不到HTTP_REFERER貌似HTTP_REFERER只能取到a标签和post,get方法的跳转
能不能伪造一个HTTP_REFERER,然后过去? 

解决方案 »

  1.   

    当然可以阿,就是个http头,用curl就可以模拟了。$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://localhost/test.php');
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_REFERER,   'http://www.baidu.com');
    $data = curl_exec($ch);
    curl_close($ch);
    echo $data;/* http://localhost/test.php */
    die($_SERVER['HTTP_REFERER']);
      

  2.   

    既然知道是a页面了,何必在b页面取HTTP_REFERER直接在a页面带参数转到b页面不就好了
      

  3.   

    后面直接header 跳转到b就好了 ? 
      

  4.   

    不好意思,我会错意了。。那代码是模拟http请求的。
    你的header跳转链接里加个参数不可以么。。
      

  5.   


    写一个函数,在判断当前是否登录合法用户的时候,可以同时获取当前文件名+$_SERVER['QUERY_STRING']
    这个作为一个参数传递给b页面,,,
      

  6.   


    header("Referer:http://www.xx.com");
    header("Location:/u/order");这样貌似不行
      

  7.   

    找了下以前用过的,不过跟你需求不太一样,我摘录一点供参考
    $phpSelf = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];$queryString = '';
    if (!empty($_SERVER['QUERY_STRING']))
    {
     $queryString = '?' . $_SERVER['QUERY_STRING'];
    }echo $phpSelf . $queryString;