python学习之路之案例0(实现登录功能,登录错误次数
“周不胖”通过精心收集,向本站投稿了5篇python学习之路之案例0(实现登录功能,登录错误次数,下面就是小编给大家分享的python学习之路之案例0(实现登录功能,登录错误次数,希望大家喜欢!

篇1:python学习之路之案例0(实现登录功能,登录错误次数
一、整个案例运用到的知识点
1.python字典、字符串、列表的灵活转换和使用
2.python数据结构之字符串:字符串的格式化、字符串的去空格(strip)
3.python数据结构之字典:字典的构建、字典和字符串的转换
4.python数据结构列表:列表的构建、列表和字符串的转换
5.if....else....判断的使用
6.for循环、while True死循环的使用
5.文件的打开、读取、关闭等功能的使用
二、整个案例的设计的中心思想
1.首先读取用户表文件里面的字符串:包括用户名和密码,并将其转化列表,然后转换为为字典
2.然后读取登陆次数文件文件里面的字符串,包括用户名,登录错误次数,并将其转为列表,然后转为字典
3.最后将用户登录错误的次数、用户登录的用户名、用户登录的密码,进行判断,并将用户名、登录错误次数写入到data1文件中去。
三、代码实现的功能
1.用户使用用户名、密码登录
2.登录错误次数超过3次,自动退出登录,并显示登录错误次数超过3次
3.登录用户名、密码正确,显示成功登录
4.登录用户名、密码错误,显示登录错误。
四、代码
#!/usr/bin/env python# -*- coding:utf-8 -*-message_dict = {} #新建一个字典,用来存储用户名跟密码obj1 = file('data','r') #以只读的方式打开data文件,返回obj1句柄for i in obj1: #遍历句柄 line1 = i.strip() #去掉每一行的空格 line1_list = line1.split('|') #并以分隔符“|”将每一行进行分割,并返回列表 message_dict[line1_list[0]]=line1_list[1] #将用户名和密码以字典的形式存储在message_dict字典中obj1.close() #关闭data文件count_dict = {} #新建字典,用来存储用户名和登录错误次数obj2 = file('data1','r') #以只读的方式打开文件data1,返回obj2句柄for j in obj2: #遍历obj2句柄 line2 = j.strip() #去掉每一行的空格 line2_list = line2.split('|') #并以分隔符“|”将每一行进行分割,并返回列表 count_dict[line2_list[0]] = int(line2_list[1]) #将用户名和密码以字典的形式存储在count_dict字典中obj2.close() #关闭data1文件#print count_dict#print message_dictname = raw_input(“plz input name:”) #提示用户输入用户名pwd = raw_input(“plz input password:”) #提示用户输入密码while True: if name not in message_dict.keys(): #首先判断用户输入的用户名是否在用户列表中是否存在 print “no this user!!” #打印提示信息,没有此用户 name = raw_input(“plz input name again:”) #让用户再次输入合法的用户名和密码 pwd = raw_input(“plz input password again:”) #判断用户名输错的次数,是否大于3次,大于3次直接跳出循环 if count_dict[name] >3: print “login failed ,login_failed count >3” break #用户输入的次数小于3次 else: #如果用户输入的密码和用户对应的密码匹配,就显示登录成功并退出循环 if pwd == message_dict[name]:print “login success”break #如果密码不匹配,就提示用户再次输入用户名和密码 else:print “login failed”name = raw_input(“plz input name again:”)pwd = raw_input(“plz input password again:”)#并将登录错误次数自增1count_dict[name] = count_dict[name] + 1#打开data1文件,并更改后的登录错误次数和用户名写入文件obj3 = file('data1','r+')for k in count_dict.keys(): line3 = “%s|%s\n” %(k,count_dict[k]) #将列表中的元素组成这种类型字符串:jachy|0 obj3.write(line3) #将字符串写入文件data1中#关闭文件obj3.close()
数据文件1:data,存储用户名、密码
lilin|123456jachy|321123wangning|123456
数据文件2:data1,存储用户名、登录错误次数
jachy|0wangning|0lilin|0
篇2:Python实现登录人人网并抓取新鲜事的方法
作者:断鸿 字体:[增加 减小] 类型:
这篇文章主要介绍了Python实现登录人人网并抓取新鲜事的方法,可实现Python模拟登陆并抓取新鲜事的功能,需要的朋友可以参考下
本文实例讲述了Python实现登录人人网并抓取新鲜事的方法,分享给大家供大家参考。具体如下:
这里演示了Python登录人人网并抓取新鲜事的方法(抓取后的排版不太美观~~)
from sgmllib import SGMLParserimport sys,urllib2,urllib,cookielibclass spider(SGMLParser): def __init__(self,email,password): SGMLParser.__init__(self) self.h3=False self.h3_is_ready=False self.div=False self.h3_and_div=False self.a=False self.depth=0 self.names=“” self.dic={}self.email=email self.password=password self.domain=‘renren.com‘ try:cookie=cookielib.CookieJar()cookieProc=urllib2.HTTPCookieProcessor(cookie) except:raise else:pener=urllib2.build_opener(cookieProc)urllib2.install_opener(opener)def login(self): url=‘www.renren.com/PLogin.do‘ postdata={ ‘email‘:self.email, ‘password‘:self.password, ‘domain‘:self.domain } req=urllib2.Request( url, urllib.urlencode(postdata) ) self.file=urllib2.urlopen(req).read() #print self.file def start_h3(self,attrs): self.h3 = True def end_h3(self): self.h3=False self.h3_is_ready=True def start_a(self,attrs): if self.h3 or self.div:self.a=True def end_a(self): self.a=False def start_div(self,attrs): if self.h3_is_ready == False:return if self.div==True:self.depth += 1 for k,v in attrs:if k == ‘class‘ and v == ‘content‘: self.div=True; self.h3_and_div=True #h3 and div is connected def end_div(self): if self.depth == 0:self.div=Falseself.h3_and_div=Falseself.h3_is_ready=Falseself.names=“” if self.div == True:self.depth-=1 def handle_data(self,text): #record the name if self.h3 and self.a:self.names+=text #record says if self.h3 and (self.a==False):if not text:passelse: self.dic.setdefault(self.names,[]).append(text)return if self.h3_and_div:self.dic.setdefault(self.names,[]).append(text) def show(self): type = sys.getfilesystemencoding() for key in self.dic:print ( (‘‘.join(key)).replace(‘ ‘,‘‘)).decode(‘utf-8‘).encode(type), \ ( (‘‘.join(self.dic[key])).replace(‘ ‘,‘‘)).decode(‘utf-8‘).encode(type)renrenspider=spider(‘your email‘,‘your password‘)renrenspider.login()renrenspider.feed(renrenspider.file)renrenspider.show()
希望本文所述对大家的Python程序设计有所帮助,
篇3:perl脚本实现限制ssh最大登录次数(支持白名单)
这篇文章主要介绍了perl脚本实现限制ssh最大登录次数,脚本支持支持白名单设置,例如root可以不限制登录次数,需要的朋友可以参考下
ssh limit perl脚本主要作用:
1.限制一个ssh用户的最大登录数为n,n可自定义,
2.支持白名单,如root、test登录不受限制。
如果一个ssh用户的最大登录数超过指定数字,则后登录的会把先前登录的踢掉,以此达到控制登录数的目的。
该脚本需要主机支持perl,如果没有,可yum安装。
脚本源码:
#!/usr/bin/perl -wuse strict;#white listmy @ALLOW_USERS = qw{ test root lulu1};#the maximum number of ssh loginmy $LOGIN_TIMES = 1;sub main{ my @lines = `ps -eo user,pid,etime,cmd | grep sshd`; my $users; for my $line (@lines) { if(my ($user, $pid, $etime, $cmd) = $line =~ /^([^\s]+)\s+(\d+)\s+([^\s]+)\s+(sshd:.+)$/) {next if grep {$user eq $_} @ALLOW_USERS;my $proc = {‘pid‘, $pid, ‘etime‘, $etime, ‘cmd‘, $cmd};push @{$users->{$user}}, $proc; } } for my $key(keys(%$users)) { my @sshs = sort {my ($lb, $la) = (length($b->{‘etime‘}), length($a->{‘etime‘}));if($lb == $la) { $b->{‘etime‘} cmp $a->{‘etime‘};} else { $lb <=>$la;} } @{$users->{$key}}; $LOGIN_TIMES = 1 if $LOGIN_TIMES < 1; for (1 .. $LOGIN_TIMES) { pop @sshs; }; for my $ssh (@sshs) {kill 9, $ssh->{‘pid‘}; } }}while(1) { main; sleep 3;}
【使用方法】
另存脚本存到root目录,命名为limit.pl,然后执行:
echo “/root/limit.pl &” >>/etc/rc.d/rc.local (加入开机启动)/root/limit.pl & (运行脚本)
篇4:python学习之最简单的用户注册及登录验证小程序
正如很多同学所知道的,楼主开始学习python了,前进的道路曲曲折折,有荆棘也有陷阱,从最简单的小程序写起,每天练习,将python进行到底,
有一点比较别扭的就是python的换行之后空四个空格,ruby都是两个,并且python在方法和循环语句的第一句都要加冒号.
首先先来做一些准备工作,mysql里查看表结构以及增加列的语句:
show create table user;
alter table user add salt char(10);
md5和sha1大家可以自己选
import hashlib
In [64]: passwd=’111111′
In [67]: md5pass=hashlib.md5(passwd)
In [69]: hashlib.md5(passwd).hexdigest
Out[69]: ’96e79218965eb72c92a549dd5a330112′
In [70]: hashlib.sha1(passwd).hexdigest()
Out[70]: ’3d4f2bf07dc1be38b20cd6e46949a1071f9d0e3d’
In [71]: len(hashlib.sha1(passwd).hexdigest())
Out[71]: 40
In [72]: import string
In [73]: import random
In [74]: string.letters
Out[74]: ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
In [75]: string.digits
Out[75]: ’0123456789′
In [76]: string.digits+string.letters
Out[76]: ’0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
In [77]: random.sample(string.letters,5)
Out[77]: ['S', 'E', 'w', 'F', 'L']
In [78]: ”.join(random.sample(string.letters,10))
篇5:DX1.5修改密码错误次数过多,请 15 分钟后重新登录的时间限制
找到./source/function/function_member.php
搜索
$return = (!$login || (TIMESTAMP - $login['lastupdate'] >900)) ? 4 : max(0, 5 - $login['count']);将其中的900修改为更小的值,以在最短的时间内登录不小心输入错误的站点,
DX1.5修改密码错误次数过多,请 15 分钟后重新登录的时间限制
,
为了站点安全,请登录成功后,将这个值还原。
【python学习之路之案例0(实现登录功能,登录错误次数】相关文章:
文档为doc格式