PHP检测注册用户的用户名和密码函数

 更新时间:2016年11月25日 15:46  点击:1891
本文章来给各位同学介绍我一个常用的php用户注册时的一些用户名和密码验证函数,还有:邮件格式、手机号码格式、 QQ号码的格式、电话号码格式包括区号、检测参数是否为中文等。
 代码如下 复制代码
Class Check{   
         /**   
         * IsUsername函数:检测是否符合用户名格式   
         * $Argv是要检测的用户名参数   
        * $RegExp是要进行检测的正则语句   
         * 返回值:符合用户名格式返回用户名,不是返回false   
         */
        function IsUsername($Argv){   
                $RegExp='/^[a-zA-Z0-9_]{3,16}$/'; //由大小写字母跟数字组成并且长度在3-16字符直接   
                return preg_match($RegExp,$Argv)?$Argv:false;   
        }   
             
         /**   
         * IsMail函数:检测是否为正确的邮件格式   
         * 返回值:是正确的邮件格式返回邮件,不是返回false   
         */
        function IsMail($Argv){   
                $RegExp='/^[a-z0-9][a-z.0-9-_] @[a-z0-9_-] (?:.[a-z]{0,3}.[a-z]{0,2}|.[a-z]{0,3}|.[a-z]{0,2})$/i';   
                return preg_match($RegExp,$Argv)?$Argv:false;   
        }   
             
         /**   
         * IsSmae函数:检测参数的值是否相同   
        * 返回值:相同返回true,不相同返回false   
         */
         function IsSame($ArgvOne,$ArgvTwo,$Force=false){   
                 return $Force?$ArgvOne===$ArgvTwo:$ArgvOne==$ArgvTwo;   
         }   
             
         /**   
        * IsQQ函数:检测参数的值是否符合QQ号码的格式   
        * 返回值:是正确的QQ号码返回QQ号码,不是返回false   
         */
         function IsQQ($Argv){   
                $RegExp='/^[1-9][0-9]{5,11}$/';   
                return preg_match($RegExp,$Argv)?$Argv:false;   
        }   
             
          /**   
         * IsMobile函数:检测参数的值是否为正确的中国手机号码格式   
           * 返回值:是正确的手机号码返回手机号码,不是返回false   
        */
        function IsMobile($Argv){   
                $RegExp='/^(?:13|15|18)[0-9]{9}$/';   
                return preg_match($RegExp,$Argv)?$Argv:false;   
         }   
             
         /**   
         * IsTel函数:检测参数的值是否为正取的中国电话号码格式包括区号   
         * 返回值:是正确的电话号码返回电话号码,不是返回false   
        */
         function IsTel($Argv){   
                 $RegExp='/[0-9]{3,4}-[0-9]{7,8}$/';   
                 return preg_match($RegExp,$Argv)?$Argv:false;   
         }   
             
        /**   
         * IsNickname函数:检测参数的值是否为正确的昵称格式(Beta)   
         * 返回值:是正确的昵称格式返回昵称格式,不是返回false   
         */
         function IsNickname($Argv){   
                 $RegExp='/^s*$|^c:\con\con$|[%,*"st<>&'()]|xA1xA1|xACxA3|^Guest|^xD3xCExBFxCD|xB9x43xABxC8/is'; //Copy From DZ   
                 return preg_match($RegExp,$Argv)?$Argv:false;   
         }   
             
         /**   
         * IsChinese函数:检测参数是否为中文   
         * 返回值:是返回参数,不是返回false   
         */
        function IsChinese($Argv,$Encoding='utf8'){   
                 $RegExp = $Encoding=='utf8'?'/^[x{4e00}-x{9fa5}] $/u':'/^([x80-xFF][x80-xFF]) $/';   
                 Return preg_match($RegExp,$Argv)?$Argv:False;   
        }   
}
此文主要记录在虚拟机xdebug环境下如何解决宿主机zendstudio与xdebug通信的问题,从而根本坚决在调试界面出现57%进度条的问题:


问题现象:zend studio xdebug 57% waiting for xdebug session

作者本人的开发环境通常是windows宿主机器+vmare Linux虚拟机,通过linux的samba功能将虚拟机下的目录共享给windows做磁盘映射,这样的开发环境可以快速的在windows下实现完整的Linux代码调试环境。

今日在虚拟机下给php装xdebug来调试代码时,按照网上的步骤对xdebug做了配置,因为我的虚拟机环境的网络是走NAT的。

linux虚拟机的网段是192.168.2.0/255.255.255.0 ,网关为192.168.2.2.

windows宿主机器的网段是192.168.1.0/255.255.255.0

在windows下浏览器访问虚拟机下的http服务时都是通过vmare 的nat虚拟网卡转发过去,此网卡绑定的p为192.168.2.1。那么问题就来了,虚拟机下获取到的来路请求ip都是192.168.2.1,获取到xdebug的调试请求后转发信息给zend studio时网络却受阻了。我在设置的xdebug端口号是19000.如下如所示:

 

