lwcompany

功到自然成

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

1.php与mySQL

                1.建立连接

                           1.  连接MYSQL服务器

                                连接MySQL服务器的函数是mysql_connect()函数,语法格式如下:

                                resource mysql_connect([string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]])

                                               【例8.1】 测试能否连接MySQL数据库。

                                                新建EX8_1.php文件,输入以下代码:

<?php
$conn=mysql_connect('localhost','root','123456');
if($conn)
	echo "连接成功";
else
	echo "连接失败";
?>

                           2.选择数据库

                               使用mysql_select_db()函数,语法格式如下:

                               bool mysql_select_db(string $database_name [, resource $ link_identifier ])

<?php
$link=mysql_connect ('localhost', 'root', '123456')
	or die('数据库服务器连接失败:'.mysql_error());
if(mysql_select_db('PXSCJ', $link))
	echo '选择数据库成功';
?>

                          3.关闭数据库

                                bool mysql_close([ resource $link_identifier ])

              2.通过PHP执行SQL语句

                               通常使用mysql_query()函数执行MySQL的SQL语句,语法格式如下:

                                resource mysql_query ( string $query [, resource $link_identifier ] )

<?php
$conn= mysql_connect('localhost','root','123456') or die('连接失败');
mysql_select_db('PXSCJ', $conn) or die('选择数据库失败');
$sql="select * from XSB";
$result=mysql_query($sql);
if($result)
	echo "SQL 语句执行成功!";
?>

                                注意:由于连接上的字符集问题,中文数据在插入时可能会导致错误,所以在插入数据前需要使用语句”set name gb2312“来设置字符集

                                PHP还有一个mysql_db_query()函数也能够执行SQL语句,不同的是,该函数中可以指定SQL语句运行的数据库。语法格式为:

                                resource mysql_db_query(string $database , string $query [, resource $link_identifier ])

                3.处理返回结果

                                1. mysql_fetch_row()函数

                                    使用mysql_fetch_row()函数可以从返回的结果集中逐行获取记录,语法格式如下:

                                    array mysql_fetch_row(resource $result)

                                     参数$result指定返回结果集的资源变量名,该函数从指定的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,

                                     数组的键名默认以数字顺序分配,偏移量从0开始。依次调用mysql_fetch_row()函数将返回结果集中的下一行,如果没有更多行则返回FALSE。例如:

<?php
$conn= mysql_connect('localhost','root','123456') or die('连接失败');
mysql_select_db('PXSCJ', $conn) or die('选择数据库失败');
mysql_query("SET NAMES gb2312");
$sql="select * from XSB where 学号= '081101'";
$result=mysql_query($sql);
if($row=mysql_fetch_row($result))
	print_r($row);
//输出:Array ([0] => 081101 [1] => 王林 [2] => 1 [3] => 1990-02-10 [4] => 计算机 [5] => 50 [6] =>)
?>

                                      如果结果集中返回的是多行记录,可以使用循环的方式来获取记录

                                      【例8.2】 获取PXSCJ数据库中女同学的总学分信息

<?php
$conn= mysql_connect('localhost','root','123456') or die('连接失败');
mysql_select_db('PXSCJ', $conn) or die('选择数据库失败');
mysql_query("SET NAMES gb2312");
$sql="select * from XSB where 性别=0";
$result=mysql_query($sql);
echo "<table border=1>";
echo "<tr><td>学号</td><td>姓名</td><td>总学分</td></tr>";
while($row=mysql_fetch_row($result))
{
	list($XH,$XM,$XB,$CSSJ,$ZY,$ZXF,$BZ)=$row;
	echo "<tr><td>$XH</td><td>$XM</td><td>$ZXF</td></tr>";
}
echo "</table>";
?>

                                          处理返回结果集                                        

                                2. mysql_fetch_assoc()函数

                                   mysql_fetch_assoc()函数的作用也是获取结果集中的一行记录并保存到数组中,数组的键名为相应的字段名。语法格式如下:

                                   array mysql_fetch_assoc(resource $result)

                                   如果结果中的两个或两个以上的列具有相同字段名,最后一列将优先被访问。要访问同名的其他列,必须用该列的数字索引或给该列起个别名。对有别名的列,

                                   不能再用原来的列名访问其内容。

