做个登录软件遇到的一点小问题?!(在线等结果,up有分)(65分)

  • 主题发起人 风月剑客
  • 开始时间

风月剑客

Unregistered / Unconfirmed
GUEST, unregistred user!
我们经常在网站里输入用户名及密码然后就登录网站啦
我想做个软件,就是自动登录某一特定的网站,不需要再输入用户名及密码啦
就是点一下登录便自动按原先设定好的用户名及密码登录到网站上。
我原来设想可能一般网站都有个check.asp,是不是可以在地址栏里输入
HTTP://XXXXXXXXX/CHECK.ASP?NAME=USERNAME&PASS=USERPASS
登录?我直接调用浏览器控件就相当于自动登录啦,但总是出错
望有这方面经验的朋友帮助一下!
另外有朋友说这是原来的GET的方法,现在没人用啦,现在都用POST的方法,我不是太懂
但只要能达到我要的效果就可。
还要说明一点,我知道该网站用的是ASP数据库,也知道它检验是用CHECK。ASP程序,
但我对ASP不太了解,我有其源程序,但我不懂,所以来求求大家啦
把我仅有的65分全部分给大家啦!!
 
你写一个.ini文件,把用户名与密码写在里面,然后读出来登录,不行吗?
 
如果你是第一次登录,这样估计是不行的.
如果刚刚登录过,有的有时间限制,过了时限,你也没办法这样直接进入.
如果你想登录自己的网站,我也正要这么做,不过得Asp得做改动,客户端登录以后
在数据库中要做标记,然后访问时就可以直接用参数传递了.
 
>> 我有其源程序,但我不懂,所以来求求大家啦
paste here, pls
 
你可以在做一个接受传递的页面,来接受你的信息,这样你的HTTP://XXXXXXXXX/CHECK.ASP?NAME=USERNAME&PASS=USERPASS
就可以了实现传递了!
 
首先,ASP不是一个数据库,而是一种脚本语言
所谓Get和Post主要的区别就是用Get别人能看到你传递的信息,用Post则看不到
你想实现的功能一般是通过Cookie来实现,当他登录后保存Cookie值,只要他不删除Cookie
下次登录就直接进入,否则需要再次输入用户名和密码等
从你的问题来看,你还不了解ASP,所以建议你找一本ASP 的书看看
 
你是用到了WebBrowser控件吧,这样的话可以先设计一个包含有表单的静态页,其中有
表单项username ,password等,再用WebBrowser加载该静态页然后模拟表单的自动提交,
具体方法为:
var
o : Olevariant;
begin
o := WebBrowser.OleObject.document.all.item('username',0);
//找到登录用户名的输入框
o.value := 'TEST';
o := WebBrowser.oleobject.document.all.item('password',0);
//找到登录密码的输入框
o.value := 'TEST'
WebBrowser.oleobject.document.Forms.Item(0, 0).submit;
//第一个表单提交
//o :=WebBrowser.oleobject.document.all.item('Login',0);
//或者用指定表单名称提交
//o.Click;
//点击操作,对其它对象也可同样操作
end;
我想这个应该满足你的要求。
 
可以在表单上显示一个网页,网页上包含二个text,一个是name,一个 是password.然后一个提
交按钮。网页里form1的action="check文件的网络路径如:http://www.163.com/check.asp"
然后调节表单的上页面的显示位置。就只显示那个提交按钮,你要登录时就点这个按钮。然
后打开网页时你又改变那个网页的大小我们就看到那个网页了。
只要你知道网站check.asp的代码就好说了。
说了一大堆,好像没有说清楚。
 
回:maikee1978,怎么读入登录,他们有人好象就是这么做的,但我不知怎么做法
能说详细一点吗???
后面两位大哥说的好象很有道理,感谢你列出程序来,否则象我这种菜鸟还是云里雾里的
我试试看!!谢谢
 
>>风月剑客,
不会把???!都这么详细了!改一下就可以了,还有什么问题??
 
表单怎么做法??
是做一个单独的网页还是在DELPHI里做??
 
做表单是用XMLdocument做吗??具体怎么做法啊?我没做过
有介绍这方面的文章吗?介绍一下,我先看看!
 
