<H2>$100</H2> 关于NMHTTP的POST方法,出了点问题。请看。。。(100分)

  • 主题发起人 主题发起人 Tab
  • 开始时间 开始时间
T

Tab

Unregistered / Unconfirmed
GUEST, unregistred user!
用GET方法的URL参数长度不能超过255个字节;
偶知道用POST方法传送的数据量大些,几十K的文章应该没问题的。
可是我如下用:(我用的是CBC5)
url="http://192.168.1.5/updown/card.php3";
s="userid=" + userid + "&amp;name=" + name + "&amp;company=" + company + "&amp;caption=" + caption + "&amp;compadd=" + compadd +
"&amp;compphone=" + compphone + "&amp;fax=" + fax + "&amp;compweb=" + compweb + "&amp;homeadd=" + homeadd +
"&amp;homephone=" + homephone + "&amp;handphone=" + handphone + "&amp;personweb=" + personweb +
"&amp;email=" + email + "&amp;call=" + call + "&amp;icq=" + icq + "&amp;nickname=" + nickname + "&amp;sex=" + sex +
"&amp;birthday=" + birthday + "&amp;memday=" + memday + "&amp;favorite=" + favorite + "&amp;specialty=" + specialty +
"&amp;remark=" + remark;
NMHTTP1-&gt;Post(url,s); //这里若用GET只能传上部分参数内容;
结果PHP3并没有接受到这些参数的内容,请问问题出在哪里?
 
谢谢二位没有说“没听过”,
不会吧,CAKK你来看看。
 
nmhttp?——bug多多的东东,参数传递时会进行自以为是的编码,而把参数传错。
你截一下包看看nmhttp它Post出去的东东有无变错咧。
 
不了解找时间试试再说吧。
 
php我不知道,

但是在asp或者cgi或者isapi,你用get和post,取出参数的方法是不一样的。
asp:
get方法是QueryString, 而post方法用Form来取参数
delphi写的cgi:
get方法是QueryFields, 而post方法用ContentFields来取参数


 
还是不行,算了,我还是走其他的途径去。。。。
 
你最好先用IE测试一下以确保你的php程序没写错。
然后再用nmhttp,截一下包,看nmhttp跟IE在Post时发的包结构有什么不同。
一般会有如下不同:
1.nmhttp可能会把要Post的数据编码错误。(在nmhttp Post之前自己用函数对数据进行
编码好象可以解决这问题)
2.nmhttp可能会缺少IE在Post时的一些head信息,当后台php需要cookie验证时,head里的
信息就很重要了。(nmhttp的head是开放的,你可自己在程序里设置)

经过以上两部后,nmhttp的接发包就类似于IE了,这种情况下,没有任何理由php程序取得
到IE Post的数据而取不到nmhttp的。

好了,先说到这,网络嘛,就是收发包。
 
&gt;&gt;然后再用nmhttp,截一下包,看nmhttp跟IE在Post时发的包结构有什么不同。
这个包如何截,能说详细点吗?谢谢!
我的PHP程序如下:
&lt;?
include"globalvar.inc";
//调用全局变量
function add()
//定义函数add(),根据客户端传送的参数,添加到数据库
{
global $card,$localhost,$root,$password,$database;
global $userid,$nodeid,$name,$company,$caption,$compadd,$compphone,$fax,$compweb,$homeadd,$homephone,$handphone,$personweb,$email,$call,$icq,$nickname,$sex,$birthday,$memday,$favorite,$specialty,$remark,$birthyear,$birthmonth,$memyear,$memmonth;
$insert="insert into card(userid,nodeid,name,company,caption,compadd,compphone,fax,compweb,homeadd,homephone,handphone,personweb,email,call,ICQ,nickname,sex,birthday,memday,favorite,specialty,remark)
values('$userid','$nodeid','$name','$company','$caption','$compadd','$compphone','$fax','$compweb','$homeadd','$homephone','$handphone','$personweb','$email','$call','$icq','$nickname','$sex','$birthday','$memday','$favorite','$specialty','$remark') ";
mysql_query($insert)or die(mysql_error());
}
$connect=mysql_connect($localhost,$root,$password)
or die("无法连接数据库,请稍后重试!");
mysql_select_db($database,$connect) or die("数据库正忙,请稍后!");
$query="select * from card where name='$name' and nodeid='$nodeid' and userid='$userid'";
//根据传送的参数查找数据库表card,当name和nodeid变量相同时,则认为该记录已经存储过了
$result=mysql_query($query) or die(mysql_error());
$rows=mysql_num_rows($result);
//已存储过的记录条数
if($rows==0)
{
add();
//如果未存储,则添加
echo "上传成功";
exit;
}
else
{
。。。
}
?&gt;
 
