1 / 36

文章管理模块实现

文章管理模块实现. 告知:. 任务:实现文章的添加,查看,删除功能 知识点: PHP中常用的MySQL操作函数 PHP中其它MySQL操作函数. 任务 1 : 文章添加功能. 用户登录后,进入 file.php 页面,将标题与文章内容提交后交 check_file.php 页面处理。. 任务 1 : 文章添加功能. check_file.php 页面将提交的数据插入数据库, 并提示插入失败与成功的信息,成功后继续返回 file.php 页面。 关键代码:( check_file.php ) <?php session_start();

Download Presentation

文章管理模块实现

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 文章管理模块实现

  2. 告知: 任务:实现文章的添加,查看,删除功能 知识点: • PHP中常用的MySQL操作函数 • PHP中其它MySQL操作函数

  3. 任务1:文章添加功能 用户登录后,进入file.php页面,将标题与文章内容提交后交check_file.php页面处理。

  4. 任务1:文章添加功能 check_file.php页面将提交的数据插入数据库, 并提示插入失败与成功的信息,成功后继续返回file.php页面。 关键代码:(check_file.php ) <?php session_start(); include "check_login.php"; include "Conn/conn.php"; $file_id=$_GET[file_id]; $sql="delete from tb_article where id=".$file_id; $result=mysql_query($sql,$link); if($result){ $sql1 = "delete from tb_filecomment where fileid = ".$file_id; $rst1 = mysql_query($sql1,$link); if($rst1) echo "<script>alert('博客文章已被删除!');location='$_SERVER[HTTP_REFERER]';</script>"; else echo "<script>alert('删除失败!');history.go(-1);</script>"; } else{ echo "<script>alert('博客文章删除操作失败!');history.go(-1);</script>"; } ?>

  5. 任务2:文章查询功能 点击查询文章超链接,进入文章查询页面query.php

  6. 任务2:文章查询功能 在query.php页面对提交的数据进行处理,并在同一页面显示查询后的数据

  7. 任务2:文章查询功能 <?php if (isset($_POST[sel_key])){ $tj=$_POST[sel_tj]; $key=$_POST[sel_key]; $sql="select * from tb_article where $tj like '%$key%'"; $rst = mysql_query($sql,$link); $result=mysql_fetch_array($rst); if(mysql_num_rows($rst) == 0) { echo "[<font color=red>对不起,您检索的博客信息不存在!</font>]"; } else{ ?> 在query.php页面对提交的数据进行处理,并在同一页面显示查询后的数据 关键代码:

  8. 任务3:显示文章标题并查询信息 <?php $p_sql = "select * from tb_public order by id desc"; $p_rst = mysql_query($p_sql,$link); ?> 在文章首页index.php按时间排序显示文章标题

  9. 任务3:显示文章标题并查询信息 <?php $sql=mysql_query("select * from tb_article where id = ".$file_id1); $result=mysql_fetch_array($sql); ?> 点击标题查询文章具体信息

  10. 任务4:文章删除 关键代码: <?php $file_id=$_GET[file_id]; $sql="delete from tb_article where id=".$file_id; $result=mysql_query($sql,$link); ?> 点击标题查询文章具体信息后点击删除,将删除这条文章

  11. 相关知识点 参考书本第九章

  12. 9-1 PHP中常用的MySQL操作函数 1.连接MySQL服务器 PHP中连接MySQL数据库服务器最简单的函数是mysql_connect(),语法格式如下: resource mysql_connect (string hostname,string username,string password); 函数功能:通过PHP程序连接MySql数据库服务器。如果成功连接MySQL服务器,则返回一个MySQL服务器连接标识(link_identifier),否则返回FALSE。

  13. 9-1 PHP中常用的MySQL操作函数 2. 设置数据库字符集 调用PHP函数mysql_query("set names 'gbk'")可以将character_set_client、character_set_connection和character_set_results的字符集设置为gbk字符集。

  14. 9-1 PHP中常用的MySQL操作函数 3. 关闭MySQL服务器连接 mysql_close()函数的语法格式如下: bool mysql_close( [resource link_identifier] ) 函数功能:mysql_close()函数关闭指定的连接标识所关联到的MySQL 服务器的连接。如果没有指定link_identifier,则关闭上一个打开的连接。如果关闭成功则返回TRUE,失败则返回FALSE。

  15. 9-1 PHP中常用的MySQL操作函数 4. 选择当前操作的数据库 使用函数mysql_select_db()可以设置当前操作的数据库,该函数的语法格式如下: bool mysql_select_db ( string database_name [, resource link_identifier] ) 函数功能:如果没有指定MySQL服务器连接标识符,则使用上一个打开的MySQL服务器连接。如果没有打开的连接,本函数将无参数调用 mysql_connect()函数尝试打开一个新的MySQL服务器连接然后使用它。如果选择当前操作的数据库成功则返回TRUE,否则返回FALSE。

  16. 9-1 PHP中常用的MySQL操作函数 5. 发送SQL语句或MySQL命令 mysql_query()函数的语法格式如下: {bool|resouce} mysql_query ( string sql [, resource link_identifier] ) 函数功能:如果没有指定MySQL服务器连接标识link_identifier,则使用已打开的连接。然后向数据库引擎发送sql字符串(SQL语句或MySQL命令)。当发送的sql字符串执行失败时,mysql_query()函数返回FALSE;发送的sql字符串是insert语句、update语句或delete语句,并且sql字符串成功执行时,mysql_query()函数返回TRUE;发送的sql字符串是select语句,并且select语句成功执行时,mysql_query()函数返回结果集(result)类型的数据(实际是resource类型的数据)。

  17. 9-1 PHP中常用的MySQL操作函数 5. 发送SQL语句或MySQL命令 使用PHP的mysql_query()函数向MySQL服务器引擎发送insert语句、update语句或delete语句后,可以使用mysql_affected_rows()函数查看该SQL语句影响到的表记录行数。mysql_affected_rows()函数的语法格式如下: int mysql_affected_rows ( [resource link_identifier] ) mysql_affected_rows()函数功能:取得最近一次与 link_identifier 关联的 insert、update或delete语句所影响的记录行数。

  18. 9-1 PHP中常用的MySQL操作函数 5. 发送SQL语句或MySQL命令 使用PHP的mysql_query()函数发送insert语句向某个数据库表中添加记录时,若该数据库表中的某个字段为auto_increment自增字段,可以使用mysql_insert_id()函数得到当前insert语句执行后的该字段值。mysql_insert_id()函数的语法格式如下: int mysql_insert_id ( [resource link_identifier] ) mysql_insert_id()函数功能:mysql_insert_id()函数返回给定的link_identifier中上一条insert语句产生的 auto_increment的ID号;如果没有指定 link_identifier,则使用上一个打开的连接。

  19. 9-1 PHP中常用的MySQL操作函数 5. 发送SQL语句或MySQL命令 mysql_query()函数还可以向MySQL服务器引擎发送select语句,此时mysql_query()函数将返回一个结果集(result)数据,可以使用mysql_num_rows()函数查看该select语句查询到的表记录行数。mysql_num_rows()函数的语法格式如下: int mysql_num_rows ( resource result ) mysql_num_rows()函数功能:返回结果集result中记录的行数,该函数仅对 select 语句有效。

  20. 9-1 PHP中常用的MySQL操作函数 5. 发送SQL语句或MySQL命令 结果集(result)使用过后,应该尽快地将其占用的服务器内存资源释放,可以使用函数mysql_free_result()实现,mysql_free_result()函数的语法格式如下: bool mysql_free_result ( resource result ) mysql_free_result()函数函数功能:释放结果集result占用的服务器内存资源。若执行成功,返回TRUE,否则返回FALSE。

  21. 9-1 PHP中常用的MySQL操作函数 5. 发送SQL语句或MySQL命令 使用mysql_query()函数还可以向MySQL服务器引擎发送MySQL命令。例如PHP语句“mysql_query("set names 'gbk'");”将character_set_client、character_set_connection和character_set_results的字符集设置为gbk。

  22. 9-1 PHP中常用的MySQL操作函数 6. 遍历结果集中的数据 mysql_fetch_row()函数的语法格式: array mysql_fetch_row ( resource result ) mysql_fetch_row()函数功能:从结果集result中取得下一行记录,并将该记录生成一个数组,数组的元素的键为从零开始的整数,数组元素的值依次为select语句中“字段列表”的值。若结果集result中没有下一行记录,则函数返回FALSE。 mysql_fetch_array()函数的语法格式: array mysql_fetch_array ( resource result ) mysql_fetch_array()函数功能:该函数是mysql_fetch_row()函数的扩展版本,该函数的返回值中除了包含mysql_fetch_row()函数的返回值,还包含select语句中“字段列表=>字段列表值”的数组元素。

  23. 9-1 PHP中常用的MySQL操作函数 7. MySQL服务器连接与关闭最佳时机 <?php function student_query(){ $serverLink = @mysql_connect("localhost","root","") or die("连接服务器失败!程序中断执行!"); mysql_query("set names 'gbk'"); $dbLink = @mysql_select_db("student") or die("选择当前数据库失败!程序中断执行!"); $selectSQL = "select * from student"; $resultSet = mysql_query($selectSQL) or die(mysql_error()); while($student = mysql_fetch_array($resultSet)){ echo $student['student_id']." "; echo $student['student_no']." "; echo $student['student_name']."<br/>"; } mysql_free_result($resultSet); mysql_close($serverLink); } student_query(); student_query(); ?> <?php function student_query(){ $selectSQL = "select * from student"; $resultSet = mysql_query($selectSQL) or die(mysql_error()); while($student = mysql_fetch_array($resultSet)){ echo $student['student_id']." "; echo $student['student_no']." "; echo $student['student_name']."<br/>"; } mysql_free_result($resultSet); } $serverLink = @mysql_connect("localhost","root","") or die("连接服务器失败!程序中断执行!"); mysql_query("set names 'gbk'"); $dbLink = @mysql_select_db("student") or die("选择当前数据库失败!程序中断执行!"); student_query(); student_query(); mysql_close($serverLink); ?>

  24. 9-1 PHP中常用的MySQL操作函数 8. MySQL服务器连接与关闭函数的制作 <?php $databaseConnection = null; function getConnection(){ $hostname = "localhost"; //数据库服务器主机名,可以用IP代替 $database = "users"; //数据库名 $userName = "root"; //数据库服务器用户名 $password = ""; //数据库服务器密码 global $databaseConnection; $databaseConnection = @mysql_connect($hostname, $userName, $password) or die(mysql_error()); //连接数据库服务器 mysql_query("set names 'gbk'");//设置字符集 @mysql_select_db($database, $databaseConnection) or die(mysql_error()); } function closeConnection(){ global $databaseConnection; if($databaseConnection){ mysql_close($databaseConnection) or die(mysql_error()); } } ?>

  25. 9-2 PHP中其它MySQL操作函数 1. 数据库操作函数 mysql_create_db()函数 mysql_list_dbs()函数

  26. 9-2 PHP中其它MySQL操作函数 2. 数据库表操作函数 mysql_list_tables()函数 mysql_tablename()函数 <?php $server_link = @mysql_connect("localhost","root","") or die("连接服务器失败!程序中断执行!"); mysql_query("set names 'gbk'"); $resultSet = @mysql_list_tables("student"); for($i = 0; $i < mysql_num_rows($resultSet); $i++){ printf ("表: %s<br/>", mysql_tablename($resultSet, $i)); } mysql_free_result($resultSet); mysql_close($server_link); ?>

  27. 9-2 PHP中其它MySQL操作函数 3. 选择当前操作的数据库并发送SQL语句 mysql_db_query()函数

  28. 9-2 PHP中其它MySQL操作函数 4. 表字段操作函数 mysql_num_fields()函数 语法格式:int mysql_num_fields ( resource result ) 函数功能:取得结果集result中字段的数目。 mysql_field_name()函数 语法格式:string mysql_field_name ( resource result, int field_index ) 函数功能:取得结果集result中指定字段的字段名。 说明:mysql_field_name()函数返回指定字段索引的字段名。field_index是该字段的数字偏移量,该偏移量从0开始。

  29. 9-2 PHP中其它MySQL操作函数 4. 表字段操作函数 mysql_field_type()函数 语法格式:string mysql_field_type ( resource result, int field_offset ) 函数功能:取得结果集result中指定字段的MySQL数据类型 说明:mysql_field_type() 返回指定字段的MySQL数据类型。field_offset是该字段的数字偏移量,该偏移量从0开始。 mysql_field_len()函数 语法格式:int mysql_field_len ( resource result, int field_offset ) 函数功能:返回结果集result中指定字段的长度。

  30. 9-2 PHP中其它MySQL操作函数 4. 表字段操作函数 mysql_field_flags()函数 语法格式:string mysql_field_flags ( resource result, int field_offset ) 函数功能:从结果集result中取得和指定字段关联的标志。每个标记对应一个单词,之间用一个空格分开。这些标记有:"not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp"等。

  31. 9-2 PHP中其它MySQL操作函数 5. 其他常用函数 mysql_fetch_lengths()函数 语法格式:array mysql_fetch_lengths ( resource result) 函数功能:返回结果集result中每个字段内容的长度。 mysql_result()函数 语法格式:mixed mysql_result ( resource result, int row [, mixed field] ) 函数功能:返回结果集result中一个字段的字段值。 mysql_errno()函数 语法格式:int mysql_errno ( [resource link_identifier] ) 函数功能:返回MySQL 数据库服务器的错误代码,如果没有出错则返回0(零)。 说明:mysql_errno()函数仅返回最近一次MySQL函数的错误代码,因此应该尽早地调用该函数。

  32. 9-2 PHP中其它MySQL操作函数 5. 其他常用函数 mysql_error()函数 语法格式:string mysql_error ( [resource link_identifier] ) 函数功能:返回MySQL 数据库服务器产生的错误文本信息,如果没有出错则返回””空字符串)。 说明:mysql_error()函数仅返回最近一次 MySQL 函数的错误文本信息,因此应该尽早地调用该函数。

  33. 9-3 用户注册系统的实现 1. 用户注册系统文件组织结构 2. 用户注册界面的实现 3. 数据库的实现 4. 制作用户注册系统所需的函数 5. 用户注册功能的实现 6. 用户登录页面的实现 7. 用户登录功能的简单实现

  34. 9-4 SQL注入 当配置文件php.ini中的magic_quotes_gpc选项设置为关闭时(magic_quotes_gpc = Off),使用用户名“‘or’‘=’”和密码“‘or’‘=’”登录系统时,系统永远可以登录成功 。 这样一些非法用户就可以乘虚而入,成功登陆系统,这就是SQL注入(SQL Injection)。SQL注入产生的原因是由于某些特殊字符打乱了SQL语句本身的逻辑,使数据库服务器引擎错误的执行了某些SQL语句。

  35. 9-4 SQL注入 MySQL数据库引擎不会自动过滤特殊字符,因此防止SQL注入发生的方法是:在PHP程序中过滤特殊字符。以用户注册系统为例,有两种解决方案: 方案一:当配置文件php.ini中的magic_quotes_gpc选项设置为关闭时(magic_quotes_gpc = Off),使用addslashes()函数将GET或POST提交方式提交的特殊字符转义。 方案二:将配置文件php.ini中的magic_quotes_gpc选项设置为开启(magic_quotes_gpc = On),PHP预处理器会自动将将GET或POST提交方式提交的特殊字符转义。

More Related