制作PHP模拟POST表单提交, 但是无法提交带点号的POST数据.

shangbaxfl 2008-12-27 06:31:22
我是用 fputs 函数来模拟提交表单数据,从而模拟登陆一家网站.
fputs($fp, "up.name=ok123f&up.password=1234&up.login=Submit\r\n"); //提交POST数据.


但是遇到文本框名字带点号的就无法提交了. 例如这样的表单.

<FORM METHOD=POST ACTION="">
<INPUT TYPE="text" NAME="up.name">
<INPUT TYPE="text" NAME="up.password">
<INPUT TYPE="submit" name="up.login" value="Submit">
</FORM>


提交了之后对方网站收不到数据的. 不知道为什么.
...全文
415 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
anythink1 2009-12-04
  • 打赏
  • 举报
回复
yong up_name
Zijian_Zhang 2008-12-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 helloyou0 的回复:]
表单的name是不应该带点的,
你试一下就知道了,
如果用name="test.a"
php接受后会在$_POST['test_a']里, 而不是$_POST['test.a']
[/Quote]是吗,学习了
helloyou0 2008-12-28
  • 打赏
  • 举报
回复
表单的name是不应该带点的,
你试一下就知道了,
如果用name="test.a"
php接受后会在$_POST['test_a']里, 而不是$_POST['test.a']
shangbaxfl 2008-12-28
  • 打赏
  • 举报
回复
头信息 都写正确. 其他网站我都会用PHP进行模拟登陆. 但是这个参数名带有英语句号的 . 就登陆不了.
gently 2008-12-28
  • 打赏
  • 举报
回复
服务端确实如6楼兄弟所说,点变成了下划线。
而客户端的提交,我特地抓了一个包,呼呼,数据是
up.name=test&up.phone=123456&button=%E6%8F%90%E4%BA%A4
也就是变量名并没有修改,而只是rawurlencode了值,这里的button的值是“提交”
gently 2008-12-28
  • 打赏
  • 举报
回复
你的头信息写的正确么?POST数据这句Content-Type: application/x-www-form-urlencoded
是必须的,不然数据传不出去
shangbaxfl 2008-12-28
  • 打赏
  • 举报
回复
自己用IE登陆他的网站是正常的. 但是用PHP模拟登陆就不行了.
Zijian_Zhang 2008-12-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shangbaxfl 的回复:]
但是对方网站的表单就是要带点.  导致无法传输参数名.  请问有解决方法吗
就算改为这样呀无法传参

fputs($fp, "up_name=ok123f&up_password=1234&up_login=Submit\r\n");
[/Quote]那个网站它自己能够正常提交自己的表单的数据吗??
shangbaxfl 2008-12-28
  • 打赏
  • 举报
回复
但是对方网站的表单就是要带点. 导致无法传输参数名. 请问有解决方法吗
就算改为这样呀无法传参

fputs($fp, "up_name=ok123f&up_password=1234&up_login=Submit\r\n");
shangbaxfl 2008-12-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gingzai777 的回复:]
引用 3 楼 shangbaxfl 的回复:
不行呀. urlencode对点号 是不用转换的. 是参数名含有点号. 不是参数内容含有点号 .
你把那几个英语句号“.”改为 %2E ,这样就可以了,URL编码掉“.”,就可以正常传输参数名字了
[/Quote]


是这样改吗?
但是还是不行.
fputs($fp, "up%2Ename=ok123f&up%2Epassword=1234&up%2Elogin=Submit\r\n");
Zijian_Zhang 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shangbaxfl 的回复:]
不行呀.  urlencode对点号 是不用转换的.  是参数名含有点号.  不是参数内容含有点号 .
[/Quote]你把那几个英语句号“.”改为 %2E ,这样就可以了,URL编码掉“.”,就可以正常传输参数名字了
shangbaxfl 2008-12-27
  • 打赏
  • 举报
回复
不行呀. urlencode对点号 是不用转换的. 是参数名含有点号. 不是参数内容含有点号 .
iasky 2008-12-27
  • 打赏
  • 举报
回复
urlencode相关函数

http://cn2.php.net/manual/en/function.urlencode.php
itian 2008-12-27
  • 打赏
  • 举报
回复
urlencode

21,891

社区成员

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

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