当前位置:  编程技术>php
本页文章导读:
    ▪php实现ftp用户的在线管理实例解析      要求: 实现在线报名和上传作品。 实现: FreeBSD+Apache+PHP+Mysql+FTP 思路: 利用网页表单收集用户填写的资料存储到Mysql数据库内,同时以该用户的注册名创建一个FTP上传账号并创建该用户的相.........
    ▪php mysql实现用户注册的入门实例      以下是作为新手的我,自己实现的一个简单的用户注册功能,分享一下,供初学的同学参考,呵呵。 实现用户注册的功能,需要4个php页面,加入了一点点面向对象的思想。 1,form表单页面 .........
    ▪php实现用户注册的代码示例      代码如下: <? /** * 用户注册示例 * edit www. */ php session_start(); $conn=mysqli_connect("localhost","root","root","reguser"); $conn->query('set names gb2312'); if(empty($conn)) { die("数据库连接失败"); } $User.........

[1]php实现ftp用户的在线管理实例解析
    来源: 互联网  发布时间: 2013-12-24

要求:
实现在线报名和上传作品。

实现:
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 –c ‘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,就可以以新用户身份运行了。

下面创建checkin.php文件,代码如下:

<?php
/**
* ftp用户在线管理
* edit www.
*/
if (($username!="") and ($userpasswd!=""))//判断是否提交表单  
{ $rootpasswd="adminpassword"; //定义管理员密码 
$creatuser ="su --login root -c 'echo ".$userpasswd." | pw useradd ".$username." -s /bin/ftponly  -g ftpuser –s /bin/ftponly -h 0' "; //这是利用su和pw命
令创建用户的用到的字符串 
$fp=popen($creatuser,"w"); //调用popen()函数执行字符串中的命令,返回文句柄给$fp 
fputs($fp,$rootpasswd); //写入管理员密码到文件$fp,相当于输入密码给系统 
pclose($fp);//关闭文件  
$creatdir="su --login root -c 'mkdir /home/".$username."'";//创建用户目录的命令字符串  
$fp=popen($creatdir,"w");//执行命令创建用户目录  
fputs($fp,$rootpasswd); //输入管理员密码 
pclose($fp);  
$creatdir="su --login root -c 'mkdir /home/".$username."/public_html'";  
$fp=popen($creatdir,"w"); //执行命令创建用户网站根目录 
fputs($fp,$rootpasswd); //输入管理员密码 
pclose($fp);  
$creatdir="su --login root -c 'chown ".$username." /home/".$username."'"; //改变用户目录的所有者为用户自己,初始为运行Apache的用户www。 
$fp=popen($creatdir,"w"); //执行命令 
fputs($fp,$rootpasswd); //输入管理员密码 
pclose($fp);  
$creatdir="su --login root -c 'chown ".$username." /home/".$username."/public_html'"; //改变网站根目录的归属 
$fp=popen($creatdir,"w");  
fputs($fp,$rootpasswd);  
pclose($fp);  
echo "恭喜".$username.",您的的FTP账号已经申请成功!请到FTP上登陆,请注意,您没有Telnet权限";} 
else{?> 
<html> 
<head> 
<title>申请FTP账号</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
</head> 
<body bgcolor="#FFFFFF"> 
<div align="center"> 
<p>申请FTP账号</p>  
<form method=POST action="/blog_article/</ echo $PHP_SELF; /gt;.html"> 
<table width="36%" border="0"> 
<tr>  
<td width="40%">  
<div align="right">账号名称:</div> 
</td> 
<td width="60%">  
<input type="text" name="username"> 
</td> 
</tr> 
<tr>  
<td width="40%">  
<div align="right">密码:</div> 
</td> 
<td width="60%">  
<input type="password" name="userpasswd"> 
</td> 
</tr> 
<tr> 
<td colspan="2"><input type="submit" name="Submit" value="申请"></td> 
</tr> 
</table> 
</form> 
</div><?}?> 
</body> 
</html>

    
[2]php mysql实现用户注册的入门实例
    来源: 互联网  发布时间: 2013-12-24

