标题: PHP网页编程之实例:用PHP完成Ftp用户的在线办理 [打印本页] 作者: 飘飘悠悠 时间: 2015-2-4 00:00 标题: PHP网页编程之实例:用PHP完成Ftp用户的在线办理 一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧! 向导要我筹划一个网页设计大赛和Flash创作大赛,请求必需完成在线报名和上传作品。经由过程FreeBSD+Apache+PHP+Mysql+FTP我完成了该请求。
完成在线报名和上传作品的思绪是使用网页表单搜集用户填写的材料存储到Mysql数据库内,同时以该用户的注册名创立一个FTP上传账号并创立该用户的响应目次。
FTP办事器是体系默许带的,采取体系用户的用户名和暗码,创立体系用户就等于创立FTP用户,FreeBSD是属于UNIX阵营的操作体系,它没有象Linux一样的useradd和groupadd等创立用户和组的号令,其取而代之的是pw号令加上响应参数来完成,在Freebsd上以办理员的身份创立一个用户的号令是
echo | pw useradd [-g][groupname] [-s][shelldir][-h 0]
参数g指定用户组,参数s指定用户的shell。
假如是通俗用户上岸的话还必需用到su号令,挪用的办法是
su root Cc ‘echo | pw useradd [-g][groupname] [-s][shelldir][-h 0] ’
履行以后体系会请求输出办理员暗码,输出暗码就能够以办理员的身份履行这个号令了。
完成这步操作的次要难点在于若何经由过程PHP来挪用下面这些体系号令去创立一个用户,本例是利用PHP中的popen()函数来完成的,该函数履行指令翻开文件,语法是int popen(string command, string mode),其翻开的文件只能是单向的,只能读或只能写,对应的“string mode”为’r’或’w’,“string command” 就是号令字符串,在对文件的操作上可以使用 fgets()、fgetss()与fputs()函数,本例用fputs()函数往文件外面输出办理员暗码。若是开档产生毛病将前往 false 值,最初函数要记得挪用pclose()封闭。
上面咱们来计划一下FTP用户的组,事前咱们先用pw groupadd ftpuser创立ftpuse组,让在线请求的用户为这个组的成员。为了平安起见,咱们不该该给FTP用户Telnet权限,所以咱们还要专门给他们创立一个shell,使得他们不克不及经由过程Telnet正常上岸体系,办法以下:先创立一个文件/bin/ftponly
#!/bin/csh
/bin/cat << XX
You can ony use this username to login ftp server!
And you can not use it to telnet to this system! XX
sleep 10
该文件中XX之间就是显示给用telnet上岸的用户看的信息。信息显示10秒钟就主动加入了。最初不要健忘用chmod +x /bin/ftponly给这个文件可履行属性。
然后在/bin/shell文件中添加“/bin/ftponly”,在今后的号令外面咱们就能够使用pw中-s参数把这个shell指定给FTP用户了。
最初还要注重一个成绩,su号令仅仅是wheel办理组的用户成员才可使用,当PHP挪用su号令的时分也必需以wheel构成员的身份运转,不然体系回绝运转,而PHP运转体系号令的身份就是Apache web办事器运转的身份,初始的用户名和用户组都是nobody,所以先得创立一个wheel组的用户www供apache利用,接着更改Apache的设置装备摆设文件httpd.conf中的user为www,group为wheel,从头启动Apache,就能够以新用户身份运转了。
上面可以创立PHP源文件checkin.php了,代码以下: