请教模拟POST的问题!

number123456 2010-08-18 03:02:28
我现在有一个A页面,是直接访问的,如: http://xx.com/a.php

我现在想在这个a.php中模拟出一个环境,是由另外一个页面POST提交过来的数据,包手,http_referer,还有post信息,get信息,就好像是从另外一个页面提交过来一样。

请问怎么才能做到?


我现在是用$_POST['b']="bb"的方法来添加post变量,请问除了这种方法外,还有别的方法吗?
...全文
86 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
number123456 2010-08-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 foolbirdflyfirst 的回复:]

不要直接浏览a.php,而是用curl 或者 fsockopen 通过中转页面向a.php页面发送一次http POST请求,你能通过A.html POST数据到a.php,那是因为浏览器帮你完成了整个http请求的动作,你现在只需用php去完成相同的事情。

PHP code
//建立socket连接
$post = "name=1&pwd=2&city=3"
$fs =……
[/Quote]

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

然后在a.php中来完成处理单一的提交?
对吗
foolbirdflyfirst 2010-08-18
  • 打赏
  • 举报
回复
不要直接浏览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);
number123456 2010-08-18
  • 打赏
  • 举报
回复
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实际是一个处理的类,而且是由别的程序提供的,所以不能修改那里边的代码。
CunningBoy 2010-08-18
  • 打赏
  • 举报
回复
a.html是不是被包含到a.php中了?
如果这样的话,你可以加判断位,第一次加载的时候不做callback那句,提交时再做
number123456 2010-08-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 naigoc 的回复:]

弱弱的问下,是不是自己提交给自己的意思?
[/Quote]
是不让提交,因为要做批理处理,提交一次只能处理一回,所以不让提交,但是原来的程序是不能动的
number123456 2010-08-18
  • 打赏
  • 举报
回复
比如正常情况下
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就无法获得需要处理的数据了,而且我这么做是想要做批量处理。

有什么办法,能创造出来这些数据不?
naigoc 2010-08-18
  • 打赏
  • 举报
回复
弱弱的问下,是不是自己提交给自己的意思?
CunningBoy 2010-08-18
  • 打赏
  • 举报
回复
问题描述不是很清楚。
用例子说明

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