php禁止浏览器使用缓存页面
在PHP中可以轻松的使用下面的语句实现禁止页面缓存,但比较难记特整理下,方便大家使用。
php代码
代码如下 | 复制代码 |
<? php // 设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。 // 设置此页面的最后更新日期(用格林威治时间表示)为当天,可以强制浏览器获取最新资料 ?> |
这对于某些页面来说是很有用的,例如:单信息以及订单下的商品,并且清空购物车对应商品数据。
肯定不希望用户到了最后一个页面,都已经生成订单了,再点浏览器的返回按钮回到前一个页面。
那么在订单地址页面加入:
代码如下 | 复制代码 |
header("Cache-Control:no-cache,must-revalidate,no-store"); //这个no-store加了之后,Firefox下有效 |
这个页面不缓存了,并且有个判断购物车商品为空就跳转到空购物车的页面,那么用户点击浏览器后退,回来之后,也直接到 购物车页面了。
今天公司在做一个数据与app对接的功能,对方转过来的是json转义之后的数据,但又不是标准的json格式化数据,我们直接使用json_decode是输入原字符了,下面一起来看年解决办法吧。代码如下
\u5c0f\u533a\u7eff\u5316\u5f88\u4e0d\u9519|||\u4e8c\u671f\u4ec0\u4e48\u65f6\u5019\u4ea4\u623f\u7684|||\u4e8c\u671f\u4ea4\u623f\u4e86|||\u548c\u683c\u6797\u4e91\u5885\u79bb\u5f97\u5f88\u8fd1|||\u5730\u7406\u4f4d\u7f6e
上面代码有人能看懂吗?我估计没人了,我知道是json了所以取一段出来测试
代码如下 | 复制代码 |
echo json_decode('u683c\u8fd8\u4e0d\u9519'); |
发现什么出没有输入,后来想这个不是标准json我们可以使用一个数组再转换看一下
代码如下 | 复制代码 |
$array =array('u683c\u8fd8\u4e0d\u9519'); 得到结果是 ["u683c\\u8fd8\\u4e0d\\u9519"] |
这不是标准json格式数据吧,于时我再进一步解析
代码如下 | 复制代码 |
$array = json_decode('["\u4e8c\u671f\u4ec0\u4e48\u65f6\u5019\u4ea4\u623f\u7684"]'); print_r($array ); ( |
是乱码呀,这个我估计是编码问题,我知道json转换编码是uft8的而我页面是gbk了,于时找到iconv函数
代码如下 | 复制代码 |
$array = json_decode('["\u4e8c\u671f\u4ec0\u4e48\u65f6\u5019\u4ea4\u623f\u7684"]'); echo iconv('utf-8','gbk',$array[0]); |
得出结果是
二期什么时候交房的
这样就成功把乱码转换成中文了哦,大家试一下
本站原创教程:转载注明来源http://www.111cn.net
微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的demo文件进行修改的,下面给各位分享一个。初次接触的时候写的一些,有点乱…也没去整理…
ps–最近都不想工作了,各种烦,午饭也没吃,就是想表达一下我过的不好。–请忽略个人情绪往下看。
代码如下 | 复制代码 |
<?php * |
这是magento脚本的另外一种写法。
个人觉得写的还行,高手莫见笑。
用SplFileObject来处理大数据的csv文件效率高
代码如下 | 复制代码 |
<?php require_once 'shell/abstract.php'; class Faarao_Import_Customer extends Mage_Shell_Abstract { protected $_files = array(); protected $_datas = array(); public function __construct() { parent::__construct(); set_time_limit(0); if($this->getArg('file')) { $this->_files = array_merge( $this->_files, array_map( 'trim', explode(',', $this->getArg('file')) ) ); foreach ($this->_files as $key=>$file) { $extension = self::get_extension($file); if($extension != 'csv'){ unset($this->_files[$key]); } } } if(empty($this->_files)){ die(self::usageHelp()); } } // Shell script point of entry public function run() { self::getDataFromCsv(); if(empty($this->_datas)){ die("not found data in csv ! \r\n"); } $emailBooks = array(); foreach ($this->_datas as $name => $datas) { echo "filename: {$name} =======================\r\n"; $importNum = 0; foreach ($datas as $key => $data) { if(empty(trim($data[4]))){ continue; } $customerData['firstname'] = trim($data[0]); $customerData['lastname'] = trim($data[1]); $customerData['phone'] = trim($data[2]); $customerData['mobile'] = trim($data[3]); $customerData['email'] = trim($data[4]); $customerData['company'] = trim($data[5]); $customerData['billing_address'] = $data[6] . $data[7] . $data[8]; $customerData['billing_postcode'] = sprintf("%05d",trim($data[9])); $customerData['billing_city'] = trim($data[10]); $customerData['billing_country'] = trim($data[11]); $customerData['shipping_address'] = $data[12] . $data[13] .$data[14]; if(empty($data[15]) && is_numeric($data[16])){ $customerData['shipping_postcode'] = sprintf("%05d",trim($data[16])); $customerData['shipping_city'] = trim($data[17]); $customerData['shipping_country'] = trim($data[18]); }else{ $customerData['shipping_postcode'] = sprintf("%05d", trim($data[15]));; $customerData['shipping_city'] = trim($data[16]); $customerData['shipping_country'] = trim($data[17]); } // $customerData['email'] = 'zouhongzhao@126.com'; $customerData['country'] = 'Finland'; $customerData['password'] = self::randomkeys(10); echo "customer email {$customerData['email']} ...\r\n"; print_r($customerData); $customer = Mage::getModel('customer/customer'); $customer->setWebsiteId(Mage::app()->getWebsite()->getId()); $customer->loadByEmail($customerData['email']); if(!$customer->getId()) { echo "insert ... \r\n"; $customer->setEmail($customerData['email']); $customer->setFirstname($customerData['firstname']); $customer->setLastname($customerData['lastname']); $customer->setPassword($customerData['password']); }else{ echo "update ... \r\n"; } try { $customer->save(); $customer->setConfirmation(null); $customer->save(); //Make a "login" of new customer Mage::getSingleton('customer/session')->loginById($customer->getId()); $importNum ++; $emailBooks[$customerData['email']] = array( 'firstname'=>$customerData['firstname'], 'lastname'=>$customerData['lastname'], 'customer_mage_id'=>$customer->getId(), 'passwd'=>$customerData['password'] ); echo "customer save ok !\r\n"; } catch (Exception $ex) { echo "customer save fail !\r\n"; continue; } if(trim($customerData['billing_address']) == trim($customerData['shipping_address']) && $customerData['billing_postcode'] == $customerData['shipping_postcode'] && $customerData['billing_city'] == $customerData['shipping_city']){ $same_address = array ( 'firstname' => $customerData['firstname'], 'lastname' => $customerData['lastname'], 'street' => $customerData['billing_address'], 'company' => $customerData['company'], 'city' => $customerData['billing_city'], 'region_id' => '', 'region' => '', 'postcode' => $customerData['billing_postcode'], 'country_id' => 'FI', 'telephone' => $customerData['phone'], ); $customAddress = Mage::getModel('customer/address'); //$customAddress = new Mage_Customer_Model_Address(); $customAddress->setData($same_address) ->setCustomerId($customer->getId()) ->setIsDefaultBilling('1') ->setIsDefaultShipping('1') ->setSaveInAddressBook('1'); try { $customAddress->save(); echo "sameAddress save ok !\r\n"; } catch (Exception $ex) { echo "sameAddress save fail !\r\n"; continue; } }else{ $billing_address = array ( 'firstname' => $customerData['firstname'], 'lastname' => $customerData['lastname'], 'street' => $customerData['billing_address'], 'company' => $customerData['company'], 'city' => $customerData['billing_city'], 'region_id' => '', 'region' => '', 'postcode' => $customerData['billing_postcode'], 'country_id' => 'FI', 'telephone' => $customerData['phone'], ); self::setBillingAddress($billing_address,$customer); $shipping_address = array ( 'firstname' => $customerData['firstname'], 'lastname' => $customerData['lastname'], 'street' => $customerData['shipping_address'], 'company' => $customerData['company'], 'city' => $customerData['shipping_city'], 'region_id' => '', 'region' => '', 'postcode' => $customerData['shipping_postcode'], 'country_id' => 'FI', 'telephone' => $customerData['phone'], ); self::setShippingAddress($shipping_address,$customer); } // die; } echo "import num: {$importNum} =======================\r\n"; } //save passwd $fp = fopen('customer_record.log', 'w'); fwrite($fp, json_encode($emailBooks)); fclose($fp); } public function setBillingAddress($data,$customer){ $customerAddress = Mage::getModel('customer/address'); if ($defaultShippingId = $customer->getDefaultBilling()){ $customerAddress->load($defaultShippingId); } else { $customerAddress ->setCustomerId($customer->getId()) ->setIsDefaultBilling('1') ->setSaveInAddressBook('1') ; $customer->addAddress($customerAddress); } try { $customerAddress ->addData($data) ->save() ; echo "BillingAddress save ok !\r\n"; } catch(Exception $e){ // Mage::log('Address Save Error::' . $e->getMessage()); echo "BillingAddress save fail !\r\n"; } } public function setShippingAddress($data,$customer){ $customerAddress = Mage::getModel('customer/address'); if ($defaultShippingId = $customer->getDefaultShipping()){ $customerAddress->load($defaultShippingId); } else { $customerAddress ->setCustomerId($customer->getId()) ->setIsDefaultShipping('1') ->setSaveInAddressBook('1') ; $customer->addAddress($customerAddress); } try { $customerAddress ->addData($data) ->save() ; echo "ShippingAddress save ok !\r\n"; } catch(Exception $e){ // Mage::log('Address Save Error::' . $e->getMessage()); echo "ShippingAddress save fail !\r\n"; } } public function randomkeys($length) { $returnStr=''; $pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ'; for($i = 0; $i < $length; $i ++) { $returnStr .= $pattern {mt_rand ( 0, 61 )}; } return $returnStr; } public function getDataFromCsv(){ $this->_files = array_unique($this->_files); $csvCustomers = array(); foreach ($this->_files as $filename) { echo "current file: {$filename}\r\n"; setlocale(LC_ALL, 'en_US.UTF-8'); $content = file_get_contents($filename); $data = mb_detect_encoding()($content, 'UTF-8', true); // $data = iconv("CP1257","UTF-8", $content); file_put_contents($filename, $content); // fclose($handle); // print_r($content);die; $basename = basename($filename,".csv"); $data = array(); $tmp = array(); $spl_object = new SplFileObject($filename, 'rb'); $spl_object->seek(filesize($filename)); $start = 0; $num = $spl_object->key(); $spl_object->seek($start); while ($num-- && !$spl_object->eof()) { $data[] = $spl_object->fgetcsv(); $spl_object->next(); } foreach ($data as $key => $values) { if($key == 0){ continue; } $mergeValue = explode(';',implode(';', $values)); // if(count($mergeValue) != 20){ // continue; // } array_push($tmp,$mergeValue); } $this->_datas[$basename] = $tmp; } return $this; } public function get_extension($filename){ return pathinfo($filename,PATHINFO_EXTENSION); } // Usage instructions public function usageHelp() { return <<<USAGE Usage: php tetuan_customer_import.php --file a.csv,b.csv \n USAGE; } } // Instantiate $shell = new Faarao_Import_Customer(); // Initiate script $shell->run(); |
补充:有一些朋友使用的是excel文档,这样这个程序就不可以使用了,我们可以使用phpexcel插件来读取excel文件并写入到数据库中去哦。
生成唯一不重复的标识我们主要是根据当前的一个时间time然后再转换在md5值,这样几乎是可以保证标签的唯一性了,下面整理了一些关于PHP生成不重复标识符程序代码,希望能各位有帮助。PHP倒是自带了生成唯一id的函数:uniqid() ,它是基于当前时间微秒数的,用法如下:
代码如下 | 复制代码 |
echo uniqid(); //13位的字符串 echo uniqid("php_"); //当然你可以加上前缀 echo uniqid("php_", TRUE); //如果第二个参数more_entropy为true则生成23位 |
字符串
但是它生成的标识有可能不是唯一的,所以很多人会:
代码如下 | 复制代码 |
<?php |
例子。
代码如下 | 复制代码 |
<? //sha1()函数, "安全散列算法(SHA1)" function create_unique() { //return $data; } 例子如下: <? |
我看到很多人使用 md5() 函数,即使它并不完全意味着这个目的:
代码如下 | 复制代码 |
// generate unique string There is actually a PHP function named uniqid() that is meant to be used for this. // generate unique string // generate another unique string |
你可能会注意到,尽管字符串是唯一的,前几个字符却是类似的,这是因为生成的字符串与服务器时间相关。
但实际上也存在友好的一方面,由于每个新生成的 ID 会按字母顺序排列,这样排序就变得很简单。
为了减少重复的概率,你可以传递一个前缀,或第二个参数来增加:
代码如下 | 复制代码 |
// with prefix // with more entropy // both |
这个函数将产生比 md5() 更短的字符串,节省一些空间。
php生成全球唯一标识符(GUID)的方法
GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
世界上的任何两台计算机都不会生成重复的 GUID 值。
需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。
代码如下 | 复制代码 |
<?php return $uuid; |
相关文章
- 有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
- 本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
- 这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
- ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。  ...2017-07-06
- 许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
使用insertAfter()方法在现有元素后添加一个新元素
复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31jQuery 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- 大概有如下步骤 新建项目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- C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 一、下载 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
安装和使用percona-toolkit来辅助操作MySQL的基本教程
一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24- 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
- 无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
- php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
- 基本思路: 通过使用jquery选择器得到对应表单的jquery对象,然后使用attr方法修改对应的action 示例程序一: 默认情况下,该表单会提交到page_one.html 点击button之后,表单的提交地址就会修改为page_two.html 复制...2014-06-07
js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
第一种,只区分浏览器,不考虑版本 复制代码 代码如下:function myBrowser(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf("Opera") > -1; if (isOp...2014-05-31- 前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08