PHP语言:能做诸多事务的强大服务器端脚本语言

PHP 是一种强有力的服务器端脚本语言,能够创建动态交互性站点。PHP 可以做很多事情,尤其在 web 网站开发方面应用广泛。它能够快速、灵活且实用,从而更好地开发任何网站。PHP 是一种 HTML 嵌入式的脚本语言,其文件以.php 结尾。PHP 语言的诸多语法源自 C、Java 和 Perl,且具备一些 PHP 特有的特性。PHP 语言的主要目标在于让从事 Web 开发的程序员能够迅速地书写出动态生成的网页。

PHP语言:能做诸多事务的强大服务器端脚本语言

PHP 能做什么?

(1)PHP 能生成动态页面内容等.

PHP 可以关闭服务器上的文件。

(3)PHP 能收集表单数据等.

(4)PHP 能发送和接收 cookies等.

(5)PHP 能添加、删除、修改您的数据库中的数据等.

(6)PHP 能限制用户访问你的网站上的一些页面等.

(7)PHP 能加密数据等.

PHP代码理解: (1)基本PHP程序.

效果图:

(2)变量.

效果图.

(3)输出 HTML 代码.

2+3=5
	$b=3;							#双引号中变量会被解析执行.
	$c=$a+$b;			
	echo "

$a+$b="."$c

"; ?>

效果图.

(4)isset()函数.

效果图.

(5)注释.

//这是单行注释.
 
#这也是单行注释.
 
/*
这是多行注释块.
它横跨了.
多行.
*/

(6)接收表单数据.

用户名:"."$username

$_REQUEST 用于接收通过 get 方式或 post 方式传递的数据。 echo "

密 码:"."$password

"; ?>

效果图.

(7)HTML页面的传递代码.



	
	登录


	

用户名:

密 码:

(8)if 判断语句.

效果图.

(9)for 循环语句.

效果图.

(10)while循环语句.

效果图.

(11)PHP 操作数据库的一些步骤.

通过 php 连接上 Mysql,其中 IP 地址为 localhost,用户名是 root,密码是 123。
选择要操作的数据库,其名字为"test",通过 mysql_select_db("test")来实现。
设置客户端和连接的字符集,使用 mysql_query 函数执行 "set names utf8" 语句。
#通过php进行增删改查
释放连接资源,也就是断开连接,执行 mysql_close($conn);

(12)用户身份验证.

$username 等于 $_GET 中名为 'username' 的值。
$password 等于 $_GET 中名为 'password' 的值。
通过 php 连接上 Mysql,其中 IP 地址为 127.0.0.1,使用 root 作为用户名,123 作为密码进行连接,即 $conn = mysql_connect("127.0.0.1","root","123");
选择要操作的数据库,"test"是该数据库的名字,执行 mysql_select_db("test") 操作。
mysql_query("set names utf8")                       #设置客户端和连接字符集. 
从 hack 表中选择所有数据,条件是用户名等于 '$username' 并且密码等于 '$password' 。
在数据库中进行查询操作,查询的条件设定为:用户名等于 '$username' 并且密码等于 '$password' 。
mysql_query 函数的执行语句为 $res = mysql_query($sql,$conn) 。
如果($res 的行数不为 0),这里的 mysql_num_rows 是用于统计($res)变量的行数。
        echo "登录成功";
}else{
        echo "登录失败";
}
mysql_close($conn);                                 #释放连接资源(就是断开连接)

(13)PHP常见的代码 分析.

1. mysql_query( )函数的理解:

如果 mysql_query( )执行的是查询语句,比如 select 语句,那么它会返回一个资源标识符,这个资源标识符就是我们要查找的数据结果集。

mysql_query( )在执行增删改这类语句时,返回的结果为 true 或者 false 。

如果(isset($_GET['Submit'])),这意味着判断是否存在,具体来说就是判断 Submit 变量是否存在。
获取 id 变量的值并将其赋值给变量 $id ,这里的 id 变量的值来自于 $_GET['id'] 。
将 select 查询语句赋值给变量 $getid ,该查询语句为“SELECT first_name, last_name FROM users WHERE user_id = '$id'” 。
如果执行 $getid 这个查询语句后返回的结果为 false,就输出 '
'.mysql_error().'

