PHP日常实用小Tips

 更新时间:2016年11月25日 17:36  点击:1603
1.简易判断ip地址合法性
2.email的正则判断
3.检测ip地址和mask是否合法的例子
4.关于表单刷新
5.关于表单刷新
1.简易判断ip地址合法性
if(!strcmp(long2ip(sprintf("%u",ip2long($ip))),$ip)) echo "is ipn";
----
2.email的正则判断
eregi("^[_.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z_-]+.)+[a-zA-Z]$", $email);
----
3.检测ip地址和mask是否合法的例子
$ip = '192.168.0.84';
$mask = '255.255.255.0';
$network = '192.168.0';
$ip = ip2long($ip);
$mask = ip2long($mask);
$network = ip2long($network);
if( ($ip & $mask) == $network) echo "valid ip and maskn";
?>
----
4.今天解决了一个巨郁闷的问题
ipb的添加用户页面toadduser.php似乎会重复提交,导致在添加新用户的时候总是报该用户已经存在...已经郁闷了我3天了,终于搞定,大快人心!
----
5.关于表单刷新
问:为什么我在点击浏览器的后退按钮后,所有字段的信息都被清空了?
答:这是由于你在你的表单提交页面中使用了 session_start 函数。该函数会强制当前页面不被缓存。解决办法为,在你的 Session_start 函数后加入 header("Cache-control: private"); 注意在本行之前你的PHP程序不能有任何输出。
补充:还有基于session的解决方法,在session_start前加上
session_cache_limiter('nocache');// 清空表单
session_cache_limiter('private'); //不清空表单,只在session生效期间
session_cache_limiter('public'); //不清空表单,如同没使用session一般
可以在session_start();前加上 session_cache_limiter("private,max-age=10800");
摘自phpe.net
----
6.快速搞定文件下载头部输出
header("Content-type: application/x-download");
header("Content-Disposition: attachment; filename=$file_download_name;");
header("Accept-Ranges: bytes");
header("Content-Length: $download_size");
echo 'xxx'
.......2004-08-19 11:50:30
----
7.用header输出ftp下载方式,并且支持断点续传
一个例子:
header('Pragma: public');
header('Cache-Control: private');
header('Cache-Control: no-cache, must-revalidate');
header('Accept-Ranges: bytes');
服务器
<?php
// Server
// 设置错误处理
error_reporting (E_ALL);
// 设置运行时间
set_time_limit (0);
// 起用缓冲
ob_implicit_flush ();
$ip = "127.0.0.1";        // IP地址
$port = 1000;        // 端口号
$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);    // 创建一个SOCKET
if ($socket)
    echo "socket_create() successed! ";
else
    echo "socket_create() failed:".socket_strerror ($socket)." ";
$bind = socket_bind ($socket, $ip, $port);           // 绑定一个SOCKET
if ($bind)
    echo "socket_bind() successed! ";
else
    echo "socket_bind() failed:".socket_strerror ($bind)." ";
$listen = socket_listen ($socket);            // 间听SOCKET
if ($listen)
    echo "socket_listen() successed! ";
else
    echo "socket_listen() failed:".socket_strerror ($listen)." ";