我的PHP程序如下:
&lt;?
include"globalvar.inc";
//调用全局变量
function add()
//定义函数add(),根据客户端传送的参数,添加到数据库
{
global $card,$localhost,$root,$password,$database;
global $userid,$nodeid,$name,$company,$caption,$compadd,$compphone,
$fax,$compweb,$homeadd,$homephone,$handphone,$personweb,$email,
$call,$icq,$nickname,$sex,$birthday,$memday,$favorite,$specialty,$remark;
$insert="insert into card(userid,nodeid,name,company,caption,compadd,compphone,
fax,compweb,homeadd,homephone,handphone,personweb,email,call,ICQ,nickname,
sex,birthday,memday,favorite,specialty,remark)
values('$userid','$nodeid','$name','$company','$caption','$compadd','$compphone',
'$fax','$compweb','$homeadd','$homephone','$handphone','$personweb','$email',
'$call','$icq','$nickname','$sex','$birthday','$memday','$favorite','$specialty','$remark') ";
mysql_query($insert)or die(mysql_error());
}
$connect=mysql_connect($localhost,$root,$password)
or die("无法连接数据库,请稍后重试!");
mysql_select_db($database,$connect) or die("数据库正忙,请稍后!");
$query="select * from card where name='$name' and nodeid='$nodeid' and userid='$userid'";
//根据传送的参数查找数据库表card,当name和nodeid变量相同时,则认为该记录已经存储过了
$result=mysql_query($query) or die(mysql_error());
$rows=mysql_num_rows($result);
//已存储过的记录条数
if($rows==0)
{
add();
//如果未存储,则添加
echo "上传成功";
exit;
}
else
{
。。。
}
?&gt;
 
我的PHP程序如下:(由于太长,有些地方我回车了)
include"globalvar.inc";
//调用全局变量
function add()
//定义函数add(),根据客户端传送的参数,添加到数据库
{
global $card,$localhost,$root,$password,$database;
global $userid,$nodeid,$name,$company,$caption,$compadd,$compphone,$fax,
$compweb,$homeadd,$homephone,$handphone,$personweb,$email,$call,
$icq,$nickname,$sex,$birthday,$memday,$favorite,$specialty,$remark;
$insert="insert into card(userid,nodeid,name,company,caption,compadd,
compphone,fax,compweb,homeadd,homephone,handphone,personweb,email,call,ICQ,
nickname,sex,birthday,memday,favorite,specialty,remark)
values('$userid','$nodeid','$name','$company','$caption','$compadd',
'$compphone','$fax','$compweb','$homeadd','$homephone','$handphone',
'$personweb','$email','$call','$icq','$nickname','$sex','$birthday',
'$memday','$favorite','$specialty','$remark') ";
mysql_query($insert)or die(mysql_error());
}
$connect=mysql_connect($localhost,$root,$password)
or die("无法连接数据库,请稍后重试!");
mysql_select_db($database,$connect) or die("数据库正忙,请稍后!");
$query="select * from card where name='$name' and nodeid='$nodeid' and userid='$userid'";
//根据传送的参数查找数据库表card,当name和nodeid变量相同时,则认为该记录已经存储过了
$result=mysql_query($query) or die(mysql_error());
$rows=mysql_num_rows($result);
//已存储过的记录条数
if($rows==0)
{
add();
//如果未存储,则添加
echo "上传成功";
exit;
}
else
{
。。。
}
 

用Http的方法提交
CInternetSession sess;
CHttpFile *pf=NULL;
try
{
pf=(CHttpFile*)sess.OpenURL(...);
}
catch(CHttpException *pEx)
{
pf=NULL;
pEx-&gt;Delete();
}
 
faint,php还用别人帮你看吗,自己做个网页调试一下看数据进不进去不就知道php对不对拉。
真ft,粗看了一下,这点php程序应该没什么错。

截包吗,软件多得是,netxray,packetboy...,去当一个吧。

 

碰到过类似问题,原因是变量内容的问题,如 ... &amp;name=t a b&amp;company=....
中间函空格或特殊符号,则可能影响参数传递.
 
&gt;&gt;pxd:
见笑了,我手头有一个NETXRAY3。0,可是不知道TMD的安装序列号,
烦老兄给我发一个,最好是安装程序和KEY一块配套发。谢了!
combar@elong.com
 
发了个破解说明给你,看看行不行。
 
&gt;&gt;pxd:
收到,安装成功,多谢拉!
我还得研究它怎么用。
大家辛苦了,先分分吧,呵呵!
 
多人接受答案了。
 
后退
顶部