Category: Php / Pear / Mysql / Node.js

面向普通人的 PHP 加密

在这个日渐虚拟的互联网世界中,您必须小心保护自已的数据。本文将介绍编码和加密一些重要信息(比如密码、信用卡号、甚至整个消息)的基础知识。并通过使用 PHP 的内置功能,了解加密和解密信息的意义,并且将了解一些涉及密码和其他数据的实际示例。   了解当今现实世界与 20 年前的现实世界的不同。在 20 世纪 80 年代,加密是一种特工人员的行为 —— 是您在 Tom Clancy 的侦探小说中才可以读到的情节。如果某人想保持少量私有信息,那么他必须使用密码、密码短语或其他基本方法对数据进行加密。   而… Read More

PHP 判断数组是否为空的5大方法

本文介绍了PHP开发中遇到的数组问题,这里介绍了判断PHP数组为空的5种方法,有需要的朋友可以借鉴参考一下。 1. isset功能:判断变量是否被初始化 说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过 注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_exists高4倍左右 <?php $a = ''; $a['c'] = ''; if (!isset($a)) echo '$a 未被初始化' .… Read More

Mysql字符串截取函数SUBSTRING的用法说明

感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用。 函数: 1、从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2、从右开始截取字符串 right(str, length) 说明:right(被截取字段,截取长度) 例:select right(content,200)… Read More

PHP 四种基本排序算法的代码实现

这里介绍冒泡排序,插入排序,选择排序,快速排序四种基本算法,分析一下算法的思路。 前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。 array(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序 思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 function bubbleSort($arr) { $len = count($arr); // 该层循环控制 需要冒泡的轮数 for ($i=1; $i… Read More

微信红包随机生成算法(PHP版)

最近在研究发红包的功能,于是写了个红包的生成算法。   红包生成算法的需求 预先生成所有的红包还是一个请求随机生成一个红包 简单来说,就是把一个大整数m分解(直接以“分为单位,如1元即100)分解成n个小整数的过程,小整数的范围是[min, max]。 最简单的思路,先保底,每个小红包保证有min,然后每个请求都随机生成一个0到(max-min)范围的整数,再加上min就是红包的钱数。 这个算法虽然简单,但是有一个弊端:最后生成的红包可能都是min钱数的。也就是说可能最后的红包都是0.01元的。   另一种方式是预先生成所有红包,这样就比较容易控制了。我选择的是预先生成所有的红包。 理想的红包生成算法 理想的红包生成结果是平均值附近的红包比较多,大红包和小红包的数量比较少。 可以想像下,生成红包的数量的分布有点像正态分布。   那么如何实现这种平均线附近值比较多的要求呢? 就是要找到一种算法,可以提高平均值附近的概率。那么利用一种”膨胀“再”收缩“的方式来达到这种效果。 先平方,再生成平方范围内的随机数,再开方,那么概率就不再是平均的了。 具体算法:(设置的总钱数,总人数,最大值,最小值要合理)… Read More

MYSQL模式匹配:REGEXP和like用法

like要求整个数据都要匹配,而REGEXP只需要部分匹配即可。 、 也就是说,用Like,必须这个字段的所有内容满足条件,而REGEXP只需要有任何一个片段满足即可。   MySQL提供标准的SQL模式匹配(like),以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式(regexp)。 SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。     为了找出以“b”开头的名字: mysql> SELECT * FROM pet WHERE name… Read More

MySQL替换函数REPLACE替换字符串方法

在网站搬家、更换域名的时候,Drupal和Wordpress都是用的MySQL的数据库,很多配置信息是写在MySQL数据库里面的。我们需要将数据库里面的相关配置信息替换成新空间或域名的信息。这时我们就要用到MySQL的字符串替换函数Replace了。 MySQL Replace 替换函数语法: update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, "find this string", "replace found string with this… Read More

MySQL数据库的FIND_IN_SET函数使用方法详解 (字符串是否被包含)

MySQL 的 find_in_set函数使用方法: 很多时候我们在设计数据库时有这种情况,比如: 有个文章表里面有个type字段,他存储的是文章类型,有 1头条,2推荐,3热点,4图文 …..11,12,13等等 现在有篇文章他既是 头条,又是热点,还是图文, type中以 1,3,4的格式存储. 那们我们如何用sql查找所有type中有4图文标准的文章呢, 这就要我们的find_in_set出马的时候到了. 先看mysql手册中find_in_set函数的语法: FIND_IN_SET(str,strlist) 假如字符串str 在由N 子链组成的字符串列表strlist… Read More

PHP的password_hash()使用实例

一、前言 PHP5.5 (PHP 5 >= 5.5.0) 提供了许多新特性及Api函数,其中之一就是Password Hashing API(创建和校验哈希密码)。 它包含4个函数:password_get_info()、password_hash()、password_needs_rehash()、password_verify()。 在PHP5.5之前,我们对于密码的加密可能更多的是采用md5或sha1之类的加密方式(没人像CSDN那样存明文吧。。),如: echo md5("123456"); //输出: e10adc3949ba59abbe56e057f20f883e 但是简单的md5加密很容易通过字典的方式进行破解,随便找个md5解密的网站就能获取原始密码。   二、Password… Read More