php注册及登陆验证模块2
广告投放★自助友情CMS落伍广告联盟晒乐广告联盟脉动广告联盟品味广告联盟
广告位可自定样式联系QQ:4285248个文字广告月20元广告联系QQ:428524广告位可自定样式
8个文字广告月20元黄金广告位每月20元广告位可自定样式联系QQ:428524广告位可自定样式
左旋肉碱、全国包邮
买二送一、无效退款

文章浏览→编程相关Php编程→php注册及登陆验证模块2

php注册及登陆验证模块2
php注册及上岸考证模块2
3 处理注册数据
本节将详细介绍PHP如何获取用户填写的数据信息,以及PHP如何连接数据库并将这些数据信息保存到数据库中。

>>>1获取用户填写的信息
PHP有几个预定义的自动全局变量,这些变量各有用途,其中可以用来获取客户端提交的数据的变量有$_REQUEST,$_GET和$_POST。$_GET和$_POST分别用以获取客户端以get方式和以post方式提交的数据;而不管以什么方式提交上来的数据,$_REQUEST都可以取到。

 

PHP中的全局变量在使用之前必须以global关键字进行声明,很多开发人员在使用全局变量时经常会因为忘了将其声明为global而出错。然而PHP的自动全局变量却是个例外,所谓自动,就是说在使用之前无须声明为global,直接就可以使用。

还有一种其他PHP书籍介绍的获取客户端提交的数据的方式,即自动获取。该方式必须打开php.ini中的register_globals选项方能使用,而且更重要的是,在安全性上会给黑客以可乘之机,所以不推荐使用这种方式。

现在开始书写获取用户信息数据的代码,打开建立的register.php文件。在文件的开始输入以下代码(输入时注意文本的对齐,这是优良代码风格的体现):

<?php

$username   =$_POST['username'];

$pwd       = $_POST['pwd'];

$repeat_pwd = $_POST['repeat_pwd'];

$name      = $_POST['name'];

$email     = $_POST['email'];

?>

接下来,在<body>标签之后,<form>标签之前输入以下代码:

<?php

if (!empty($username) ) {   //有内容才输出

    echo"您填写的信息是:<br>\n";

    echo"用户名:   $username <br>\n";

    echo"密码:     $pwd <br>\n";

    echo"重复密码: $repeat_pwd <br>\n";

    echo"姓名:     $name <br>\n";

    echo"Email:   $email <br>\n";

}

?>

这就是获取客户端提交的用户信息的全部代码。运行后,在表单中输入各项信息并单击“提交”按钮,最后页面内容如图所示。

 

php注册及登陆验证模块2

 

图 获取用户信息后的页面

 

PHP中的字符串有两种定界符,即单引号“'”和双引号“"”。单引号是强引用定界符,两个单引号间的一切字符都被解释为相应的字符;双引号是弱引用定界符,两个双引号间的变量会以相应的变量值替换,一些特殊的字符也会进行相应的转义,如“\n”会在输出时产生一个新行。另外,读者注意“\n”只是使PHP运行后产生的HTML源代码的相应位置启动一个新行,而标签<br>将使得浏览器显示的页面的相应位置启动一个新行。

>>>2建立PHP与MySQL数据库的连接
获取到用户输入的信息后,就该把这些信息记录到数据库中。不过在此之前,需要先建立PHP与MySQL数据库的连接。

在PHP中要建立与MySQL数据库的连接,需要使用mysqli构造函数,其调用原型是:

class mysqli {

   __construct ( [string host [, string username [, string passwd [,string dbname [, int port [, string socket]]]]]] )

}

参数host指出MySQL数据库服务器,一般用IP地址(也可以是主机名,如localhost)指出服务器所在的机器。参数username和password分别指定连接时使用的用户名和密码。参数dbname指定当前连接要使用的数据库。默认情况下,PHP将连接到服务器的3306端口,开发人员可以通过参数port指定使用其他的端口号。参数socket较为少用,它可以进一步指定所用的套接字或命名管道。

在调用mysqli构造函数之后,应当调用mysqli_connect_errno()函数检查数据库连接是否建立成功,该函数原型是:

int mysqli_connect_errno ( void )

该函数返回的是最后一次建立连接时产生的错误代码,如果成功则返回0,返回其他值说明产生了某种类型的错误。调用mysqli_connect_error()函数可以获得具体的错误信息。

另外,如果在建立数据库连接时没有指定dbname参数,则还必须调用类mysqli的成员函数select_db(),以指定使用数据库服务器的哪一个数据库。该函数的原型是:

bool select_db ( string database_name)

调用如果成功返回TRUE,失败返回FALSE。参数database_name指定要使用的数据库名称。

当操作完数据库后,还要调用类mysqli的成员函数close()来关闭之前打开的数据库连接,从而释放连接资源。虽然在PHP脚本执行完毕时,PHP会自动关闭数据库连接,但是及时关闭数据库连接是一个更好的编程习惯。