<?php
$conn= mysql_connect('localhost','root','123456');
mysql_select_db('PXSCJ', $conn);
mysql_query("SET NAMES gb2312");
$sql="select 学号 as XH, 姓名, 性别 from XSB where 学号='081101'";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);
echo $row['XH']. "<br>";							//输出"081101",不能输出$row['学号']
echo $row['姓名']. "<br>";							//输出"王林"
?>

                              3. mysql_fetch_array()函数

                                     mysql_fetch_array()函数是mysql_fetch_row()函数的扩展。除了将数据以数字作为键名存储在数组中外,还使用字段名作为键名存储。语法格式如下:

                                     array mysql_fetch_array(resource $result [, int $ result_type ])

<?php
$conn= mysql_connect('localhost','root','123456');
mysql_select_db('PXSCJ', $conn);
mysql_query("SET NAMES gb2312");
$sql="select 学号, 姓名, 性别 from XSB where 姓名='王林'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
print_r($row);
//输出:Array ( [0]=>081101 [学号]=>081101 [1]=>王林 [姓名]=>王林 [2]=>1 [性别]=>1 )
?>
                              4.mysql_fetch_object()函数

                                     使用mysql_fetch_object()函数将从结果集中取出一行数据并保存为对象,使用字段名即可访问对象的属性。语法格式如下:

                                     object mysql_fetch_object(resource $result)                

<?php
$conn= mysql_connect('localhost','root','123456');
mysql_select_db('PXSCJ', $conn);
mysql_query("SET NAMES gb2312");
$sql="select * from XSB where 学号='081101'";
$result=mysql_query($sql);
$row=mysql_fetch_object($result);
	echo "姓名:$row->姓名<br>";					//输出"王林"
	echo "专业:$row->专业<br>";					//输出"计算机"
?>
         4.其他MYSQL函数
                   1.

mysql_num_rows()函数

                                  mysql_num_rows()函数可以获取结果集中行的数目,语法格式如下:

                                  int mysql_num_rows(resource $result)

2.mysql_num_fileds()函数

                                  获取结果集中字段的数目,语法格式如下:

                                  int mysql_num_fields(resource $result)

3.mysql_affected_rows()函数

                                  本函数用于获取MySQL最后执行的INSERT、UPDATE或DELETE语句所影响的行数,语法格式如下:

                                   int mysql_affected_rows([ resource $link_identifier ])

                                   $link_identifier参数为已经建立的数据库连接标志符。本函数执行成功则返回受影响的行的数目,否则将返回-1。若最近一次执行的是没有WHERE子句的DELETE语句,

                                   则表中所有记录都被删除,函数将返回0。注意,本函数只对改变MySQL数据库中记录的操作起作用,对于SELECT语句本函数将不会得到预期的行数。

4.mysql_field_name()函数

                                    本函数用于获取指定位置的字段名,语法格式如下:

                                    string mysql_field_name(resource $result , int $field_index)

                                    $filed_index参数为要获取字段的位置,用数字表示,例如,1表示第1列。

5.mysql_field_type()函数

                                     本函数返回指定字段的数据类型,语法格式如下:

                                     string mysql_field_type(resource $result , int $field_offset)

                                      $field_offset参数用于指定字段所在的位置。

6.mysql_field_len()函数

                                      本函数用于返回指定字段的长度,语法格式如下:

                                      int mysql_field_len (resource $result , int $field_offset )

                                      参数格式与mysql_field_type()函数类似

7.mysql_free_result()函数

                                       bool mysql_free_result(resource $result)

                                        本函数将释放所有与结果标志符$result所关联的内存。由于在脚本结束后所有关联的内存都会被自动释放,

                                        所以仅需要在考虑到返回很大的结果集会占用很多内存时才调用本函数

8.mysql_create_db()函数

                                       本函数用于创建一个新的MySQL数据库,语法格式如下:

                                        bool mysql_create_db(string $database_name[, resource $link_identifier ])

                                        $database_name参数指定要创建的数据库名。

9.mysql_drop_db()函数

                                        本函数用于删除一个已经存在的MySQL数据库,语法格式如下:

                                         bool mysql_drop_db (string $database_name [, resource $ link_identifier ])