可以从图中看到我们的请求在发送给192.168.2.1 的19000端口时,但是这是卡住的原因是syn_sent的过程网络不通,导致php无法连接到windows宿主机下的zend studio。只要问题定位到就好办了,最快的解决方法就是开启iptables的端口转发,将发送到192.168.2.1 端口19000的数据全部转发给宿主机IP:192.168.1.105。

我们用root配置如下iptabless规则:

iptables -t nat -A OUTPUT -p tcp -d 192.168.2.1 --dport 19000 -j DNAT --to 192.168.1.105:19000

这样我们的zend studio就可以轻松收到php发来的xdebug调试数据了。

用NAT网络模式的虚拟环境比较蛋疼,如果换成桥接模式让宿主机和虚拟机同一个网段,那么问题迎刃而解。

本文章来给大家介绍我常用的一些邮箱email tel等格式的正则表达式,各位有需要了解学习的朋友不防进入参考。

1.email验证函数

 代码如下 复制代码

function isValidEmail($email) { 

    $email = strtolower($email);
    if (!preg_match(“/[^@]{1,64}@[^@]{1,255}/”, $email)) { 
        return false; 
    } 
    $email_array = explode(“@”, $email); 
    $local_array = explode(“.”, $email_array[0]); 
    $length = sizeof($local_array); 
    for ($i = 0; $i < $length; $i++) { 
        if (!preg_match(“@^[a-z0-9_~-][a-z0-9_~.-]{0,63}$@”, $local_array[$i])) { 
            return false; 
        } 
    } 
    unset($length); 
    if (!preg_match(“@^[?[0-9.]+]?$@”, $email_array[1])) { 

        $domain_array = explode(“.”, $email_array[1]); 

        $length = sizeof($domain_array); 
        if ($length < 2) { 
            return false; 
        } 
        for ($i = 0; $i < $length; $i++) { 
            if (!preg_match(“/^(([a-z0-9][a-z0-9-]{0,61}[a-z0-9])|([a-z0-9]+))$/”, $domain_array[$i])) { 
                return false; 
            } 
        } 
    unset($length); 
    } 
    return true; 
}


2.验证移动电话是否符合规范

 代码如下 复制代码

function isValidCellPhone($cellPhone) { 

    $flag = FALSE; 

    if (preg_match(‘@^1[3458][0-9]{9}$@’, $cellPhone)) { 

        $flag = TRUE; 

    } 

    return $flag; 

3.验证电话是否符合规范 

 代码如下 复制代码

function isValidPhone($phone) { 

    if (preg_match(‘@^1[3458][0-9]{9}$@’, $phone)) { 

        return true; 

    } 

    if (preg_match(‘@((?:(?:(?:00860?|0)(?:10|2d|[3-9]dd))-?)?([2-8]d{6,7}))@’, $phone)){ 

        return true; 

    } 

    if (preg_match(‘@^([48]00(?:d{7}|-d{7}|-d{3}-d{4}|-d{4}-d{3}|d-d{3}-d{3}))$@’, $phone)) { 

        return true; 

    } 

    return false; 

}

在php中session和cookie其实是没什么关系了,但是区别还是很大的,下面我来给各位同学介绍session和cookie的区别和联系.


首先谈谈cookie吧,百度百科是这样定义的:是网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)。

    php中生成一个cookie的方法很简单:setcookie(name, value, expire, path, domain);

    name:cookie中定义的名字。

    value:cookie中对name所保存的值。这个值保存在了用户的终端;不要保存敏感信息(个人重要信息,金钱)。

    expire:cookie中名值对保存的过期时间,这个值是以时间戳的形式保存下来的。

    path:cookie值保存的有效路径,如果设置成 ‘/’ 那么对整个项目都有效,如果设置成 ‘/foo/’ 那么cookie的有效路径在foo以及其下属文件,如果没有做任何设置那么他的有效路径是当前文件夹。

    domian:cookie可用的域名范围。

<?php
setcookie('site_name', 'IT博客');//设置一个cookie:site_name他的值是IT博客,这样就建立了一个会话,不过这个cookie保存在了内存中随着浏览器的关闭而销毁。
setcookie('site_name', 'IT博客', time() + 86400);//设置cookie并将他的过期时间设置为一天后,这样的会话会将cookie的值保存到硬盘中,关闭浏览器,一天内cookie在浏览器打开的时候还是有效的。
?>     写到这里想起了以前同事在项目中遇到的问题:比如我有一个功能用户浏览的前10个页面我要在页面中显示用于提示用户浏览过的页面,这里面就用到了cookie,用户浏览的页面大于10个之后会做分割只取前10个,array_slice可以帮到你,array_slice切割完之后cookie中保存的页面信息是不是减少了呢?可能会有这个疑问。带着这个疑问咱们说说cookie的销毁方式吧。

    cookie销毁方式一:将cookie值设置为空。

