PHP中COOKIE及时生效,不用刷新就可以使用

 更新时间:2016年11月25日 14:56  点击:1900
COOKIE设置之后一般需要刷新然后页面再可以调用了,但如果需要不刷新页面我们如何来实现呢,下面来看一个简单的例子。


今天遇到了php的cookie必须刷新再生效的问题,可用一下方法解决:

//PHP COOKIE设置函数立即生效,支持数组
function cookie($var, $value = '', $time = 0, $path = '', $domain = '', $s = false)
{
    $_COOKIE[$var] = $value;
    if (is_array($value)) {
        foreach ($value as $k => $v) {
            setcookie($var . '[' . $k . ']', $v, $time, $path, $domain, $s);
        }
    } else {
        setcookie($var, $value, $time, $path, $domain, $s);
    }
}

这样就不用刷新,直接就可以获得cookie的值了,cookie参数详情请看php手册

提示:
其实这段代码中对于cookie及时更新起作用的就是这两句:

$_COOKIE[$var] = $value;
setcookie($var, $value, $time, $path, $domain, $s);

也就是对cookie一次进行了两次赋值

file_put_contents写入文件在我看到的phper中很少用到了,但小编以前做flash接受数据时就用到了file_put_contents函数了,下面我们来看看file_put_contents写入文件的优点

官方介绍

file_put_contents() 函数把一个字符串写入文件中。

与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

写入方法的比较

先来看看使用 fwrite 是如何写入文件的

$filename   = 'HelloWorld.txt';
$content    = 'Hello World!';
$fh         = fopen($filename, "w");
echo fwrite($fh, $content);
fclose($fh);

再看看使用 file_put_contents 是如何写入文件的

$filename   = 'HelloWorld.txt';
$content    = 'Hello World!';
file_put_contents($filename, $content);

以上我们可以看出,file_put_contents 一行就代替了 fwrite 三行代码,

可见其优点: 简洁、易维护,也不会出现,因 fclose() 忘写的不严密行为。

方法进阶

追加写入

file_put_contents 写入文件时,默认是从头开始写入,如果需要追加内容呢?

在 file_put_contens 方法里,有个参数 FILE_APPEND,这是追加写入文件的声明。

file_put_contents(HelloWorld.txt, 'Hello World!', FILE_APPEND);

锁定文件

在写入文件时,为避免与其它人同时操作,通常会锁定此文件,这就用到了第二个参数: LOCK_EX

file_put_contents(HelloWorld.txt, 'Hello World!', FILE_APPEND|LOCK_EX);

此外,为了确保正确写入,通常会先判断该文件是否可写

if (is_writable('HelloWorld.txt')) {
    file_put_contents(HelloWorld.txt, 'Hello World!', FILE_APPEND|LOCK_EX);
}

数组去重的方法有很多种有数组有遍历了,我们文章下面会给各位推荐各种关于数组去重的方法 ,希望文章能够帮助到各位朋友。

利用php中的array_flip()函数将一组字符串去重,再用sort()函数进行排序,来实现一些实际的应用效果。

 

源码如下:

<?php
 $strArr = array(
  'www.111cn.net',
  'xiao',
  'rui',
  'xiao',
  'dai',
  'www.111cn.net',
  'hello,friend'
 );
$strArr = array_flip(array_flip($strArr));  //
反转(array_flip()函数:将数组中的键值和值进行反转,如果出现同一值,则最后一个键名将作为它的值,如果原数组中的值的数据类型不是整数或者字符串,函数将会报错。)
 sort($strArr); //排序
 print_r($strArr);
?>

这个例子其实很简单就是数组去重了,在网上有很多的方法 这里只整理了一个希望对各位有用。

星号代替指定数字这个通常用于手机在前面页面显示出来时要隐藏指定几位数字了,具体的方法 我给各位整理了一些希望对大家有帮助。


通过php用三种简单的方法实现手机号中间四位(n位)用星号显示:

$mobile = '13912345678';
//1.字符串截取法
$newMobile1 = substr($mobile, 0, 5).'****'.substr($mobile, 9);
echo $newMobile1.'<br/>';

//2.替换字符串的子串
$newMobile2 = substr_replace($mobile, '****', 5, 4);
echo $newMobile2.'<br/>';