10.mysql_data_seek()函数

                                         函数用于将结果集中的内部指针移动到指定的行号,语法格式如下:

                                         bool mysql_data_seek(resource $result , int $row_number)

                                         $row_number参数用于指定要移动到的行号,例如,为2表示移动到第2行。

                  5.实例-操作课程表

                                       使用PHP操作MySQL中的PXSCJ数据库,对课程信息实现查询、增加、删除、修改的功能。建立触发器,如果删除一条记录,则同时删除成绩表中该课程信息。

                                       在MySQL客户端输入以下创建触发器的代码

USE PXSCJ;
DELIMITER $$
CREATE TRIGGER KC_DELETE AFTER DELETE
	ON KCB FOR EACH ROW
BEGIN
	DELETE FROM CJB WHERE 课程号=OLD.课程号;
END$$
DELIMITER 

                                          

                                         课程表2

 

                                         运行结果如图所示。在第一个文本框中输入课程号,单击【查找】按钮,如果课程表中有这个课程号,则下方的表格中会显示各列的内容。

                                         在文本框中修改该课程的信息后单击【修改】按钮即可对该课程进行修改,单击【添加】按钮可以添加新的课程,单击【删除】按钮可以删除某门课程,

                                         并激活触发器KC_DELETE,同时将成绩表CJB中的该门课程的信息删除

USE PXSCJ;
DELIMITER $$
CREATE TRIGGER KC_DELETE AFTER DELETE
	ON KCB FOR EACH ROW
BEGIN
	DELETE FROM CJB WHERE 课程号=OLD.课程号;
END$$
DELIMITER ;

                                         新建EX8_3.PHP

<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<head><title>课程信息更新</title>
<style type="text/css">
<!--
.STYLE1 {font-size: 15px; font-family: "幼圆";}
-->
</style>
</head>
<body>
	<div align="center"><font face="幼圆" size="5" color="#008000">
					<b>课程表操作</b></font></div>
<form name="frm1" method="post">
<table width="300" align="center">
<tr><td width="120"><span class="STYLE1">根据课程号查询:</span></td>
	<td><input name="KCNumber" id="KCNumber" type="text" size="10">	
		<input type="submit" name="test" class="STYLE1" value="查找"></td></tr>
</table>
</form>
<?php
$conn=mysql_connect("localhost","root","123456") or die('连接失败');	//连接服务器
mysql_select_db("PXSCJ",$conn) or die('连接数据库失败');			//选择数据库
mysql_query("SET NAMES 'gb2312'");							//设置字符集
$KCNumber=@$_POST['KCNumber'];							//获取课程号
$sql="select * from KCB where 课程号='$KCNumber'";				//查找课程信息
$result=mysql_query($sql);	
$row=@mysql_fetch_array($result);							//取得查询结果
if(($KCNumber!==NULL)&&(!$row))							//判断课程是否存在
	echo "<script>alert('没有该课程信息!')</script>";
?>
<form name="frm2" method="post">
<table bgcolor="#CCCCCC" width="300" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>	<td bgcolor="#CCCCCC" width="90"><span class="STYLE1">课程号:</span></td>
	<td><input name="KCNum" type="text" class="STYLE1" value="<?php echo $row['课程号']; ?>">
		<input name="h_KCNum" type="hidden" value="<?php echo $row['课程号']; ?>"></td></tr>
<tr>	<td bgcolor="#CCCCCC" width="90"><span class="STYLE1">课程名:</span></td>
	<td><input name="KCName" type="text" class="STYLE1" 
				value="<?php echo $row['课程名']; ?>"></td></tr>
<tr><td bgcolor="#CCCCCC"><div class="STYLE1">开课学期:</div></td>
	<td><input name="KCTerm" type="text" class="STYLE1" 
				value="<?php echo $row['开课学期']; ?>"></td></tr>	
<tr><td bgcolor="#CCCCCC"><span class="STYLE1">学时:</span></td>
	<td><input name="KCtime" type="text" class="STYLE1" 
				value="<?php echo $row['学时']?>"></td></tr>
<tr><td bgcolor="#CCCCCC"><span class="STYLE1">学分:</span></td>
	<td><input name="KCCredit" type="text" class="STYLE1" 
				value="<?php echo $row['学分'];?>"></td></tr>
