apache+php+sql的登陆界面的设计
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
课程设计: Apache+PHP+mySOL开发邮件 注册管理系统 班 级: 材控01班 姓 名: 徐观岳 学 号: 1203100124 目 录 一 1.1用户注册与在P船中执行系统外部命令................1 1.2建立新系统用户....................................2 1.3应用管道为用户设置密码............................2 1.4将用户记录写^数据库...............................3 二 2.1注销系统用户与后台批处理程序......................4 2.2用户记录与系统用户一致性检验......................5 2.2.1读取、ETC、怕熟视无睹文件取得系统用户名.......5 2.2.2读取设置为无效的用户记录..........................................6 2. 2.3一致性检验和删除无效的用户记录 .......................7 2.3邮件帐号管理程序的安全访问.......................7 2.4 小结...........................................8 用Apache+PHP+mySOL开发邮件注册管理系统 1.1:用户注册与在P船中执行系统外部命令 用户注册程序包括用户提交注册信息、数据有效性和唯一性检验、增加新系统用户(即邮件帐号)、设置用户密码、保存用户记录等过程 与用户管理有关的系统外部命令分别为useradd、userdel passwd、chpasswd等这些外部命令必须是root用户才可运行。 在PHP运行系统外部命令的函数有exec()、system()、popen().本来希望通过su来获取root身份执行系统外部命令”su一一login root一c COMMAND,但经反复实践行不通,原因是su命令必须在标准输入设备stdin上输入root的密码。 解决的简单方法是应用super工具来帮助以root身份执行设定的系统外部命令。super工具可从ftp://ftp.Mdtsoft.com/pub/super下裁并安装。在配置文件/etc/super.tab中将设置可以root身份执行的外部命令和可以使用super的用户列表。例如,配置文件/etc/super.tab内容为: Myadduser/usr/sbin/useradd nobody Mychpasswd/use/sbin/chpasswd nobody 这样.web用户,nobody就可以分别使用super myadduser和super mychpasswd增加新系统用户和设置用户密码了。 例如.增加新系统用户“linfei’可简单执行PHp命令 System(“/bin/super myadduser linfei”); 即可。将用户“linfei”的密码设置为“1234”,需要使用管 道命令popen为super myadduser提供用户名和密码参数 “linfei:1234”才可完成: S cmd2 = popen(“/bin/super mychpasswd”,”w”); fputs( $ cmd2,”linfei;1234”); fputs( $ cmd2,”/ n/); pclose( $ cmd2); 假设已定义MysQL数据库post__office及其users巧数据表数据表users包过no(序号)、valid(有效性)、name(姓名)、userid(帐号)、password(密码)等域。用户注册程序主要代码如下: 1.1 P//(1>用户提交数据厦有效性和唯一性检验 1.2//<2>建立新系统用户 $ cmd = escapeshellcmd(“/bin/super myadduser $ userid - g$grouprumme”); System($ cmd2, $ resl); If($res1! = 0){ echo”系统设置邮件帐号不成功l返回码$ res1)!”; Exit:} //(1.3>应用管道为用户设置密码 $ cmd2 = popen (“/bin/super mychpasswd”w”); Fputs ( $ cmd2,”$ userid; $ password”); Fputs( $ cmd2,” /n”); Pclose($ cmd2); //<1.4)将用户记录写^数据库 $ Myconnet=mysql__connect(“localhost”,”root”,$ mysqlroot); $ db=mysql__select__db(“post__sffice”, $ Myconnect); $ mydate = date(“Y-m-d H;i;s”); $ sql = “insert into users”; $ sql = $ sql .”( class,name,address,phone,userid,password,date)”; $ sql = 4sql,”Values ( ‘ $ class ‘, ’ $ name’ , ‘ $ address ‘ , ‘$ phone’, ‘$userid ‘ , ‘ $ password ‘ , ‘ $ mydate ‘) “ ; $ Myquery = masql__query ( ‘ $ sql ,$ Myconnect ) ; 2.1 注销系统用户与后台批处理程序 因用户注册过程是公开且自动的,难免会产生大量不合理的用户帐号,需要适时注销清理。为了安全与高教,系统采用管理员在后台执行批处理程序的方法来注销系统用户。首先,管理员浏览用户注册信息,将需要注销的不合理用户记录标记为无效,即将valid字段缺省值’yes’清除。其次,执行如下程序代码,将无效记录中的帐号提取生成一文本文件保存在/tmp/invalid.txt中: < ? $ filename = “/ tmp /invalid.txt “; $ Myconnect = mysql __connecy (“localhost “, “root” , $ mysqlroot ) ; $ db = masql__select__db( “ post__office “, $ myconnect ) ; $ sql = “ select no , userid ,class,name from users valid<>‘yes “; $ Myquery = mysql__query ( $ sql , $ mYCONNECT); $ FP = FOPEN 9 $ FILENAME ,” W” ); While ( $ array = mysql__fetch __array( $ Myquery); Fputs ( $ fp , “ $ arry[no]/t $ arry [ userid] / n “ ); Fclose( $ fp); ? > 最后,管理员在邮件服务器上以root身份登录,执行下awk批处理程序命令: ^awk -f deuser.awk/tmp/invalid .txt 1 sh 即可一次性将大量不合理的用户帐号注销。其中.deluser. awk程序文件内容如下: {print “ userdel “ $ 2 } {print “mm - rf /home / “ $ 2 } 2.2用户记录与系统用户一致性检验 从数据库post__office中清理无效用户记录(vaIid<>‘yes’)时,必须进行用户记录与系统用户一致性捡验工作,以保证先注销系统用户后才能清理数据库记录。换句话说,一致性检验的目的就是保证通过WEB注册的系统用户在数据库post__office都有记录记载。 一致性检验的过程是先从/etc/passwd读取系统用户.再从数据库post__office读取无效用户记录(vaIid<>‘yes’)的帐号来逐一比较,如果该甩户帐号巳从系统中注销,才可将相应记录删除。 主要程序代码如下: //<2.2.1> 读取、ETC、怕熟视无睹文件取得系统用户名 ?< $ filename = “/ tmp /invalid.txt “; $ Myconnect = mysql __connecy (“localhost “, “root” , $ mysqlroot ) ; $ db = masql__select__db( “ post__office “, $ myconnect ) ; $ sql = “ select no , userid ,class,name from users valid<>‘yes “; $ Myquery = mysql__query ( $ sql , $ mYCONNECT); $ FP = FOPEN 9 $ FILENAME ,” W” ); //<2.2.2> 读取设置为无效的用户记录 $ mydate = date(“Y-m-d H;i;s”); $ sql = “insert into users”; $ sql = $ sql .”( class,name,address,phone,userid,password,date)”; $ sql = 4sql,”Values ( ‘ $ class ‘, ’ $ name’ , ‘ $ address ‘ , ‘$ phone’, ‘$userid ‘ , ‘ $ password ‘ , ‘ $ mydate ‘) “ ; $ Myquery = masql__query ( ‘ $ sql ,$ Myconnect ) //<2.2.3> 一致性检验和删除无效的用户记录 $ db=mysql__select__db(“post__sffice”, $ Myconnect); $ mydate = date(“Y-m-d H;i;s”); $ sql = “insert into users”; $ sql = $ sql .”( class,name,address,phone,userid,password,date)”; $ sql = 4sql,”Values ( ‘ $ class ‘, ’ $ name’ , ‘ $ address ‘ , ‘$ phone’, ‘$userid ‘ , ‘ $ password ‘ , ‘ $ mydate ‘) “ ; $ Myquery = masql__query ( ‘ $ sql ,$ Myconnect ) ; ?> 2.3邮件帐号管理程序的安全访问 邮件帐号管理程序应存放在与用户注册程序不同的路径中,并只能通过认证来访问,下面介绍采用Apache服务器内置的HttP认证功能来简单实现认证访问的步骤。假设邮件帐号管理程序存放在路径/home/httpd/html/post__damin中只有用户“admin”才能访问。 首先,在/etc/httpd/conf下建立一个需认证用户文件 user.txt : Htpasswd c user .txt admin 其次,配置该路径下的access.conf 文件,增加一个标志段: $ sql = $ sql .”( class,name,address,phone,userid,password,date)”; $ sql = 4sql,”Values ( ‘ $ class ‘, ’ $ name’ , ‘ $ address ‘ , ‘$ phone’, ‘$userid ‘ , ‘ $ password ‘ , ‘ $ mydate ‘) “ ; $ Myquery = masql__query ( ‘ $ sql ,$ Myconnect ) ; 最后,执行Apachectl restart 重新启动Apache服务器使上述设置生效 2.4 小结 文中所述的SFSL的开发模型,将它应用到internet上,可以使软件开发人员避免通过手工改动所造成的错误,而且能够快速的设计需求分析,及时的了解用户的需要。 本文来源:https://www.wddqw.com/doc/254fa81d40323968011ca300a6c30c225901f0b4.html