while (true)
{
    $msg = socket_accept ($socket);            // 接受一个SOCKET
    if (!$msg)
    {
        echo "socket_accept() failed:".socket_strerror ($msg)." ";
        break;
    }
    $welcome = "Welcome to PHP Server! ";
    socket_write ($msg, $welcome, strlen ($welcome));
    while (true)
61、增加了create_function(),用于快速建立函数。(Zeev, Zend Engine)
62、增加了数组和数组、对象和对象的比较功能。“==”符号提供无序的比较功能,“===”提供有序的比较。(Zeev, Zend Engine)
63、Allow all functions that receive user-defined function callbacks to accept an array that contains an object and a method name, in place of a function name, e.g. usort($array, array($obj, "ObjSort"))
63、允许所有函数支持用户定义的function callback(不知道怎么翻)用来接受一个包括一个对象和一个方法名的数组。(Zeev, Zend Engine)
64、增加了set_error_handler()函数,允许用户自己编写错误处理函数以替代内建的错误处理功能。(Zeev, Zend Engine)
65、把user_error()改名为trigger_error();但user_error()继续保留有效。(Zeev, Zend Engine)
66、修正了全局/静态的声明为需要在其末尾加上分号“;”。(Andi, Zend Engine)
67、清除了PCRE(这是什么东西?)扩展。(Andrei)
68、给in_array()函数增加了第三个参数。如果此参数为 true ,in_array()将进行严格的比较以替代默认的比较方法。(Andrei)
69、增加了pg_trace()和pg_untrace()函数。(Dominic J. Eidson & Zeev)
70、ignore_user_abort=Off现在是默认值。(Thies)
71、增加了能递归合并相同键值的函数array_merge_recursive()。(Andrei)
72、修正了OCIParse在解析非法SQL语句时崩溃的问题。(Thies)
73、修正了在非永久性连接时,mysql_connect()会忽略socket参数的BUG。(Zeev)
74、在php.ini中增加disable_functions的选项,使管理员能禁用某些可能引起安全问题的函数。(Zeev)
75、修正了WIN32中session的问题。在php.ini里,save_path选项,现在需要用分号“;”代替原来的“:”来限定使用的目录层数。(Andi)
76、在无法找到PHP文件时,APACHE将给出“Declined”的信息。(Rasmus)
77、修正了十进制数字在国际化环境下的问题。数字应为标准的美国格式(为什么??!!)。(Andi, Zend Engine)
78、给函数preg_quote()增加了第二个参数。这个参数允许引用一个通常是常规表达式分隔符的字符。(Andrei)
79、未提交的OCI8的事务将在连接关闭前取消。(Thies)
80、ignore_user_abort()及一些相关函数能在CGI模式下工作正常。(Patch by daniel.braun@ercom.fr)
在查询中加上convert转换。。。
convert(varchar(10),字段名,转换格式)
比如:
select user_id,convert(varchar(10),date,11) as date from tb_user
转换格式:
0或100 month dd yyyy hh:miAMPM
1    mm/dd/yy
2 yy.mm.dd
3 dd/mm/yy
4 dd.mm.yy
5 dd-mm-yy
6 dd month yy
7 month dd,yy
8 hh:mi:ss
9或109 month dd yyyy hh:mi:ss:mmmAMPM
10 mm-dd-yy
11 yy/mm/dd
12 yymmdd
101 mm/dd/yyyy
102 yyyy.mm.dd
103 dd/mm/yyyy
104 dd.mm.yyyy
105 dd-mm-yyyy
106 dd month yyyy
107 month dd,yyyy
108 hh:mi:ss
110 mm-dd-yyyy
111 yyyy/mm/dd
112 yyyymmdd

<?php
/**
    拼音码表的生成:
        启动输入法生成器在逆转换选项卡中装入window的拼音输入法并将其保存为文
    本文件(winpy.txt)备用。
    
    下面的代码将拼音码表文件(文本)装入到数组$pymb中,结构为:(拼音,(汉字...))
    码表转换时间较长,应转换后另行保存
*/
$filename = "pymb.txt";
if(file_exists($filename)) {
    $fp = fopen($filename,"r");
    $pymb = unserialize(fread($fp,filesize($filename)));
    fclose($fp);
}else {
    $filename = "winpy.txt";
    $fp = fopen($filename,"r");
    $old = "";
    $ar = array();
    $pymb = array();
    while(! feof($fp)) {
    $buffer = fgets($fp,128);
    sscanf($buffer,"%2s%s",$ch,$py);
    if($ch >= "啊" && ord($py) < 128) {
        $pymb[$ch] = $py;
    }
    }
    fclose($fp);
    $fp = fopen("pymb.txt","w");
    fwrite($fp,serialize($pymb)." ");
    fclose($fp);
}
?>
    应用例,给文字加上拼音<br>
<?
/**
    应用例,给文字加上拼音。为简化起见,假定全为中文
*/
function get_py($text) {
    global $pymb;
    $i = 0;
    $n = strlen($text);
    $ar = array();
[!--infotagslink--]

相关文章

  • PS滤镜里为什么没有素描?PS CS6素描滤镜在哪?

    我们在作图的时候需要用到“素描”滤镜,但是点开滤镜选项就是找不到。该怎么快速找到“素描”滤镜呢?请往下看。 1、点开滤镜选项时,发现没有素描这一项。2、别急,我...2017-01-22
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PS怎么排除重叠图形

    PS排除重叠形状是什么意思?很多朋友都不是很清楚,其实方法很简单的,下面小编就为大家介绍介绍一下,不会的朋友可以参考本文,来看看吧。 步骤:1、在PS中,选择“矩形工具...2016-12-31
  • js实现跨域的4种实用方法原理分析

    什么是js跨域呐?js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。要...2015-10-30
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • js实现跨域的4种实用方法原理分析

    什么是js跨域呐?js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。要...2015-10-30
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • Element Steps步骤条的使用方法

    这篇文章主要介绍了Element Steps步骤条的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-27
  • 详解nginx同一端口监听多个域名和同时监听http与https

    这篇文章主要介绍了详解nginx同一端口监听多个域名和同时监听http与https的相关资料,需要的朋友可以参考下...2017-07-06
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • 解决vue props传Array/Object类型值,子组件报错的情况

    这篇文章主要介绍了解决vue props传Array/Object类型值,子组件报错的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • 如何用PS将百度熊抱枕做成大头枕?

    我们知道百度熊抱枕很大,只想要百度熊的大头,该怎么办呢?下面我们就来看看详细的教程。 1、首先打开photoshopCS6软件,新建一个“1600*1600”的白色背景图,并从右上角...2016-12-31
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • 浅谈vue-props的default写不写有什么区别

    这篇文章主要介绍了浅谈vue-props的default写不写有什么区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-09
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29