>>表单怎么做法??
不就是静态网页理的表单吗?就是form呀
如:
myPost.htm
<HTML>
<HEAD>
<TITLE> Newdo
cument </TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="http://www.sina.com.cn/post.asp">
<INPUT TYPE="text" NAME="">
<INPUT TYPE="text" NAME="">
<INPUT TYPE="hidden" value="">
<INPUT TYPE="submit">
</FORM>
</BODY>
</HTML>
这样的htm网页你可以用IE直接打开,并手动点击提交完成登陆,我想着应该是没有问题了
下面你要做的就是用程序自动实现这个提交动作,
你可以在WebBrowser中加载该htm用我上面说的方法完成自动提交。
我想这个回答你应该满意。
 
procedure TForm1.Button1Click(Sender: TObject);
var
o : Olevariant;
URL : widestring;
begin
URL := 'D:/Borland/Delphi7/Projects/biaodan/mypost.htm';
webbrowser.Navigate (URL);
o := WebBrowser.OleObject.document.all.item('username',0);
//找到登录用户名的输入框
o.value := 'TEST';
o := WebBrowser.oleobject.document.all.item('password',0);
//找到登录密码的输入框
o.value := 'TEST';
WebBrowser.oleobject.document.Forms.Item(0, 0).submit;
//第一个表单提交
//o :=WebBrowser.oleobject.document.all.item('Login',0);
//或者用指定表单名称提交
//o.Click;
//点击操作,对其它对象也可同样操作

这样加载网页吗???
这后面加上的是你写的程序行吗??这样照抄可以吗??
但执行时老出错,我不知道什么原因?!
我是不是太菜,别生气!:)
 
>>风月剑客,
语气上有些不好,请见谅。
你应该等网页加载完后再来设置网页中的表单的内容,所以下面的程序应该放载WebBrowser
的OnDocumentComplete事件中:
procedure TForm1.webbrowserDocumentComplete(Sender: TObject;
const pDisp: IDispatch;
var URL: OleVariant);
var
o : Olevariant;
begin
o := WebBrowser.OleObject.document.all.item('username',0);
//找到登录用户名的输入框
o.value := 'TEST';
o := WebBrowser.Oleobject.document.all.item('password',0);
//找到登录密码的输入框
o.value := 'TEST';
WebBrowser.oleobject.document.Forms.Item(0, 0).submit;
end;
 
还是出错啊,
错误信息:[Error]Unit1.pas(31):Object or class type required
老大,你别给我解释啦,你把一个做好的源程序发到我信箱行吗?
我才开始学DELPHI约半个月,解释太多一时了解释不清楚
我对你如此祥尽的解释对帮助致以最崇高的敬意
老大,我以后就跟你混啦!!!
把你的QQ号给我行吗?
 
我还是贴出来吧,我试过了没有异常的。
以下是主程序的代码,该界面中只有一个WebBrowser和一个Button,有两个事件:
procedure TForm1.Button1Click(Sender: TObject);
var
URL : widestring;
begin
URL := 'e:/mypost.htm';
webbrowser.Navigate (URL);
end;

//注意是DocumentComplete而不是DownloadComplete
procedure TForm1.webbrowserDocumentComplete(Sender: TObject;
const pDisp: IDispatch;
var URL: OleVariant);
var
o : Olevariant;
begin
if WebBrowser.LocationURL = 'e:/mypost.htm' then
//这是新加的,上次疏忽了,意思是只有加载mypost.htm才执行下面代码
begin
o := WebBrowser.OleObject.document.all.item('username',0);
//找到登录用户名的输入框
o.value := 'TEST';
o := WebBrowser.Oleobject.document.all.item('password',0);
//找到登录密码的输入框
o.value := 'TEST';
WebBrowser.oleobject.document.Forms.Item(0, 0).submit;
end;

end;

以下是那个测试用的myPost.htm
<HTML>
<HEAD>
<TITLE> Newdo
cument </TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="http://www.sina.com.cn/post.asp">
<INPUT TYPE="text" NAME="username" value="abc">
<INPUT TYPE="text" NAME="password" value="ddd">
<INPUT TYPE="hidden" value="">
<INPUT TYPE="submit">
</FORM>
</BODY>
</HTML>
其中的一些路径、表单项、表单action项根据自己的情况设定吧。
希望这次没有问题。
 
一般自动登陆有两种方法意识cookie,一是用ini文件,从中读取,你最好把该check.asp源代码
贴出来。
 
顶部