以下是作为新手的我,自己实现的一个简单的用户注册功能,分享一下,供初学的同学参考,呵呵。

实现用户注册的功能,需要4个php页面,加入了一点点面向对象的思想。

1,form表单页面

<html>  
<title>用户注册_www.</title>  
<body>  
注册:<br/>  
<form action = "registerDeal.php" method="post">  
    用户名:<input type="text" name="username"/><br/>  
        密码:<input type="password" name="password"/> <br/>  
        密码确认:<input type="password" name="passwordConfirm"/> <br/>  
        <input type="submit" value="OK"/>  
</form>  
</body>  
</html>

2,//Entity 实体类 user.php

<?php   
class User{   
    var $username;   
    var $password;   
        function User($username,$password){   
                     $this->username = $username;   
        $this->password = $password;   
    }   
}   
?>

3,//表单处理php registerDeal.php

<?php   
//include 'user.php'; //为什么不用添加呢?   
include 'user_crud.php';   
  
function  save($username,$password){   
    echo "deal save";   
    $user = new User($username,$password);     
    $userDao = new UserDao();   
    $userDao->save($user);      
}   

if($_POST['username'] != NULL && $_POST['password'] !=NULL){   
    if($_POST['password'] != $_POST['passwordConfirm']){   
        echo "两次密码不一样";   
    }else{   
        save($_POST['username'] ,$_POST['password'] );   
    }   
   }else{   
    echo "用户名或密码不能为空";   
   }   
?>

4,初级DAO对象 user_crud.php

<?php   
include 'user.php';   
class UserDao{   
    //处理数据库连接   
    function conn_mysql(){   
        mysql_connect()("localhost:3306", "root", "root")   
                or die("Could not connect : " . mysql_error());    
            print "Connected successfully";   
            mysql_select_db("forest") or die("Could not select database <br/>");   
    }   
    function UserDao(){   
        $this->conn_mysql();   
    }   
    function save($user){   
        echo("<br/> $user->username,$user->password");   
        $query = "insert into user(username,password) values ('$user->username','$user->password')";   
        mysql_query()($query) or die("Could not save user <br/>");   
    }   
}   
?>

总结及注意事项:
1,include包含文件问题,这点注意下相对路径与绝对路径,容易出错。
2,在写sql语句时,注意用引号包含起来 '$user->username',而不是这样:$user->username。
3,如果提示mysql库函数没有定义,记得在apache配置中指定php.ini的路径:PHPIniDir "E:/soft_work/PHP"

另外,高手朋友肯定会建议使用外部包含文件创建数据库连接类等,有兴趣的朋友,可以自己实践下。


    
[3]php实现用户注册的代码示例
    来源: 互联网  发布时间: 2013-12-24

代码如下:

<?
/**
* 用户注册示例
* edit www.
*/
php session_start();
$conn=mysqli_connect("localhost","root","root","reguser");
$conn->query('set names gb2312');
if(empty($conn))
{
   die("数据库连接失败");
}
$UserName=$_POST['username'];
$pwd=$_POST['password'];
$email=$_POST['email'];
$sex=$_POST['sex'];
$time=time();
$code=strtolower()($_POST["code"]);
$str="select * from users where username='".$username."'";
   $result1=$conn->query($str);
   $row=$result1->fetch_row();
if($row)
{ 
$temp="已有人注册此名,请重新选择名字!"; 
echo $temp;
echo"<a href=/blog_article/zhuce.php>返回</a>/index.html";
} 
else {
if( $_SESSION['sname']==$code)
{
   echo $temp="认证码成功";
   $sql="INSERT INTO users VALUES('$username', '$password','$email','$sex','$time')";
   $result=$conn->query($sql);
   if($result==true)
      {
      $_SESSION['mail']="注册成功,请登陆";
      echo "<script>window.location.href='/blog_article/login1.html'</script>";
      }
      else {echo "注册失败".mysql_error();}
} 
else {echo "认证码错误";}
}
?>

以上代码,接收注册页传来的参数,包括用户名,密码,邮箱,性别,验证码等。
然后,检测是否已注册过,否则将注册信息写入数据库。
很简单,特别适合新手朋友参考。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3