本例中,连接并使用数据库的代码如下:

// 调用mysqli的构造函数建立连接,同时选择使用数据库'test'

$db = @new mysqli("127.0.0.1", "developer", "123456","test");

// 检查数据库连接

if (mysqli_connect_errno()) {

    echo"数据库连接失败!<br>\n";

    echomysqli_connect_error();

   exit;   // 退出程序,后面的所有语句将不再执行

}

printf("Host information: %s<br/><br/>\n",$db->host_info);

//...... 一些操作数据库数据的语句

// 关闭数据库连接

$db->close();

到此为止,就已经建立好了一个操作数据库的PHP程序框架。

 

>>>3将用户信息记录到数据库

mixed query ( string query [, int resultmode] )

 

下面就使用query()函数把前面用自动全局变量$_POST获取到的用户信息添加到数据库中去,代码如下:

$sql = "INSERT INTO t_user (f_username, f_password, f_name,f_email) VALUES";

$sql .= "('$username', '$pwd', '$name', '$email')";

echo $sql;

$rs = $db->query($sql);

var_dump($rs);

if (!$rs) {

   $db->close(); // 关闭数据库连接

    echo'数据记录插入失败!';

    exit;

}

到此为止,已经制作好HTML注册表单,也能够获取到提交给PHP的用户信息,而且建立好了数据库连接并将这些用户信息记录到数据库。现在来整理一下代码,register.php文件的内容应当如下所示:

<?php

$username   =$_POST['username'];

$pwd       = $_POST['pwd'];

$repeat_pwd = $_POST['repeat_pwd'];

$name      = $_POST['name'];

$email     = $_POST['email'];

if (!empty($username)){       // 用户填写了数据才执行数据库操作

    //调用mysqli的构造函数建立连接,同时选择使用数据库'test'

    $db =@new mysqli("127.0.0.1", "developer", "123456", "test");

    //检查数据库连接

    if(mysqli_connect_errno()) {

       echo "数据库连接失败!<br>\n";

       echo mysqli_connect_error();

       exit;   // 退出程序,后面的所有语句将不再执行

    }

   

    //将用户信息插入数据库的t_user表

    $sql ="INSERT INTO t_user (f_username, f_password, f_name, f_email)VALUES";

    $sql .="('$username', '$pwd', '$name', '$email')";

    $rs =$db->query($sql);

    if (!$rs){

       $db->close(); // 关闭数据库连接

       echo '数据记录插入失败!';

       exit;

    }

    echo"<font color='red'size='5'>恭喜您注册成功!</font><br>\n";

    //关闭数据库连接

   $db->close();

}

?>

<html>

<head>

<meta http-equiv="Content-Type"content="text/html; charset=gb2312">

<title>Registeringform</title>

</head>

<body>

<?php

if (!empty($username) ) {

    echo"您填写的信息是:<br>\n";

    echo"用户名:    $username <br>\n";

    echo"密码:     $pwd <br>\n";

    echo"重复密码:   $repeat_pwd<br>\n";

    echo"姓名:     $name <br>\n";

    echo"Email:    $email <br>\n";

}

?>

<form name="frmRegister" method="post"action="register.php">

<table width="330" border="0" align="center"cellpadding="5" bgcolor= "#eeeeee">

<tr>

   <tdwidth="40%">用户名:</td>

   <td><inputname="username" type="text" id="username"></td>

</tr>

<tr>

   <td>密码:</td>

   <td><input name="pwd"type="password"id="pwd"></td>

</tr>

<tr>

   <td>重复密码:</td>

   <td><inputname="repeat_pwd" type="password"id="repeat_pwd"></td>

</tr>

<tr>

   <td>姓名:</td>

   <td><input name="name"type="text"id="name"></td>

</tr>

<tr>

   <td>Email:</td>

   <td><inputname="email" type="text"id="email"></td>

</tr>

<tr>

   <td colspan="2" align="center">

     <input type="submit" name="Submit"value="提交">

     <input type="reset" name="reset"value="重置"></td>

</tr>

</table>

</form>

</body>

</html>

需要说明的是,在上面的代码中,使用了if(!empty($username))来确保当有数据提交上来时才执行数据库操作。这样做的原因是,在进行PHP网络编程时,HTML表单内填写的数据往往是提交给表单所在的PHP文件本身来处理的。而第一次运行该PHP文件时服务器上是获取不到任何数据的,只有当用户填写完表单并提交之后第二次运行该PHP文件时,才能获取到用户填写的数据。

运行程序。在浏览器中打开register.php,然后在表单中输入适当的数据。         

php注册及登陆验证模块2      php注册及登陆验证模块2

           

填写好的注册表单                                   注册成功的页面

所属分类:编程相关Php编程    作者:荡凯网络    时间:2010-6-14 12:04:00

文章导航