<tr><td  align="center" colspan="2" bgcolor="#CCCCCC">
	<input name="b" type="submit" value="修改" class="STYLE1">&nbsp;
	<input name="b" type="submit" value="添加" class="STYLE1"/>&nbsp;  
	<input name="b" type="submit" value="删除" class="STYLE1">&nbsp;
	</td></tr>
</table>
</form>
</body>
</html>
<?php
$KCH=@$_POST['KCNum'];						//课程号
$h_KCH=@$_POST['h_KCNum'];					//表单中原有的隐藏文本中的课程号
$KCM=@$_POST['KCName'];						//课程名
$KKXQ=@$_POST['KCTerm'];						//开课学期
$XS=@$_POST['KCtime'];							//学时
$XF=@$_POST['KCCredit'];						//学分
//简单的验证函数,验证表单数据的正确性
function test($KCH,$KCM,$KKXQ,$XF)
{
	if(!$KCH)									//判断课程号是否为空
		echo "<script>alert('课程号不能为空!');location.href='EX8_3.php';</script>";
   	elseif(!$KCM)								//判断课程名是否为空
    		echo "<script>alert('课程名不能为空!');location.href='EX8_3.php';</script>";
   	elseif($KKXQ>8||$KKXQ<1)					//判断开课学期是否在1-8之间
       	echo "<script>alert('开课学期必须为1-8的数字!');location.href='EX8_3.php';</script>";
   	elseif(!is_numeric($XF))						//判断学分是否为数字
       	echo "<script>alert('学分必须为数字!');location.href='EX8_3.php';</script>";
}
//单击【修改】按钮
if(@$_POST["b"]=='修改')									
{    
	test($KCH,$KCM,$KKXQ,$XF);					//检查输入信息
	if($KCH!=$h_KCH)							//判断用户是否修改了原来的课程号值
		echo "<script>alert('课程号与原数据有异,无法修改!');</script>";
	else
	{						  	
		$update_sql="update KCB set 课程名='$KCM',开课学期=$KKXQ,
					学时=$XS,学分=$XF WHERE 课程号='$KCH'";		
		$update_result=mysql_query($update_sql);						
     	if(mysql_affected_rows($conn)!=0)
			echo "<script>alert('修改成功!');</script>";
		else
			echo "<script>alert('信息未修改!');</script>";
	}
}
//单击【添加】按钮
if(@$_POST["b"]=='添加')						
{
	test($KCH,$KCM,$KKXQ,$XF);					
	$s_sql="select 课程号 from KCB where 课程号='$KCH'";	
	$s_result=mysql_query($s_sql);
	$s_row=mysql_fetch_array($s_result);
	if($s_row)									//若要添加的课程已经存在则提示
		echo "<script>alert('学号已存在,无法添加!');</script>";
	else
	{
		$insert_sql="insert into KCB(课程号,课程名,开课学期,学时,学分)
				 	values('$KCH', '$KCM', $KKXQ, $XS, $XF)";
		$insert_result=mysql_query($insert_sql) or die('添加失败!');
		if(mysql_affected_rows($conn)!=0)
     	 	echo "<script>alert('添加成功!');</script>"; 
	}
}
//单击【删除】按钮
if(@$_POST["b"]=='删除')						
{
	if(!$KCH)
	{
		echo "<script>alert('请输入要删除的课程号!');</script>";
	}
	else
	{
		$d_sql="select 课程号 from KCB where 课程号='$KCH'";	
		$d_result=mysql_query($d_sql);
		$d_row=mysql_fetch_array($d_result);
		if(!$d_row)								//课程如果不存在则提示
			echo "<script>alert('课程号不存在,无法删除!');</script>";
		else
		{
			$del_sql="delete from KCB where 课程号='$KCH'";
			$del_result=mysql_query($del_sql) or die('删除失败!');
			if(mysql_affected_rows($conn)!=0)
				echo "<script>alert('删除学号".$KCH."成功!');</script>";
		}
	}
}
?>