//3.用正则
$newMobile3 = preg_replace('/(\d{5})\d{4}(\d{2})/', '$1****$2', $mobile);
echo $newMobile3;


//方法 四正则

function hidtel($phone){

$IsWhat = preg_match('/(0[0-9]{2,3}[-]?[2-9][0-9]{6,7}[-]?[0-9]?)/i',$phone); //固定电话

if($IsWhat == 1){

return preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);

}else{

return preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);

}

}

Method 2:

$num = "13966778888"

$str = substr_replace($num,'****',3,4);

示例:

代码如下:

$phonenum = "13966778888";

echo hidtel($phonenum);

最后输出:139****8888

链式操作对于各位朋友来说很多不了解了,下面一聚教程小编来为各位介绍一篇关于PHP实现的链式操作代码。

这篇文章主要介绍了PHP实现的链式操作实例。写程序的人都喜欢偷懒,希望少打几行代码,并且让代码看起来很酷。

就好比很多小伙伴在写if…else…的时候会直接使用三元运算符一样。

而用过JS的人应该都见识过js中的链式方法。如 somevars.func().func2()…funcN();这样的写法使得代码更简练,并且作用关系一目了然。

那么在php中可以这么做么,显然也是可以的,但是php与js的差别是,在js中变量本身具有对象的性质,但是php的变量却不是。

现在在很多的PHP的WEB框架中经常会看见链式操作,相信很多同学也使用过,本文将继续以ThinkPHP中的核心类作为实例,给大家讲解一下,需要的朋友可以参考下。

在ThinkPHP核心文件Model.class.php中可以看到这么几段代码(忽略逻辑部分):

class Model {
    /**
    * 查询SQL组装 join
    */
    public function join($join) {
        /*
        * code
        */
        return $this;
    }
    /**
    * 指定查询条件 支持安全过滤
    */
    public function where($where){
        /*
        * code
        */
        return $this;
    }
    /**
    * 指定结果顺序
    */
    public function order($order){
        /*
        * code
        */
        return $this;
    }
    /**
    * 指定查询数量
    */
    public function limit($limit){
        /*
        * code
        */
        return $this;
    }
    /**
      * 查询数据集
     */
    public function select() {
         /*
         * code
         */
         return $resultSet;
     }
}
<?php
require ('Model.class.php');
$model = new Model();
/*
 * 链式操作写法
*/
$model->join('left join user on oo=xx')->where('id=1')->order('id asc')->limit(10)->select();
/*
 * 传统写法
*/
$model->join('left join user on oo=xx');
$model->where('id=1');
$model->order('id asc');
$model->limit(10);
$model->select();
?>

在使用了链式写法后,代码会更简洁,更酷,也希望小伙伴能更好的去运用它。

[!--infotagslink--]

相关文章

  • phpems SQL注入(cookies)分析研究

    PHPEMS(PHP Exam Management System)在线模拟考试系统基于PHP+Mysql开发,主要用于搭建模拟考试平台,支持多种题型和展现方式,是国内首款支持题冒题和自动评分与教师评分相...2016-11-25
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • JS使用cookie实现DIV提示框只显示一次的方法

    本文实例讲述了JS使用cookie实现DIV提示框只显示一次的方法。分享给大家供大家参考,具体如下:这里运用JavaScript的cookie技术,控制网页上的提示DIV只显示一次,也就是当用户是第一次打开网页的时候才显示,第二次自动隐藏起...2015-11-08
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • C#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
  • jQuery+PHP发布的内容进行无刷新分页(Fckeditor)

    这篇文章将使用jQuery,并结合PHP,将Fckeditor发布的内容进行分页,并且实现无刷新切换页面。 本文假设你是WEB开发人员,掌握了jQuery和PHP相关知识,并且熟知Fckeditor的配置和使用。...2015-10-23
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • 解决vue刷新页面以后丢失store的数据问题

    这篇文章主要介绍了解决vue刷新页面以后丢失store的数据问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
  • 使用jquery修改表单的提交地址基本思路

    基本思路: 通过使用jquery选择器得到对应表单的jquery对象,然后使用attr方法修改对应的action 示例程序一: 默认情况下,该表单会提交到page_one.html 点击button之后,表单的提交地址就会修改为page_two.html 复制...2014-06-07
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25