<?php
setcookie('site_name', '');
?> cookie销毁方式二:将cookie值设置为过期时间。

<?php
setcookie('site_name', 'IT博客', time() - 86400);
?>     看到这里你说array_slice会不会切割cookie中的值,使cookie的值减少呢?

    下面说一说session:session是一种服务器的机制,服务器使用一种类似于散列表的结构来保存信息,每一个网站的访客都会被赋予一个唯一的标识符进行识别(回话ID)。他的存放形式有两种:1是url传递,2是cookie保存。


    php中常用的session的函数中最重要的就是session_start(),没有开启session的话一切都免谈。


    php.ini中也有一些session的设置比如:


    session.save_handler = files —— session的保存形式以文件形式保存。

    session.save_path = “N;/path” ——— session文件的保存路径,这个路径需要自己创建且有写入的权限。其中N;/path中的N必须是一个整数这样可以使session文件保存在不同的目录中,这对于服务器处理大量的session文件是有帮助的。

    session和cookie的区别:


    1.session保存在服务器端,通过session.save_path可以设置session文件在服务器的位置。

    2.cookie保存在客户端,分为临时会话(关闭浏览器则销毁,保存在内存)、持久性会话(在有效期内一直可以调用,保存在硬盘上)。


    3.session相对cookie要安全一些,不过大量的session也会导致服务器的压力。


    session和cookie的联系:


    session的有效执行有两种方式:一是与cookie进行交互,二是通过url传递。


 ps:sessionid是一个很有用有时候也会导致问题的一个标识,有一次通过ajax发送50多个请求通过socket请求数据,在php端socket返回数据有时候会比较慢,虽然ajax是异步的请求但是在php端就不一样了,先来的会把后来的请求堵在后面,其中的标识符就是sessionid,由于这个sessionid导致了php端的顺序处理增加了用户的等待时间,致使用户体验较差。其中的解决方案是用session_write_close()断开sessionid的链接。

可能有很多朋友都会碰到自己在使用一些工具时提示php_curl扩展模块无法加载,在phpmyadmin中碰到最多了,下面我来介绍一些解决办法。

apache 中php_curl不能加载

提示错误Fatal error:Call to undefined function curl_init()。我估计应该有人也有类似问题,赶紧百度一下,果然好多人遇到这个问题

1、将PHP安装目录中找libeay32.dll,ssleay32.dll,php_curl.dll,php5ts.dll四个DLL文件,有的在ext目录,找到后将他们复制到system32下,如果找不到请下载对应版本的PHP复制过去;

2、检查php.exe, php5ts.dll和php_curl.dll的版本是否相同,把鼠标放到什么就会显示版本信息;

3、打开你的php.ini文件,不知道在哪个位置的可以先phpinfo查看第六行显示路径,不要搞混了,打开做如下修改:将php_curl前的注释符(也就是分号)去掉。有必要的话将cgi.force_redirect前的注释符也去掉,并把值1修改为0;

4、重启IIS或apache后运行phpinfo检查curl是否成功加载,Ctrl+F查找curl,如果没有匹配,那肯定是没有加载成功,如果有匹配,恭喜你已经成功加载了。

具体解决办法

在php.ini中找到有extension=php_curl.dll, 去掉前面的注释.
设置extension_dir=c:phpext, 刷新PHP页面时报错, 说找不到模块php_curl.dll.
拷贝php_curl.dll 到windowssystem32,还是同样的错.
在网上找了一下,需要将:

libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll

都拷贝到system32目录下,重启apache即可.

 


附上iis php_curl不能使用


问题:

PHP 在 IIS6 或 IIS7 中无法加载 php_curl.dll 动态链接库。
 
解决方法:

在PHP手册中有相关说明:php_curl.dll;CURL,客户端 URL 库函数库;需要:libeay32.dll,ssleay32.dll(已附带)
所以只要将 libeay32.dll,ssleay32.dll 这两个库复制到 %WINDOWS% 目录下即可。

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...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函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • PHP函数strip_tags的一个bug浅析

    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加密解密函数详解

    分享一个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并调用其函数的实现方法

    下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#虚函数用法实例分析

    这篇文章主要介绍了C#虚函数用法,实例分析了C#中虚函数的功能与基本使用技巧,需要的朋友可以参考下...2020-06-25
  • PHP编码转换函数mb_convert_encoding与iconv用法

    文章来实现一个PHP编码转换函数mb_convert_encoding与iconv用法,希望例子能帮助到各位。 将一个短信接口代码从apache迁移到nginx+php-fpm后,发现无法发出短信了,查...2016-11-25