2.php与SQL Server

         本书采用的是SQL2005中文开发版

                1.相关配置

                     php提供了mssql扩展库,用户打开php.ini文件查找有没有这行:

                                                    extension=php_mssql.dll

                                                    如果有,并且前面没有分号,则表示已经安装了mssql扩展。没有则去下载一个与当前php版本相同、名为mssql.dll的文件,将其保存在php安

                                                    装目录下的ext文件夹下。然后打开Php配置文件php.ini,在最后加上上面代码

                                                    连接sqlserver还需一个文件ntwdblib.dll文件,如果找不到可下载http://www.php.net/downloads.php的压缩包.将文件拷贝到c:/windows/

                                                    system32文件夹下.

                                                    配置工作做好后,重启apache服务器。打开phpinfo页面文件夹,如果浏览器显示如图内容,则说明mssql扩展成功

                                                    mssql扩展

                2.建立连接

                       1.连接sql server服务器

                                                  PHP连接SQL Server数据库是通过mssql_connect()函数来完成的,语法格式如下:

                                                  resource mssql_connect ([ string $servername [, string $username [, string $password [, bool $new_link ]]]] )

                                                   $servername参数是SQL Server的服务器名或本地机器名,$username参数指定用于连接数据库服务器的用户名,

                                                   $password参数指定相应的密码。$new_link参数的含义与mysql_connect()函数相同。例如:

<?php
$conn=mssql_connect('0BD7E57C949A420', 'sa', '123456') or die("连接失败");
if($conn)
	echo "连接成功";
?>

                       2.选择数据库

                                                  mssql_select_db(),语法格式如下:

                                                  bool mssql_select_db(string $database_name [, resource $link_identifier ])

                                                  $database_name参数为要选择的数据库名。

                                                  例如,假设SQL Server中已经创建了学生成绩管理数据库PXSCJ,数据库中的表XSB、KCB、CJB已经创建,样本数据也已经存在

                                                 (设计过程略,表结构和样本数据参照第7章)。要选择PXSCJ数据库可以使用以下代码:

<?php
$conn=mssql_connect('0BD7E57C949A420', 'sa', '123456') or die("连接失败");
mssql_select_db('PXSCJ', $conn) or die("选择数据库失败");
?>

                      3.关闭连接

                                                   关闭连接使用mssql_close()函数,语法格式如下:

                                                    bool mssql_close([ resource $link_identifier ])

               3.执行T-SQL语句

                       mixed mssql_query (string $query [, resource $link_identifier])

                       mssql_query()函数的格式和用法与mysql_query()函数类似

<?php
$conn=mssql_connect('0BD7E57C949A420', 'sa', '123456') or die("连接失败");
mssql_select_db('PXSCJ', $conn) or die("选择数据库失败");
$sql= "select * from XSB";
$result= mssql_query($sql, $conn);
if($result)
	echo "存在记录";
else
	echo "记录为空";
?>

               4.处理返回结果

                       PHP在处理从SQL Server返回的结果时使用的是mssql_fetch_row()、mssql_fetch_assoc()、mssql_fetch_array()和mssql_fetch_object()函数,

                       格式和用法与MySQL函数库中的mysql_fetch_row()、mysql_fetch_assoc()、mysql_fetch_array()、mysql_fetch_object()函数类似  

<?php
$conn=mssql_connect('0BD7E57C949A420', 'sa', '123456') or die("连接失败");
mssql_select_db('PXSCJ', $conn) or die("选择数据库失败");
$sql="select * from XSB";
$result=mssql_query($sql, $conn);
while($row=mssql_fetch_array($result))
{
	echo $row['学号']."<br>";
}
?>

             5.实例----实现简单的登录

                       【例8.4】 制作一个登录系统,实现用户注册、用户登录、用户注销、修改密码等功能。

                        首先需要进行数据库设计,本例中需要创建的数据库名为USERS,数据库中有一个表userinfo,表的结构如表8.1所示。

                        userinflo

                        ex8_4_fun.php文件,用于连接数据库

<?php
$server="0BD7E57C949A420";					//服务器名或本地机器名
$user="sa";							//登录名
$password="123456";						//密码
$database="USERS";					        //要连接的数据库
$conn=mssql_connect($server,$user,$password);            	//连接服务器
mssql_select_db($database,$conn);				//打开数据库
?>

                        ex8_4_login.php文件,用户登录页面

