我现在有一个A页面,是直接访问的,如: http://xx.com/a.php我现在想在这个a.php中模拟出一个环境,是由另外一个页面POST提交过来的数据,包手,http_referer,还有post信息,get信息,就好像是从另外一个页面提交过来一样。请问怎么才能做到?
我现在是用$_POST['b']="bb"的方法来添加post变量,请问除了这种方法外,还有别的方法吗?

解决方案 »

  1.   

    比如正常情况下
    a.html有表单元素name,pwd,city提交到a.php后,可以在a.php处理数据,可以获得
    echo $_POST['name']……
    echo $_SERVER['HTTP_REFERER'] //a.html
    还可以知道本页面的url地址是什么样的情况,a.php?action=add现在,我不想从a.html提交,而是直接访问a.php,在a.php中会调用一个处理方法,callback()
    在callback中,是直接用$name = $_POST['name']方法来获得参数值的,包括$ref = $_SERVER['HTTP_REFERER'];现在问题是,直接访问A.PHP页面后,callback就无法获得需要处理的数据了,而且我这么做是想要做批量处理。有什么办法,能创造出来这些数据不?
      

  2.   

    a.html是不是被包含到a.php中了?
    如果这样的话,你可以加判断位,第一次加载的时候不做callback那句,提交时再做
      

  3.   

    a.html不包含在a.php中,而且我想实现的东西像下边这样$reslut = mysql_query( "select * from auto " );
    while( $rs = mysql_fetch_row() )
    {
        //创造出post提交的环境,包括 $_POST['name'],$_POST['pwd'],$_POST['city'],$_SERVER['HTTP_REFERER'];
        //还需要根据$rs['adr'] 来改变$_SERVER['SCRIPT_NAME']和QUERY_STRING
        echo callback();
    }function callback(){
        $name = $_POST['name']……
        $adr = $_SERVER['SCRIPT_NAME'];
        $query= $_SERVER['QUERY_STRING'];    //处理代码
    }说明一下,callback实际是一个处理的类,而且是由别的程序提供的,所以不能修改那里边的代码。
      

  4.   

    不要直接浏览a.php,而是用curl 或者 fsockopen 通过中转页面向a.php页面发送一次http POST请求,你能通过A.html POST数据到a.php,那是因为浏览器帮你完成了整个http请求的动作,你现在只需用php去完成相同的事情。//建立socket连接
    $post = "name=1&pwd=2&city=3"
    $fs = fsockopen('localhost',80,$errno,$errstr,1);
    //写入http报头,自己google一下,主要还有content-type , content-length ,你要a.php获取http_referer,就在报头里加上Referer项
    fwrite($fs,"POST /project/a.php HTTP/1.0 \r\n");
    ..
    ..
    ..
    fwrite($fs,"\r\n");
    //写入http报文
    fwrite($fs,$post);
    //关闭连接
    fclose($fs);
      

  5.   


    谢谢,你的意思是说,我可以在另一个PHP页面中来完成
    $reslut = mysql_query( "select * from auto " );
    while( $rs = mysql_fetch_row() )
    {
        //在这里用curl来访问a.php,
    }
    然后在a.php中来完成处理单一的提交?
    对吗