php get_magic_quotes_gpc()函数用法介绍
在magic_quotes_gpc=On的情况下,如果输入的数据有
单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。
正是因为这个选项必须为On,但是又让用户进行配置的矛盾,在PHP6中删除了这个选项,一切的编程都需要在magic_quotes_gpc=Off下进行了。在这样的环境下如果不对用户的数据进行转义,后果不仅仅是程序错误而已了。同样的会引起数据库被注入攻击的危险。所以从现在开始大家都不要再依赖这个设置为On了,以免有一天你的服务器需要更新到PHP6而导致你的程序不能正常工作。
代码如下 | 复制代码 |
当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1 当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0 |
因此可以看出这个get_magic_quotes_gpc()函数的作用就是得到环境变量magic_quotes_gpc的值。既然在PHP6中删除了magic_quotes_gpc这个选项,那么在PHP6中这个函数我想也已经不复存在了。
php 判断是否开启get_magic_quotes_gpc功能了,以方便我们是否决定使用addslashes这个函数了。
代码如下 | 复制代码 |
function SQLString($c, $t){ |
预防数据库攻击的正确做法
代码如下 | 复制代码 |
<?php function check_input($value) { // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是数字则加引号 if (!is_numeric($value)) { $value = “‘” . mysql_real_escape_string($value) . “‘”; } return $value; } $con = mysql_connect(“localhost”, “hello”, “321″); if (!$con) { die(‘Could not connect: ‘ . mysql_error()); } // 进行安全的 SQL $user = check_input($_POST['user']); $pwd = check_input($_POST['pwd']); $sql = “SELECT * FROM users WHERE user=$user AND password=$pwd”; mysql_query($sql); mysql_close($con); ?> |
htmlentities用法
代码如下 | 复制代码 |
<html> John & 'Adams' |
htmlspecialchars用法
& (和) 转成 &
" (双引号) 转成 "
< (小于) 转成 <
> (大于) 转成 >
例
代码如下 | 复制代码 |
<html> |
他们的区别
这两个函数的功能都是转换字符为HTML字符编码,特别是url和代码字符串。防止字符标记被浏览器执行。使用中文时没什么区别,但htmlentities会格式化中文字符使得中文输入是乱码
htmlentities转换所有的html标记,htmlspecialchars只格式化& ' " < 和 > 这几个特殊符号
代码如下 | 复制代码 |
$str = '<a href="demo.php?m=index&a=index&name=中文">测试页面</a>'; echo 'htmlentities指定GB2312编码:'.htmlentities($str,ENT_COMPAT,"GB2312").''; echo 'htmlentities未指定编码:'.htmlentities($str).''; $str = '<a href="demo.php?m=index&a=index&name=中文">测试页面</a>'; echo htmlspecialchars($str).''; |
效果:
代码如下 | 复制代码 |
htmlentities指定GB2312编码:<a href="demo.php?m=index&a=index&name=中文">测试页面</a> htmlentities未指定编码:<a href="demo.php?m=index&a=index&name=ÖÐÎÄ">²âÊÔÒ³Ãæ</a> <a href="demo.php?m=index&a=index&name=中文">测试页面</a> |
定义和用法
explode() 函数把字符串分割为数组。
语法
explode(separator,string,limit)
例子
在本例中,我们将把字符串分割为数组:
代码如下 | 复制代码 |
<?php |
输出:
代码如下 | 复制代码 |
Array |
这样我们的字符就根据我们的设定就转换成了数组了哦。
数据转换js格式的数据是我们常用一种数据传递的方法,特别像ajax中会时常用到把数据转换成json然后再转换回来,下面看一个实例。代码如下 | 复制代码 |
function array_to_json($array) {
|
你可以试试这个 然后json_encode换成上面的函数看看正常了吗
代码如下 | 复制代码 |
<?php |
关于php中json_encode
json_encode()将PHP的不同类型的变量转换为对应的JSON字符串 string json_encode(mixed $value [, int
$options = 0])
PHP 5.3.0
JSON_HEX_QUOT: 将所有的双引号(”)转换为u0022。
// 实例代码:
代码如下 | 复制代码 |
$data = '"'; echo json_encode($data); // """ echo json_encode($data, JSON_HEX_QUOT); |
// "u0022"■JSON_HEX_TAG: 将所有的大于号(>)转换为u003E,将
所有的小于号(<)转换为 u003C。
JSON_HEX_AMP: 将所有的与号(&)转换为 u0026。
JSON_HEX_APOS: 将所有的单引号(’)转换为u0027。
JSON_FORCE_OBJECT: 当value为非关联数组时强制输出结果为JSON对象。在接收者要求数据为对象且value为空数组时
使用。
// 实例代码:
代码如下 | 复制代码 |
$data = array(); echo json_encode($data); // [] echo json_encode($data, JSON_FORCE_OBJECT); // {} |
PHP 5.3.3
JSON_NUMERIC_CHECK: Encodes numeric strings as numbers.
PHP 5.4.0
JSON_BIGINT_AS_STRING: Encodes large integers as their original string value. Available since PHP
5.4.0.
JSON_PRETTY_PRINT: Use whitespace in returned data to format it. Available since PHP 5.4.0.
JSON_UNESCAPED_SLASHES: Don’t escape /. Available since PHP 5.4.0.
JSON_UNESCAPED_UNICODE: Encode multibyte Unicode characters literally (default is to escape as uXXXX).
Available since PHP 5.4.0.
date()是我们常用的一个日期时间函数,下面我来总结一下关于date()函数的各种形式的用法,有需要学习的朋友可参考。格式化日期
date() 函数的第一个参数规定了如何格式化日期/时间。它使用字母来表示日期和时间的格式。这里列出了一些可用
的字母:
•d - 月中的天 (01-31)
•m - 当前月,以数字计 (01-12)
•Y - 当前的年(四位数)
您可以在我们的 PHP Date 参考手册中,找到格式参数中可以使用的所有字母。
可以在字母之间插入其他字符,比如 "/"、"." 或者 "-",这样就可以增加附加格式了:
代码如下 | 复制代码 |
<?php |
以上代码的输出类似这样:
2006/07/11
2006.07.11
2006-07-11
1,年-月-日
代码如下 | 复制代码 |
echo date('Y-m-j'); echo date('y-n-j'); |
大写Y表示年四位数字,而小写y表示年的两位数字;
小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。
代码如下 | 复制代码 |
echo date('Y-M-j'); echo date('Y-m-d'); |
大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);
没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。
代码如下 | 复制代码 |
echo date('Y-M-j'); echo date('Y-F-jS'); |
大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)
大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。
小结:
表示年可以用大写的Y和小写y;
表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);
表示日可以用小写d和小写j,大写S表示日期的后缀。
2,时:分:秒
默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。
代码如下 | 复制代码 |
echo date('g:i:s a'); echo date('h:i:s A'); |
小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。
当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。
代码如下 | 复制代码 |
echo date('G:i:s'); |
大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数
小结:
字母g表示小时不带前导,字母h表示小时带前导;
小写g、h表示12小时制,大写G、H表示24小时制。
3,闰年、星期、天
代码如下 | 复制代码 |
echo date('L'); |
今年是否闰年:0
代码如下 | 复制代码 |
echo date('l'); |
今天是:Tuesday
代码如下 | 复制代码 |
echo date('D'); |
今天是:Tue
大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;
小写l表示当天是星期几的英文全写(Tuesday);
而使用大写D表示星期几的3个字符缩写(Tue)。
代码如下 | 复制代码 |
echo date('w'); |
今天星期:2
代码如下 | 复制代码 |
echo date('W'); |
本周是全年中的第 06 周
小写w表示星期几,数字形式表示
大写W表示一年中的星期数
代码如下 | 复制代码 |
echo date('t'); |
本月是 28 天
代码如下 | 复制代码 |
echo date('z'); |
今天是今年的第 36 天
小写t表示当前月份又多少天
小写z表示今天是本年中第几天
4,其他
代码如下 | 复制代码 |
echo date('T'); UTC |
大写T表示服务器的时间区域设置
代码如下 | 复制代码 |
echo date('I'); 0 |
大写I表示判断当前是否为夏令时,为真返回1,否则为0
代码如下 | 复制代码 |
echo date('U'); 1170769424 |
大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。
代码如下 | 复制代码 |
echo date('c'); 2007-02-06T14:24:43+00:00 |
小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威
治标准时间(GMT)的偏差来表示。
代码如下 | 复制代码 |
echo date('r'); Tue, 06 Feb 2007 14:25:52 +0000 |
小写r表示RFC822日期。
添加时间戳
date() 函数的第二个参数规定了一个时间戳。此参数是可选的。如果您没有提供时间戳,当前的时间将被使用。
在我们的例子中,我们将使用 mktime() 函数为明天创建一个时间戳。
mktime() 函数可为指定的日期返回 Unix 时间戳。
语法
mktime(hour,minute,second,month,day,year,is_dst)如需获得某一天的时间戳,我们只要设置 mktime() 函数的
day 参数就可以了:
代码如下 | 复制代码 |
<?php |
以上代码的输出类似这样:
明天是 2006/07/12
还有一些更高级的日期时间函数介绍给大家
这类将介绍更多的函数来丰富我们的应用。
代码如下 | 复制代码 |
checkdate($month,$date,$year) |
如果应用的值构成一个有效日期,则该函数返回为真。例如,对于错误日期2005年2月31日,此函数返回为假。
在日期用于计算或保存在数据库中之前,可用此函数检查日期并使日期生效。
代码如下 | 复制代码 |
<?php getdate($ts) |
在没有自变量的情况下,该函数以结合数组的方式返回当前日期与时间。数组中的每个元素代表日期/时间值中的一个
特定组成部分。可向函数提交可选的时间标签自变量,以获得与时间标签对应的日期/时间值。
应用此函数来获得一系列离散的,容易分离的日期/时间值。
代码如下 | 复制代码 |
mktime($hour, $minute, $second, $month, $day, $year) |
此函数的作用与getdate()的作用相反:它由一系列的日期与时间值生成一个UNIX时间标签(GMT时间1970年1月1日到
现在消逝的秒数)。不用自变量时,它生成当前时间的UNIX时间标签。
用此函数获得即时时间的UNIX时间标签。这种时间标签通常用于许多数据库与程序语言中。
代码如下 | 复制代码 |
<?php date($format, $ts) |
此函数将UNIX时间标签格式化成一个可人为阅读的日期字符串。它是PHP日期/时间API中功能最为强大的函数,可用在
一系列的修正值中,将整数时间标签转变为所需的字符串格式。
为显示格式化时间或日期时,应用此函数。
代码如下 | 复制代码 |
<?php strtotime($str) |
此函数将可人为阅读的英文日期/时间字符串转换成UNIX时间标签。
应用此函数将非标准化的日期/时间字符串转换成标准、兼容的UNIX时间标签。
代码如下 | 复制代码 |
<?php strftime($format,$ts) |
如前面的setlocale()函数定义的那样,此函数将UNIX时间标签格式化成适用于当前环境的日期字符串。
应用此函数建立与当前环境兼容的日期字符串。
代码如下 | 复制代码 |
<?php // format month/day names echo strftime("Month: %B "); |
microtime()
如前面的setlocale()函数定义的那样,此函数将UNIX时间标签格式化成适用于当前环境的日期字符串。
应用此函数建立与当前环境兼容的日期字符串。
代码如下 | 复制代码 |
// run some code // get ending value // calculate time taken for code execution |
gmmktime($hour, $minute, $second, $month, $day, $year)
此函数由一系列用GMT时间表示的日期与时间值生成一个UNIX时间标签。不用自变量时,它生成一个当前GMT即时时间
的UNIX时间标签。
用此函数来获得GMT即时时间的UNIX时间标签。
代码如下 | 复制代码 |
|
gmdate($format, $ts)
此函数将UNIX时间标签格式化成可人为阅读的日期字符串。此日期字符串以GMT(非当地时间)表示。
用GMT表示时间标签时应用此函数。
代码如下 | 复制代码 |
|
date_default_timezone_set($tz)、date_default_timezone_get()
此函数此后所有的日期/时间函数调用设定并恢复默认的时区。
注:此函数仅在PHP 5.1+中有效。
此函数是一个方便的捷径,可为以后的时间操作设定时区。
代码如下 | 复制代码 |
|
相关文章
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07- Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
- PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
SQL Server中row_number函数的常见用法示例详解
这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08- 分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21- 下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要介绍了C#虚函数用法,实例分析了C#中虚函数的功能与基本使用技巧,需要的朋友可以参考下...2020-06-25