<html>
<head>
<title>用户登录页面</title>
</head>
<body>
<form action="" method="post">
<div align="center"><font size="5" color="blue">用户登录</font></div>
<table align="center">
<tr><td>用户名:</td>
	<td><input type="text" name="userid"></td></tr>
<tr><td>密码:</td>
	<td><input type="password" name="pwd" size="21"></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="Submit" value="登录">
<input type="reset" name="Submit2" value="注册" onClick="window.location='EX8_4_regist.php'"></td></tr>
</table>
</form>
</body>
</html>
<?php
include "EX8_4_fun.php";						//包含EX8_4_fun.php文件,用于连接数据库
if(isset($_POST['Submit']))
{
	$userid=$_POST['userid'];					//用户名
	$pwd=$_POST['pwd'];							//密码
	$sql="select * from userinfo where username='$userid'";
	$result=mssql_query($sql);					//查看用户名是否存在
	if($row=mssql_fetch_array($result))
	{
		if($row['password']==$pwd)				//判断密码是否正确
		{
			session_start();
			$_SESSION['userid']=$userid;		//使用SESSION传值
			header("location:EX8_4_main.php");	//进入主页
		}
		else
			echo "<script>alert('密码错误!');</script>";
	}
	else
		echo "<script>alert('用户名不存在!');</script>";
}

?>

                        ex8_4_regist.php文件,用户注册页面

<html>
<head>
<title>用户注册页面</title>
</head>
<body>
<form action="" method="post">
<div align="center"><font size="5" color="blue">新用户注册</font></div>
<table width="340" align="center" border="0">
<tr><td width="80" align="right">用户名:</td>
	<td><input type="text" name="userid"></td><td><font color="red">*1-20个字符</font></td></tr>
<tr><td align="right">密码:</td>
	<td><input type="password" name="pwd1" size="21"></td><td><font color="red">*6-20个字符</font></td></tr>
<tr><td align="right">确认密码:</td>
	<td><input type="password" name="pwd2" size="21"></td><td>&nbsp;</td></tr>
<tr><td align="right">性别:</td>
	<td><input type="radio" name="sex" value="1">男
	<input type="radio" name="sex" value="0">女
	</td><td>&nbsp;</td></tr>
<tr><td align="right">年龄:</td>
	<td><input type="text" name="age"></td><td>&nbsp;</td></tr>
<tr><td align="right">email:</td>
	<td><input type="text" name="email"></td><td>&nbsp;</td></tr>
<tr><td colspan="3" align="center"><input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="重置"></td></tr>
</table>
</form>
</body>
</html>
<?php
if(isset($_POST['Submit']))
{
	$userid=$_POST['userid'];
	$pwd1=$_POST['pwd1'];
	$pwd2=$_POST['pwd2'];
	$sex=@$_POST['sex'];
	$age=$_POST['age'];
	$email=$_POST['email'];
	$checkid=preg_match('/^\w{1,20}$/',$userid);	//使用正则表达式检查用户名
	$checkpwd1=preg_match('/^\w{6,20}$/',$pwd1);
	$checkemail=preg_match('/^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/',$email);
	if(!$checkid)
		echo "<script>alert('用户名设置错误!');</script>";
	elseif(!$checkpwd1)
		echo "<script>alert('密码设置错误!');</script>";
	elseif(!$sex)
		echo "<script>alert('性别为必选项!');</script>";
	elseif($age&&(!is_numeric($age)))
		echo "<script>alert('年龄必须为一个数字!');</script>";
	elseif($email&&(!$checkemail))
		echo "<script>alert('email格式错误!');</script>";
	elseif($pwd1!=$pwd2)
		echo "<script>alert('两次输入的密码不一致!');</script>";
	else
	{
		include "EX8_4_fun.php";						//连接数据库
		$s_sql="select * from userinfo where username='$userid'";
		$s_result=mssql_query($s_sql);
		if(mssql_num_rows($s_result)!=0)
			echo "<script>alert('用户名已存在!');</script>";
		else
		{
			if($age)
			{	
				if($email)
					$in_sql="insert into userinfo values('$userid','$pwd1',$sex,$age,'$email')";
				else
					$in_sql="insert into userinfo values('$userid','$pwd1',$sex,$age,NULL)";
			}
			else
			{
				if($email)
					$in_sql="insert into userinfo values('$userid','$pwd1',$sex,NULL,'$email')";
				else
					$in_sql="insert into userinfo values('$userid','$pwd1',$sex,NULL,NULL)";
			}
			$in_result=mssql_query($in_sql);
			if(mssql_rows_affected($conn)==0)
				echo "<script>alert('注册失败!');</script>";
			else
			{
				//注册成功后跳转到登录页面
				echo "<script>alert('注册成功!');location.href='EX8_4_login.php';</script>";				
			}
		}
	}
}