mysql_query()函数用于执行 mysql 查询;die()函数会输出一条消息并退出当前脚本;mysql_error()函数能够返回上一个 MySQL 操作所产生的文本错误信息;只有在 or 之前的语句执行不成功时,才会去执行后面的语句;只有在 and 之前的语句执行成功时,才会执行后面的语句。

mysql_result( )函数能够返回结果中的一个字段的值。

mysql_numrows(Sresult) 的结果被赋值给变量 $num ,这个值表示结果集中行的数目。
$i = 0;
while ($i< $num) {                            #mysql_result函数是返回结果的一个字段的值.
    $first = mysql_result($result,Si,"first_name");    #返回结果集中first_name字段的值.
    $last = mysql_result($result,Si,"last_name");      #返回结果集中last_name字段的值.
    echo '
';    #
 

这是一个 html 标签,其含义是保持原样输出而不进行更改。它会输出“ID:”以及变量 $id 的值。

First name:'.$first.'

输出主要内容为姓氏:'.$last; 。

';#

是html语言里的换行符;$i++;}

mysql_real_escape_string( )函数针对用户输入的参数进行了过滤事宜。

$id = $_GET['id'];
将 $id 进行转义处理,使其在 MySQL 语句中更安全,具体是通过 mysql_real_escape_string 函数对 $id 进行处理,处理后的结果仍赋值给 $id 。
mysql_real_escape_string()函数对用户输入的那个 id 参数进行了过滤。
可以对单引号【'】进行转义,也可以对双引号【"】进行转义,还可以对反斜杠【\】进行转义,同时也可以对空字符【null】进行转义。
转义的作用是将指定的字符转换为无意义的符号。例如,PHP 解析器不会把经过转义的引号当作普通的引号来对待。
#PHP中另一个功能类似的函数: addslashes()

stripslashes( )函数的作用在于将 addslashes()函数所添加的反斜杠予以删除。

magic_quotes_gpc 魔术引号.

PHP 配置文件 php.ini 里有 magic_quotes_gpc 这个选项,它被称作魔术引号。

在 high 级别这个情况下,PHP 的 magic_quotes_gpc 被自动设置为 on 了。

开启之后,能够对所有的 GET 传值的数据自动运行 addslashes()函数,也能够对所有的 POST 传值的数据自动运行 addslashes()函数,还能够对所有的 CQOKIE 传值的数据自动运行 addslashes()函数。

$id = $_GET['id'];
$id = stripslashes($id);
$id 被设置为通过 mysql_real_escape_string 函数处理后的结果,即将 $id 进行了特定的转义处理。
stripslashes( )函数的作用在于删除由 addslashes()函数所添加的反斜杠,其目的是去除 addslashes()函数的转义效果。

is_numeric()函数用于判断变量是否为数字或者数字字符串。

if (is_numeric(Sid)){
获取 ID 的语句为:“SELECT first_name, last_name FROM users WHERE user_id = ”$id"";
在执行查询之前,使用了 if 语句来进行判断。判断的条件是 is_numeric()函数。这个函数用于判断用户输入的数据是否为数字型。如果不是数字型,就一概报错。
#and、or、 select等语句都无法执行。

从代码层面怎样去挖掘 SQL 注入漏洞呢?漏洞挖掘主要可以从以下这些方面开始进行:

代码中用于获取用户数据的变量有:S_GET、S_POST、$_COOKIE 以及 $_SERVER 。

代码中承担执行数据库查询工作的函数为:mysql_query()

在代码里搜索并跟踪这些变量和函数,以此来分析是否有漏洞存在。

如何从代码层面防范SQL注入.

对于数字型注入,能够使用 if 语句,并且把 is_nuynber()函数当作判断条件来进行防御。

对于字符型注入而言,对于那些用于接收用户参数的变量,要使用 mysql_real_escape_string( )函数或者 addslashes( )函数来进行过滤。

参考链接:PHP 教程 | 菜鸟教程

什么是 php 呢?它具体是什么呢?这是关于 php 的相关内容,可参考北海拾贝的博客 - CSDN 博客中的相关文章。

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

44阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读