php如何获取当前页面地址 完整的url网址
作者:MJ 发布于:2019-12-26 11:17 Thursday 分类:PHP
//获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br />"; #mj.588cy.com //获取网页地址 echo $_SERVER['PHP_SELF']."<br />"; #/php/3299.php //获取网址参数 echo $_SERVER["QUERY_STRING"]."<br />"; #id=1 //获取用户代理 echo $_SERVER['HTTP_REFERER']."<br />";//获取完整的url echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];#http://mj.588cy.com/php/3299.php?id=1 //包含端口号的完整url echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];#http://mj.588cy.com:80/php/3299.php?id=1//只取路径 $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];echo dirname($url);#http://mj.588cy.com/php
javascript获取url: top.location.href 顶级窗口的地址 this.location.href 当前窗口的地址
标签: php
png图片生成缩略图——背景透明
作者:MJ 发布于:2016-11-26 15:35 Saturday 分类:PHP
php插入数据含有特殊符号的处理方法
作者:MJ 发布于:2016-11-22 6:01 Tuesday 分类:PHP
我们在向mysql写入数据时,如果数据中有特殊字符就会出现数据无法正常入库的情况,比如:
而这个时候一般就是使用addslashes()这个函数来转义数据中的特殊字符
PHP为了安全性,所以引入了个magic_quotes_gpc = On的功能,可以不需要做任何处理就能直接把单引号插入数据库中,那么对于Off时,则需要考虑单引号的问题了,而不是一味地信任运行环境。
当magic_quotes_gpc = On时,使用了addslashes()处理后的数据在数据库中将以\’形式保存,如果此时直接输出的话,就会发现比自己期待的内容多了个\,因此stripslashes()出场了,它能把\去掉(区别于str_replace(”\”, “”,$Str))。
当magic_quotes_gpc = Off时,使用了addslashes()处理后的数据在数据库中将以’形式保存,没有上面说的有\的问题,addslashes()起到插入数据不出错的作用,如果此时直接输出的话,数据正常。不需要再用stripslashes()。
addslashes()和stripslashes()正好是相反的,直接记忆:addslashes()加个\,stripslashes()去个\
那么什么时候用呢?
简单说:
当magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()和stripslashes()都没关系,但是如果添加数据时用了addslashes(),那么显示数据时必须要stripslashes()
当magic_quotes_gpc = Off时,系统不会处理单引号等问题,所以插入数据时必须要使用addslashes(),显示数据时则不需要使用stripslashes()。
既然有了分析,做程序时要怎么办呢?根据以上两种情况,可得:
不管magic_quotes_gpc是On还是Off,咱添加数据时都用addslashes(),当On时,必须使用stripslashes(),Off时则不能用stripslashes()。
php 如何监测数据是否成功插入到Mysql数据库
作者:MJ 发布于:2016-11-18 5:44 Friday 分类:PHP
php代码中监测数据是否成功插入到Mysql数据库,可以使用这两种方式。
第一种就是通过mysql_query()函数来判断:
第二种就是通过mysql_affected_rows()函数返回值是否大于0来判断:
PHP中如何获得刚插入数据的ID(或当前发布文章的ID)
作者:MJ 发布于:2016-11-5 8:49 Saturday 分类:PHP
PHP中如何获得刚插入数据的ID(或当前发布文章的ID)呢?其实用 mysql_insert_id() 函数就可以实现的。
定义和用法
mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID。
如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() 返回 0。
语法
mysql_insert_id(connection)
参数描述
connection 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。
说明
mysql_insert_id() 返回给定的 connection 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 connection ,则使用上一个打开的连接。
提示和注释
注释:如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。
例子
PHP创建一个文章tag标签的代码流程构想
作者:MJ 发布于:2016-11-5 6:33 Saturday 分类:PHP
第一步:在文章页面创建一个tag标签录入表单,多个标签使用用“,”分隔
第二步:在表单提交数据处理页面获得tag标签表单的值,并通过 explode() 函数将表单字符串的值转换成数组
第三步:通过 foreach() 函数把已经转换成数组的值,进行遍历循环插入到数据库中的文章标签数据表里
这样后面就可以通过文章ID调出文章的所有标签,也可以通过标签的名称调出有这个标签的所有文章。
mysql数据表一个字段里含有多个值,值之间用逗号隔开,取出这个字段中含有某个值的所有ID
作者:MJ 发布于:2016-11-5 4:57 Saturday 分类:PHP
标签: mysql
PHP图片上传程序(完整版)
作者:MJ 发布于:2016-9-9 6:12 Friday 分类:PHP
网上找到的PHP图片上传代码,感觉学的蛮全面的,先收藏着,等有空再慢慢学习。。标签: 图片上传
PHP中获取当前页面的完整URL
作者:MJ 发布于:2016-9-7 10:01 Wednesday 分类:PHP
javascript实现:top.location.href 顶级窗口的地址
this.location.href 当前窗口的地址
PHP实现:http://localhost/PHP/XX.php?id=5
//获取域名或主机地址
echo $_SERVER['HTTP_HOST']; #localhost
//获取网页地址
echo $_SERVER['PHP_SELF']; #/PHP/XX.php
//获取网址参数
echo $_SERVER["QUERY_STRING"]; #id=5
//获取用户代理
echo $_SERVER['HTTP_REFERER'];
//获取完整的url
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
#http://localhost/PHP/XX.php?id=5
//包含端口号的完整url
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
#http://localhost:80/PHP/XX.php?id=5
//只取路径
$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
echo dirname($url);
#http://localhost/PHP
标签: URL
微信网页开发如何判断用户是否关注某个公众号和是否分享当前页面
作者:MJ 发布于:2016-8-29 17:21 Monday 分类:PHP
在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
UnionID机制说明:
开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的 http://mp.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF(UnionID%E6%9C%BA%E5%88%B6)
php生成excel文件(csv) 完美解决乱码问题
作者:MJ 发布于:2016-8-28 13:37 Sunday 分类:PHP
php生成excel文件(csv)参考代码如下:标签: excel
php读取excel文件(.csv)
作者:MJ 发布于:2016-8-28 13:36 Sunday 分类:PHP
在百度统计和站长工具使用过程中会涉及到很多csv文件,比如我们下载百度站长工具的404统计数据,直接可以使用以下php脚本来读取csv文件然后更新提交。php读取excel文件(.csv)参考代码:
标签: excel
关于intval()函数中数值大于2147483647后溢出的问题
作者:MJ 发布于:2016-8-25 14:16 Thursday 分类:PHP
使用intval强制转换成数字的时候,如果数字大于2147483647会出现溢出,出现负数。刚刚在网上看到使用“floor(floatval($a))”这个方法来替代,收藏起来。标签: intval()
使用pathinfo(), parse_url(), basename() php函数解析URL
作者:MJ 发布于:2016-8-22 14:38 Monday 分类:PHP
PHP函数pathinfo()、parse_url()和basename(),这三个都是解析URL的函数,但是也存在一些区别,下面列举了一些实例,通过实例更容易理解这三个函数的使用方法和技巧,需要的朋友可以参考一下。1、利用pathinfo解析URL
2、利用parse_url()函数解析
3、使用basename()解析
标签: pathinfo() parse_url() basename()
PHP判断变量是否已配置的函数
作者:MJ 发布于:2016-8-21 5:31 Sunday 分类:PHP
PHP函数:empty() 和 isset() 都是判断变量是否已配置的函数,不过使用的时候还是存在一定的区别。empty() 函数用来测试变量是否已经配置。若变量已存在、非空字符串或者非零,则返回 false 值;反之返回 true。
isset() 函数用来测试变量是否已经配置。若变量已存在则返回 true 值。其它情形返回 false 值。
从上面两个函数的定义可以看出 empty() 和 isset() 的共同点是:都可以判定一个变量是否为空,都返回boolean类型,即true或false。而它们最明显区别的地方就是:返回的布尔值刚好是相反。
另外,他们之间最大的区别就是对于0的判断,若用empty判断会认为是空,用isset则认为不为空,举个例子:
empty() 判断一个变量是否为“空”,同时还会检测变量是否为空、为零。当一个变量值为0,empty() 认为这个变量同等于空,即相当于没有设置。而isset() 判断一个变量是否已经设置,就算变量值为空,为零也算已设置。
其他变量处理函数:
gettype:取得变量的类型。
intval:变量转成整数类型。
doubleval:变量转成倍浮点数类型。
empty:判断变量是否已配置。
is_array:判断变量类型是否为数组类型。
is_double:判断变量类型是否为倍浮点数类型。
is_float:判断变量类型是否为浮点数类型。
is_int:判断变量类型是否为整数类型。
is_integer:判断变量类型是否为长整数类型。
is_long:判断变量类型是否为长整数类型。
is_object:判断变量类型是否为类类型。
is_real:判断变量类型是否为实数类型。
is_string:判断变量类型是否为字符串类型。
isset:判断变量是否已配置。
settype:配置变量类型。
strval:将变量转成字符串类型。
unset:删除变量。
运行PHP程序时出现 Fatal error: Maximum execution time of 30 seconds exceeded in 提示如何解决
作者:MJ 发布于:2016-8-19 11:20 Friday 分类:PHP
由于近日做的程序中涉及到的循环比较多且处理的情况较复杂,所以在运行程序时出现执行超时提示如下: Fatal error: Maximum execution time of 30 seconds exceeded in D:\php\AppServ\www\sum3\test.php on line 3通过在网上搜索,找到以下解决方案给大家分享一下:
这个错误是说你的php 执行时间越过了配置文件中设置的最大执行时间30秒钟,这不是你的程序本身存在的问题,而 是系统的配置文件问题,如果你的网速快的话,可能再执行一次就不会出现这种错误了,不过 有了出现这种问题也可以进行一定的修改,方法有三种:
1.修改php的配置文件,找到php.ini文件,它一般应该放在你的C:\WINDOWS目录下,然后找到 max_execution_time = 30 ;//设置成你想要的值,单位是秒, 这一行,这就是设置的执行时间最大值为30秒,你可以对这个值进行一下修正,改为你的期望值。(也可以直接设置成:max_execution_time = 0)
2.使用ini_set()函数,不是所有人都能修改php.ini文件的,那么你可以使用这个函数来改变你的最大执行时间限制值,如: ini_set('max_execution_time', '100'); 则设置为100秒,你也可以设置为0,那么就是不限制执行的时间。
3.使用set_time_limit()函数,set_time_limit(20)则表示最大执行时间加上20秒,但如果在php执行安全模式时,set_time_limit()将不会有结果,除非你用了第一种方法。
以下是部分讲解:set_time_limit --- 限制最大的执行时间set_time_limit(PH3 , PHP4)set_time_limit --- 限制最大的执行时间语法 : void set_time_limit (int seconds)说明 : 设定一个程式所允许执行的秒数,如果到达限制的时间,程式将会传回错误。
它预设的限制时间是30秒,max_execution_time的值定义在结构档案中(在PHP3中叫做php3.ini,在PHP4则叫做php.ini),如果将秒数设为0,表示无时间上的限制。
当呼叫此函式时,set_time_limit( )会从零重新开始计算最长执行的时间,也就是说,如果最长执行时间为预设的30秒,而在呼叫此函式set_time_limit(20)之前已花了25秒来执行程式,则程式最长执行的时间将会是45秒。
注意 : 当PHP是执行在安全模式时,set_time_limit( )将不会有结果,除非是关闭安全模式或是修改结构档案中(在PHP3中叫做php3.ini,在PHP4则叫做php.ini)的时间限制。
php替换字符串函数strtr()和str_repalce()区别
作者:MJ 发布于:2016-8-17 11:16 Wednesday 分类:PHP
php中替换函数主要有strtr(),str_repalce()这两个函数,今天介绍下他们的区别和用法, 先来看看这个php字符串替换函数 strtr()的两种用法:strtr(string,from,to) 或者strtr(string,array) 首先针对strtr函数第一种方式:
我们看看下面的举例:
得到的结果是: I lOve yOu
这个结果提醒我们:
1.strtr它是区分大小写的
2.strtr的替换是很特殊的,你注意看后面那个yOu,中间的O被替换的,这显然不是我们的本意。
再举一个特殊例子,说明这个php的sttr函数的怪异
结果是: I Love you
什么也不会改变,所以strtr需要注意的是:
3.不能被替换为空,也就是末位那个参数不能是空字符串,当然空格是可以的。
再次举例strtr函数的另一种情况:
结果是: I lOvEs yOu
注意看第三个参数的A,在结果中并没有出现。
4.我不建议用strtr以少换多。
ok,既然这个strtr函数挺麻烦为什么还要用呢?
原因是,它的速度很快。据说,strtr 比 str_replace 快四倍。
5.能用strtr函数的时候一定要用。
那怎么用才舒服?
这就是它的第二种情况:
strtr(string,array)
6.strtr符合意愿的使用方法
7.小技巧:你想到替换什么你就往数组加什么
比如:
再次提醒那个Love 写成love 是行不通的哦。
字符串取代。
语法: string str_replace(string needle, string str, string haystack);
返回值: 字符串
函数种类: 资料处理
内容说明:
本函数将字符串 str 代入 haystack 字符串中,将所有的 needle 置换成 str。
下例将 %body% 以 black 取代
格式:
[@str_replace("要替换的旧内容", "要取代原内容的新字符", $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), array('新1','新2','新3'), $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), '新内容', $被替换内容的变量名)]
实例:
标签: strtr() str_repalce()
PHP单引号和双引号区别
作者:MJ 发布于:2016-8-13 17:11 Saturday 分类:PHP
在PHP中单引号和双引号并非是互通的,具体区别如下:” ” 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。
‘ ‘ 单引号里面的不进行解释,直接输出。
从字面意思上就可以看出,单引号比双引号要快了。
例如:
$abc=’my name is tome’;
echo $abc //结果是:my name is tom
echo ‘$abc’ //结果是:$abc
echo “$abc” //结果是:my name is tom
php 字符串截取函数
作者:MJ 发布于:2016-8-13 15:34 Saturday 分类:PHP
substr()是php自带的一个截取字符串的函数,只能处理英文,数字,却不能截取中文混排的,所以如果需要截取中文混排的字符串,可以参考第二个代码。
php取整函数ceil,floor,round,intval函数的区别
作者:MJ 发布于:2016-8-6 5:49 Saturday 分类:PHP
PHP取整函数有ceil,floor,round,intval,开发过程中,遇到数据处理取整的时候,你会用哪个呢,下面详细介绍一下:1、ceil — 进一法取整
说明
float ceil ( float $value )
返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
ceil() 例子
echo ceil(4.3); // 5
echo ceil(9.999); // 10
?>
2、floor — 舍去法取整
说明
float floor ( float $value ) 返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
floor() 例子
echo floor(4.3); // 4
echo floor(9.999); // 9
?>
3、round — 对浮点数进行四舍五入
说明
float round ( float $val [, int $precision ] )
返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。
round() 例子
echo round(3.4); // 3
echo round(3.5); // 4
echo round(3.6); // 4
echo round(3.6, 0); // 4
echo round(1.95583, 2); // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2); // 5.05
echo round(5.055, 2); // 5.06
?>
Note: PHP 默认不能正确处理类似 “12,300.2″ 的字符串。
Note: precision 参数是在 PHP 4 中被引入的。
4、intval — 获取变量的整数值
说明
int intval ( mixed $var [, int $base ] )
通过使用特定的进制转换(默认是十进制),返回变量 var 的 integer 数值。
var 可以是任何标量类型。intval() 不能用于 array 或 object。
intval() 例子
echo intval(4.3); // 4
echo intval(9.999); // 9
?>
Note:
除非 var 参数是字符串,否则 intval() 的 base 参数不会有效果。
个人认为floor函数与intval函数功能相同,所不同之处是一个返回的浮点数(float),而另一个是整数(integer),因为 float 值的范围通常比 integer 要大。不过就数值本身来说两者是相等的。