?>

                        ex8_4_main.php文件,主页面

<?php
session_start();
$userid=@$_SESSION['userid'];
if($userid)
{
	echo "欢迎用户".$userid."登录!<br>";
	echo "<a href='EX8_4_select.php'>查看个人信息</a>&nbsp;";
	echo "<a href='EX8_4_update.php'>修改密码</a>&nbsp;";
	echo "<a href='EX8_4_delete.php'>注销账户</a>&nbsp;";
	echo "<a href='EX8_4_login.php'>退出</a><br><br>";

}
else
	echo "对不起,您没有权限访问本页面";
?>

                       ex8_4_select.php

<?php
include "EX8_4_main.php";
$username=@$_SESSION['userid'];
if($username)
{
	include "EX8_4_fun.php";
	$select_sql="select * from userinfo where username='$username'";
	$select_result=mssql_query($select_sql,$conn);
	while($row=mssql_fetch_row($select_result))
	{
		list($username,$password,$sex,$age,$email)=$row;
		echo "用户名:".$username."<br>";
		echo "性别:";
		if($sex==1)
			echo "男.<br>";
		else
			echo "女.<br>";
		echo "年龄:".$age."<br>";
		echo "email:".$email."<br>";	
	}
}
?>

                       ex8_4_update.php

 

<?php
session_start();
$username=@$_SESSION['userid'];
if($username)
{?>
<form action="" method="post">
<div align="center"><font size="5" color="blue">密码修改</font></div>
<table align="center">
<tr><td>原密码:</td>
	<td><input type="password" name="oldpwd"></td></tr>
<tr><td>新密码:</td>
	<td><input type="password" name="newpwd"></td></tr>
<tr><td colspan="2" align="center">
<input type="submit" name="Submit" value="修改">
<input type="reset" name="Submit" value="重置">
</table>
</form>
<?php
if(isset($_POST['Submit']))
{
	include "EX8_4_fun.php";
	$oldpwd=$_POST['oldpwd'];				//原密码
	$newpwd=$_POST['newpwd'];				//新密码
	$s_sql="select * from userinfo where username='$username'";
	$s_result=mssql_query($s_sql,$conn);
	$s_row=mssql_fetch_object($s_result);
	if($s_row->password!=$oldpwd)			//判断原密码是否正确
		echo "<script>alert('原密码错误!');</script>";
	else
	{
		$checkpwd=preg_match('/^\w{6,20}$/',$newpwd);
		if(!$checkpwd)
			echo "<script>alert('新密码格式不满足要求!');</script>";
		else
		{
			$update_sql="update userinfo set password='$newpwd' where username='$username'";
			$update_sql=mssql_query($update_sql);
			if(mssql_rows_affected($conn)!=0)
				echo"<script>alert('密码修改成功!');location.href='EX8_4_main.php';</script>";
			else
				echo "<script>alert('密码修改失败!');</script>";
		}
	}
}

}
else
	echo "您没有权限访问本页面";
?>

                         ex8_4_delete.php

<?php
include "EX8_4_fun.php";
session_start();
$username=@$_SESSION['userid'];
$delete_sql="delete from userinfo where username='$username'";
$delete_result=mssql_query($delete_sql,$conn);
if(mssql_rows_affected($conn)!=0)	
	echo "<script>alert('注销用户成功!');location.href='EX8_4_login.php';</script>";
else
	echo "<script>alert('注销用户失败!');location.href='EX8_4_main.php';</script>";
?>
posted on 2011-07-25 10:42  平渡飞扬  阅读(2097)  评论(0编辑  收藏  举报