新聞中心
python中驗(yàn)證是否登錄成功的方法:

為高唐等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及高唐網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、高唐網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
#!/usr/bin/env python
# -*- coding: gbk -*-
import urllib
import urllib2
import ClientCookie
import re
import string
import time
import socket
timeout=10
server="www.juyimeng.com"
loginurl="http://"+server+"/login.php"
v_account=[
{"name":"user1","pass":"pass1","utype":"1","vkey":"用戶1"},
{"name":"user2","pass":"pass2","utype":"2","vkey":"用戶2"}
]
def fes_write(s):
'''
控制輸出信息的顯示
'''
print s
def get_response(x):
'''
登錄,取得登陸后的頁(yè)面html代碼,用來(lái)判斷結(jié)果
'''
fes_write("login for "+ x["name"])
eform = {'username':x["name"], 'password':x["pass"], 'usertype':x["utype"]}
qstring = urllib.urlencode( eform )
#print qstring
try:
request = urllib2.Request( loginurl , qstring )
response = ClientCookie.urlopen( request )
return string.split( response.read(),"\n")
except Exception, e:
fes_write(e)
return "error"
def verify_info(k,l):
'''
校驗(yàn)信息是否正確
'''
for line in l:
if k.match(line):
return True
break
return False
def verify_all():
'''
主程序,進(jìn)行校驗(yàn)
'''
if timeout!=0:
socket.setdefaulttimeout(timeout )
fes_write("socket time out: " + str(socket.getdefaulttimeout()))
success_num=len(v_account)
for x in v_account:
vkey=re.compile('.*'+x["vkey"]+'.*')
if verify_info(vkey,get_response(x))==True:
success_num=success_num-1
fes_write(x["name"]+ " login success!")
else:
fes_write("error when " + x["name"]+ "login!")
if success_num==0:
fes_write("all things runs well!")
else:
e_notify()
fes_write("some thing is wrong!")
def e_notify():
'''
出錯(cuò)之后的notify操作
'''
pass
if __name__ == '__main__':
verify_all()v_account定義了多個(gè)賬戶,因?yàn)橛脩艨赡懿煌?,后臺(tái)機(jī)制不一樣,所以用多個(gè)用戶來(lái)登錄
request = urllib2.Request( loginurl , qstring ) 用的是post的方法,也可以用get的方法。
ClientCookie,一個(gè)python的擴(kuò)展包
2個(gè)v_account里的vkey用來(lái)和登陸后的頁(yè)面上的信息來(lái)驗(yàn)證是否正常登錄的
socket.setdefaulttimeout用來(lái)設(shè)置建立socket連接的超時(shí)設(shè)置,原來(lái)沒(méi)有設(shè)置,程序會(huì)一直等待回應(yīng)(如果服務(wù)器端做了最長(zhǎng)運(yùn)行時(shí)間會(huì)好點(diǎn)),設(shè)置了10秒,如果一個(gè)登錄程序10秒還沒(méi)有成功,基本上就失敗了。
e_notify:可以自己設(shè)置一些notify的方法,比如郵件,短消息等。
當(dāng)前名稱:創(chuàng)新互聯(lián)Python教程:python3.7怎么驗(yàn)證是否登錄成功?
網(wǎng)頁(yè)網(wǎng)址:http://fisionsoft.com.cn/article/dhcjcsg.html


咨詢
建站咨詢
