场景:有个订餐系统,在微信浏览器中实现用户在公众号的授权登录,并得到nickname(用户名)和openid,执行后期的订餐、查询订单等流程。
问题:当授权登录成功后,将其关于微信用户的信息存入到,session中,但是这个session值每次刷新后都被清空了!!!!!
原因:反复的查询问题所在,最后定位到当session中存入中文汉字的时候就会把所有session值都清空(为什么??)
解决方法:
1:把对应的中文存到cookie中
2:把需要存入session中的数据放到redis缓存中,用的时候在去拿

 

这里以百度翻译为例子:

此前看到的安装百度翻插件的时候都是下载下载直接拖入到谷歌浏览器的扩展程序中就ok了,但是现在发现有些电脑不行了拖不进去了,而且商店也是根本打不开(你懂得)

解决办法:

将bdtrans_1.2.5_chrome.crx这个文件的后缀名改成.zip,变成了一个压缩包,然后解压这个压缩包bdtrans_1.2.5_chrome(是个文件夹,最好放到一个固定的磁盘中固定位置,不要有中文),然后如图操作:

点击确定就ok了。

后续又发现一个问题,就是做了如上操作后,.crx插件居然又可以直接拖入到chrom插件中了⊙﹏⊙‖∣。

 

本文来自:创头条

卫哲先生是前阿里巴巴B2B公司的CEO、百安居中国区前总裁,目前是嘉御基金的创始人,投资的案例有房多多、微贷网500彩票网等此类信息。以下为卫哲先生前两天在「阿里老友会」做的关于创业方法论的分享。

本文卫哲分析了互联网创业的立足之本,准备或正在创业的你,可能需要这些。最后他还为大家提供了两个下一波有创业机会的行业。

本文来自微信公众号:爱分析(ifenxicom),虎嗅获授权发表。

一、三平方公里效益

现在很多O2O到家服务都走入了一个误区——没有注意到物流与广告成本。

物流成本在传统行业中占10%,O2O却没有考虑这一刚性比例,这也是目前O2O持续烧钱、无法挣钱的原因。互联网本应是最精准、营销成本最低的,而现在这种烧钱现象却违反了商业本质。

很多企业融资之后都要冲规模、冲客户数量、冲日单量等,但是我们要意识到:规模不等于效益。这可以用「三平方公里效益」理论解释。

什么叫三平方公里效益?首先,我们来看最小的一级——「三平方公里效益」。举个例子,如果我在虹桥上海浦西,现在想吃碗面,那浦东最好的面馆能送过来吗?肯定送不过来,送过来说不定我都不饿了,所以对我来说,只有这三平方公里的面馆和我有关。反过来对这个面馆也一样,这个面馆听说你的平台一天可以做一百万单,可是这和面馆有什么关系?面馆还是一天做50单。所以平台大对消费者和商家都没有意义。这就叫「三平方公里效益」。

你可能有几笔生意不赚钱,但你每一个三平方公里的作战单位必须赚钱。你不能说我每一个三平方公里都不赚钱,一百个三平方公里合在一起才赚钱。

二、同城规模效益

什么是「同城规模效益」?58同城的租房服务是最好的例子,比如我浦东有套房子,可能浦西的人会来租,此时,创业者把一个城市做透是有意义的。「同城规模效益」也必须每个城市、每个区域都赚钱。

与「同城规模效益」相对的是,类似于淘宝、京东、去哪属于「全国规模效益」,而美团、大众点评虽然是一家全国性公司,但它们的规模效应却是同城的。所以,当初美团和大众点评竞争时不去比较每天全国有多少订单,而是每个城市之间进行比较。只有电商类,产品类才是全国规模效应,因为9.9包邮的商品可以走遍全国,把全国的量聚在一起后去和上游供应商谈才有意义。

创业者要经常问自己:你是哪种规模效应?然后根据这种规模效应去做事。但最近创投界、风投界有一种很不好的风气,很多创业者说天使轮拿到钱,我要把模式走通;A轮我要做好北上广深;B轮我要覆盖二线十五个以上城市。然后呢?然后C轮就死了。

这是因为绝大部分公司不需要做十五个城市,甚至北上广深都没有那么重要。如何才能在一笔交易里把物流成本和广告成本压缩到最低对他们是最重要的。

如果创业者要将这些成本降到最低,就需要把密度做起来。让快递员在一栋楼里面送10碗面,你给他两块钱一单他就会干;但如果你让他在整个浦东送10碗面,没8块绝对干不了,因为他一个中午只能送几单而已。这就是密度的效应。

三、留住用户

烧钱时一定要问自己,我烧的钱流向了哪里?用户有没有留下?

很多创业者烧钱只看订单——有钱就有订单,但是有订单是没用的,因为一旦停止烧钱,订单就没了。只有烧钱后,留下了用户才有意义。

什么是用户?即三个月留存率有多少,很多平台只有10%。创业者用烧钱的方式把一百个用户圈进来,但三个月后只剩10%。

因此,一根蜡烛不能烧两头。两头烧即买家卖家一起补,财务报表里面的资产负债表、损益表、现金流量表三张表一起烧。但补贴卖家是不对的,类似滴滴,它不能补贴司机,补贴乘客才有道理,因为创业者需要改变的是乘客的习惯,而司机是在售卖自己的时间和服务,你给他生意做,他就会有钱。

B2C模式需要分析补贴哪一端是合理的。阿里巴巴从来没给卖家、供应商免费过,因为他们是做生意的,如果他们能在平台上做成生意就应该对他们收费。

四、提高行业效率

凡是做不到提高用户体验和企业、行业效率的O2O都是耍流氓,而且这两个次序也不能错。

首先是用户体验,创业者永远不能忘记用户第一。如果用户体验没有因O2O而发生改变,这种O2O模式就没有意义。

但是,也要注意到,也许有些O2O的用户体验看起来很好,却没有提高行业效率。比如上门按摩、上门送水果这种模式,商家送货上门,用户不用自己去超市,看起来用户体验很好,却没有让企业甚至行业的效率因此而提高,甚至效率是下降的。

比如说河狸家,上门服务时,手艺人每天能做2~3个订单,但如果在店里,他们每天能做6~8个订单。此时,虽然房租因O2O省掉了,但每个人每天的产出却在下降,整个行业的效率是降低的。

五、多、快、好、省

什么是好的用户体验?很简单——多、快、好、省。

当年淘宝起家靠多、省两个字,好、快做得差。正因为淘宝送货不够及时,所以京东来了,他一来就打快和好两个字。

再说一个更极致的例子,最近从雷军开始,好像全世界创业者都突然要学一个叫Costco(投资人说注:Costco是美国最大的连锁会员制仓储量贩店,成立以来即致力于以可能的最低价格提供给会员高品质的品牌商品)的公司。Costco是把好和省做到了极致,牺牲了快和多。与沃尔玛相比,Costco在美国需要开一个多小时车才能到,里面的商品只有四千多种,而沃尔玛却有两三万种。

所有创业者要问自己,你要舍弃什么,留下什么?如果四个都想做到,就可能一个都做不到。当然,你要做的是阶段性取舍,而不是永远放弃。但至少在一开始你要问自己:解决行业问题和用户痛点时,你想先解决哪个字?对于很多做O2O、做到家服务的创始人,如果你问他首先要解决什么?他说快,但解决快的时候,他说我还要多,那他肯定做不了。

多、快、好、省里面,如果能做好一个字,你不输;做好两个字,你能赢;想做三个字,你快输了;想四个字都做,你肯定输了。

六、广、深、高、速

刚刚总结的是消费者的四个维度,做企业也有四个维度:广、深、高、速。

阿里系出来的创业者有些特质,高一般都有,很多同学创业初期高度就很高;速度也有,上个月见面团队有10个人,过一个月再见面团队就有了100个人;广度也有,唯一做的不够的是深度。

2005年,阿里在全国只有江浙沪三个区,但是我们在这三个区下面做得很深、很密,让别人针插不进、水泼不进。比如像浙江,我们做了余姚,慈溪,宁波等城市,每个城市下面还做到了镇。

因为阿里已经有足够的深度了,所以才可以跑广度、拉速度。但很多创业者没有经历过最初活下来的时候,而要活下来就一定要做深度,要把很多产品线砍掉。

一个老同学曾跟我讲,当年阿里产品有好多,后面只剩下一两个,但正是因为我们做深了这一两个产品,我们才活下来了。而今天我看到很多创业者,只做好了广、高、速三个字,却没有做好深度。

有些商业本质是互联网决不能改变的,我们要去理解它、尊重它。比如创业第一件事首先要活下来,而要活下来就必须要有自己的一亩三分地,做好深度,也即密度。

七、经营用户

我认为移动互联网的核心是实现了「五位一体」:人、机器、时间、地点、支付,五位一体。五件事合在一起,最可怕的诞生了一件事,就是把社会的剩余资源释放出来。

比如滴滴出行、美国的Uber,它们为什么估值高?滴滴把闲置的出租车司机的时间更高效地释放出来,同时消费者的需求也被精准地释放。两个闲置资源一叠加,就会产生巨大的价值。

现在有些创业者还在坚持运营产品,尤其是传统行业的创业者,而实际上产品是给人使用的,之前可能你不知道如何去找到用户,但互联网技术和互联网精神出现以后,让你有机会能第一时间接触到用户,所以互联网时代最应该经营的是用户,而不仅仅只是停留在运营产品上。

我之前在传统行业,别人问我卖多少马桶,我可以告诉他总量,但是问我卖给了哪些人,我却并不完全清楚。后来进入阿里巴巴,我体会到互联网经济与传统行业不一样,互联网经营更多的是经营人。

物理学上有一个公式:E=MC²,但从互联网时代的经济角度来理解会有新的含义。互联网时代的经济公式:E=MC²,经济=商品×人²。其中的C(用户、消费者、人)的二次方是让商业的原子弹爆炸的关键。如果我们只会经营商品,而不会经营人,企业的发展就很可能被卡在这儿。

经营人不仅仅包括客户,它是指所有与你的商业行为有关系的人,当然也包括经营你内部的人。合伙人文化的核心所在,是你在用心去经营内部的每个人。

640.jpeg

互联网时代的经济公式:E=MC²,经济=商品×人²。

八、让企业在线

另外创业者业也应思考,你的企业在不在线?你的客户都在线了吗?你的员工都在线了吗?你的员工和客户的那个交互界面在线了吗?你的产品在线了吗?

因为互联网上没什么秘密,在线化以后企业通过日常数据的采集,对于用户的各种生活习惯、消费偏好、购买能力等等都可以建立起一个巨大的大数据库,也许不能立刻转化为效益,但是将来其中蕴藏着无限的商机。

一个好的互联网公司,用户要讲的是两件事,第一叫黏性,第二叫属性。这是互联网的两性关系。比如墨迹天气,黏性很强的,用户每天第一看的是天气,最后看的也是天气,黏性很强。但是,它的属性不强,所有的用户都在看天气,但是墨迹并不能知道用户是谁,甚至连用户性别都不知道。因此,它的含金量就没那么高,因为有黏性没属性。

九、寻找最大的问题

之前我碰到很多人问我,行业的下一个机会在哪儿。

我自己曾听过到这样一句话:“在中国不要去找机会。”我非常同意这个观点。在中国,聪明人很多,同样一个机会做的人多了就会形成危机。我听说正规的P2P公司有两千多个,硬生生把很多好机会做成供给过剩了。我们不找机会,但是要找问题,找出的问题最好是够大、够难。

跟你分享我看到的大问题:

第一,农村的金融服务。在农村做互联网金融,我听到的都是反对的声音。即使在我们最发达的村,宽带普及率也并不高,物流配送也受限制。2000年阿里巴巴刚起步,物流、信息流很多都亟待解决。如今在新常态的推动下,农村这么大市场,够大、够难,你把这些事情做起来,就是机会。

第二,B2B市场。移动互联网对企业服务改造还没有开始,为什么?因为这存在很大困难,有多少企业习惯使用互联网进行企业内部的管理和对外交易?B2B市场够大,但任何一个行业互联网基础都较弱。阿里巴巴也是历经15年的探索才走到今天,阿里巴巴第一天做电子商务的时候,马云被别人当成骗子。

我想今天大家再做互联网金融是幸福的,没人会被说成骗子。互联网金融可做的事很多,中国在过去因为总体增长,遍地是企业,第一代、第二代企业家很会把握机会。接下来的企业需要寻找你所在地方、行业、人群存在的大问题

够大、够难的事,有没有决心,有没有韧性去做,去解决。新常态尤其是在服务行业,还是有巨大的问题,有待我们解决。新的常态上增量经济,存量经济核心是什么,无非是效率,所以移动互联网不管是提出需求,还是帮助产能,抑或是释放剩余资源,你参与这场革命就是成功者。

  1. 在合适的时候使用PHP – Rasmus Lerdorf

没有谁比PHP的创建者Rasmus Lerdorf明白PHP用在什么地方是更合理的,他于1995年发布了PHP这门语言,从那时起,PHP就像燎原之火,烧遍了整个开发阵营,改变了互联网的世界。可是,Rasmus并不是因此而创建PHP的。PHP是为了解决WEB开发者的实际问题而诞生的。

和许多开源项目一样,PHP变得流行,流行的动机并不能用正常的哲学来进行解释,甚至流行得有些孤芳自赏。它完全可以作为一个案例,一个解决各种Web问题的工具需求所引起的案例,因此当PHP刚出现的时候,这种工具需求全部聚焦到PHP的身上。

但是,你不能奢望PHP可以解决所有问题。Lerdorf是第一个承认PHP只是一种工具的人,并且PHP也有很多力所不能及的情况。

根据工作的不同来选择合适的工具。我跑了很多家公司,为了说服他们部署和使用PHP,但是这并不意味着PHP对所有问题都适用。它只是可以一个解决大部分问题的front-end脚步语言。

作为一个web开发者,尝试用PHP解决所有问题是不科学的,同时也会浪费你的时间。当PHP玩不转的时候,不要犹豫,试用一下其他的语言吧。

  2. 使用多表存储提高规模伸缩性 – Matt Mullenweg

没有人愿意质疑Matt Mullenweg在PHP方面的权威性,他开发了这个星球上最流行的blog系统,(依靠一个强大的社区力量支持): WordPress. 创建Wordpress以后,Matt和他的团队启动了WordPress.com平台,一个基于WordPress MU的免费blog站点。现在,Wordpress.com已经拥有大约400万用户, 这些用户每天提供超过 140,000篇的日志。

如果有人知道如何让网站的规模伸缩自如,这个人一定是Matt Mullenweg。2006年的时候 Matt对Wordpress的数据结构进行了前瞻性的改进,并且解释了为什么Wordpress MU对每个blog使用独立的MYSQL表格, 而不是把所有的blog数据都塞进一个巨大的表格。

我们测试过这个方法,但是发现如果要扩展它的伸缩性,代价太高。如果用一个整体的数据结构,在大流量面前,你将会面临服务器硬件的问题。在MU里面。用户们都被分布到独立的表格当中,并且可以轻易地组织起来。举个例子,WordPress.com把用户的数据分散存储到4096个数据库中,这些数据库可以分散大规模的数据访问,实现流量和压力分流。

数据表的可迁移性让代码(blog)可以运行得更快,并且让系统具备更强的伸缩性。依靠强大的缓存策略和灵活的数据库运用策略, Matt向人们展示了时下最流行的Facebook和Wordpress.com都可以在PHP下稳定运行,并且处理惊人的访问量。

  3. 千万不要相信用户 – Dave Child

Dave Child是Added Bytes (previously ilovejackdaniels.com) 网站的核心人物,这个网站以他出色的《cheat sheets for many programming languages》而闻名。 Dave为很多英国的公司服务,并且已经在编程世界里树立起相当的权威。

Dave为PHP开发者提供了很多深谋远虑的建议,并总结成了《writing secure code in PHP》:千万不要相信你的用户,他们甚至可能会伤害你。

有一条web开发的基本原则,我重复多少遍都觉得不够,那就是:千万不要相信你的用户,同时要假设你网站中的每个数据单元都是从用户那里收集来的恶意代码。很多时候,你必须用JAVAscript在客户端检验表单提交过来的内容, 如果你习惯了如此,那么,这是一个好习惯。如果安全性对你来说很重要,这就是最重要最需要学习的原则。

Dave目前正致力于为它的《Writing Secure PHP》系列书籍整理实例,书的最后他说:

最后,变得偏执一点吧。除非你认为你的站点永远不会受到攻击,否则就正视所有的问题,当问题真正发生的时候,你的情况会变得很糟。你需要把每个用户都看成会带来一场攻防站的黑客,想尽一切办法来保护站点的安全,同时想好相应问题的解决方案。

  4. 多使用PHP缓存 – Ben Balbo

Ben Balbo开发了Site Point,一个为developers和designers提供指导的网站。他是墨尔本PHP开发和开源俱乐部的成员, 因此他对PHP有一定的了解,同时对PHP caching有一定的想法和经验

如果你拥有一个访问量很大,但更新并不频繁的站点(比如blog,基于某种CMS),或许它需要进行一些改造,这些改造不会花费太多的时间,但是对性能有突出的贡献。 如果要为一个复杂/更新频率很快的站点建立缓存机制,过程可能会很曲折,但是好处也是显而易见的。

PHP缓存技术有很多种,Ben为我们推荐了如下一些:

缓存函数的运行结果

设置过期时间

缓存IE下载的文件

模板缓存技术

Cache_Lite

由于PHP作为动态语言的特性,缓存机制对于更新频率并不快的站点来说非常重要。

  5. 使用IDE, Templates和Snippets加速PHP开发 – Chad Kieffer

当Chad Kieffer从UI设计和数据库优化的工作中抽身出来的时候,他会在他的博客2 tablespoons上分享很多技术经验。由于Chad多方面的全面发展,他经常可以发现其他程序员不能发现的问题,并形成相关经验,尤其是他开发网站的方法。他参与了网站开发的各个环节,因此他的建议对于提高网站开发的大局观非常有用。

Chad认为使用Eclipse PDT(Eclipse’s PHP development package) 这样的IDE,同时使用一些模板技术和开源项目可以有效地提高PHP的开发速度。

紧凑的计划,长长的to do lists以及deadlines让开发人员非常苦闷。不过有些功能,比如Eclipse Templates,可以有效减少编码的时间和出错的几率。

通常来说,任何项目都可以自动化,自动化程度越高, 你完成项目的时间就越短。花时间来开发使用频率很高的框架和模板,将会节省你以后更多时间。同时,使用像Eclipse and the PDT package这样的IDE,你会发现效率得到明显提高,IDE可以自动闭合,补全分号并且可以在本地debug。

  6. 利用好PHP的过滤函数 – Joey Sochacki

或许Joey Sochacki并不像Matt Mullenweg那样有名 ,但他也是一个经验丰富的开发者,并且通过他的博客Devolio分享了很多技术经验

Joey发现在编写php代码的过程中有很多地方需要进行过滤,但却并没有太多的coder关注php的内置过滤函数。

过滤数据是我们经常需要做的事情,但是很多功能丰富的PHP内置过滤函数却不为人知。使用类似filter_* 的PHP内置函数,我们几乎可以处理所有的过滤任务,包括数据类型验证/URL/email和IP地址验证/特殊字符处理等等。

过滤是一件复杂的事情,但是我相信joey的发现会给你很多启发,让你认识到PHP强大的过滤功能。

  7. 使用PHP框架 – Josh Sharp

对于是否应该使用Z end, CakePHP, Code Igniter, 或者 其他PHP框架,一直存在着很多争议,但是在web开发者的心中,他们有自己衡量的标准。

Josh Sharp自己创建了一家提供面包和黄油服务的网站,因此他对于使用PHP框架来开发网站有一定的经验。他认为使用一个PHP框架来进行项目开发(use a PHP framework ),可以有效地节省时间,并且减少出错的几率。为什么?因为他觉得PHP实在是太好上手了。

PHP的易于使用有时候也有缺陷,因为并不严格的语法,经常会导致很多错误代码的诞生。但如果使用一个PHP框架,出错的几率就会大大减少。

PHP框架可以让你的代码结构更加规范,并且节省大量时间。

8. 不要使用PHP框架 – Rasmus Lerdorf

与Josh的观点恰恰相反,PHP的鼻祖Rasmus Lerdorf却认为最好不要使用PHP框架,为什么?因为不基于框架的PHP性能更好。Rasmus在Drupalcon 2008的演讲上,用“Hello World”的例子来对比了一些框架PHP和简单PHP之间的性能,结果显示框架PHP的性能要远远落后。

  9. 使用批处理 – Jack D. Herrington

Jack Herrington对PHP世界并不陌生, 并且为大名鼎鼎的IBM developerWorks贡献过超过30篇的专搞, 同时出版过《PHP Hacks》的书,因此他是一个真正的专家。

Herrington推荐使用批处理和Cron来代替那些可以运行在后台的程序脚步,Web用户并不愿意在线等待你的处理过程,所以有些事情更适合放到后台来处理。

诚然,在某些情况下,这有点大材小用了,但是你可以清楚地看到,使用Cron, MySQL, PHP面向对象的方法以及Pear::DB这些便捷的工具来创建一个批处理工具并不是一件复杂的事情。

Jack认为使用cron, PHP和MySQL在后台处理一些任务,比起多进程的业务逻辑要划算得多。

两种方法我都尝试过,我认为Cron非常符合”Keep It Simple, Stupid” (KISS) 的原则,它让后台处理变得简单。与多进程的业务逻辑相比,它没有内存溢出的风险。你可以创建一个简单的批处理脚本,并且在cron中运行,这个脚本会定时检查是否有任务需要处理,处理完之后就会自动退出,因此你不用担心是否有进程卡壳,或者陷入死循环。

  10. 及时启用错误报告 – David Cummings

David Cummings有一个专门提供CMS软件服务的公司 ,并且获得过几次奖 ,他有非常丰富的PHP开发经验。David曾经写过《two PHP tips he wished he’d learned in the beginning》,其中一点就是:及时启用错误报告,这会节省大量的时间。

我告诉人们,最重要的事情就是最大程度地开启PHP的错误报告,为什么?因为PHP可能会隐藏很多小问题:

变量没有预定义

在代码片段中引用了不可用的变量

使用了未定义的常量这些因素看起来并不是什么大事,除非你在使用面向对象的方法编写一些类库。通常,关闭错误报告将可能使你付出更大的成本来维护你的代码。

错误报告可以帮你轻易地找到代码的问题所在,如果错误报告的等级够高,细微的错误都能被立即发现,帮助你节省整体debug的时间。

摘自现代魔法

为了方便 htaccess 编写正则,这里整理了一下 htaccess 的正则规则。

  • # —— 位于行首时表示注释。
  • [F] —— Forbidden(禁止): 命令服务器返回 403 Forbidden错误给用户浏览器
  • [L] —— Last rule(最后一条规则): 告诉服务器在本条规则执行完后停止重写URL
  • [N] —— Next(下一条规则): 告诉服务器继续重写,指导所有重写指令都执行过
  • [G] —— Gone(丢失): 命令服务器返回410 GONE(no longer exists)错误消息
  • [P] —— Proxy(代理): 告诉服务器通过mod_proxy模块处理用户请求
  • [C] —— Chain(捆绑): 告诉服务器将当前的规则和前面的规则进行捆绑
  • [R] —— Redirect(重定向): 命令服务器发出重定向消息,以便用户浏览器发出rewritten/modified(重写/修改)URL的请求
  • [NC] —— No Case(不区分大小写): 对客户端请求的URL不区分大小写
  • [PT] —— Pass Through(放行): 让mod_rewrite模块将重写的URL传回给Apache做进一步处理
  • [OR] —— Or(逻辑或): 用逻辑“或”将两个表达式连接在一起,如果结果为“真”,则会应用后继的相关规则
  • [NE] —— No Escape(禁用转义): 命令服务器在输出时禁用转义字符
  • [NS] —— No Subrequest(禁用子请求): 如果存在内部子请求,则跳过当前命令
  • [QSA] —— Append Query String(追加查询字符串): 命令服务器在URL末尾追加查询字符串
  • [S=x] —— Skip(跳过): 如果满足某指定的条件,则跳过后面第x调规则
  • [E=variable:value] —— Environmental Variable(环境变量): 命令服务器将值value赋给变量variable
  • [T=MIME-type] —— Mime Type(MIME类型): 声明目标资源所属的MIME类型
  • [] —— 匹配一个字符集合,例如[xyz]可以匹配x, y或者z
  • []+ —— 例如[xyz]+会以任何顺序、次数匹配x,y,z的出现
  • [^] —— 字符^表示字符集的补集。[^xyz]将匹配没有x,y或者z的字符串
  • [a-z] —— 连字符(-)表示匹配从字母a到字母z的所有字符串
  • a{n} —— 指定字母a出现的次数为n次,满足该条件时匹配。例如x{3}仅与xxx匹配
  • a{n,} —— 指定字母a出现的次数至少为n次,例如x{3,}可以与xxx或者xxxx等匹配
  • a{n,m} —— 指定a出现的次数至少为n到m次。
  • () —— 用于将正则表达式分组,满足第一组正则表达式的字符串会被存储在变量$1中,以此类推。如果括号中的不是正则表达式,例如(perishable)?press 将能够匹配有或者没有perishable前缀的press
  • ^ —— 位于行首。注意:和中括号中的[^]意义不同。
  • $ —— 位于行末
  • ? —— 例如 monzas? 会匹配 monza 或者 monzas,而 mon(za)? 会匹配 mon 或者 monza。又如 x? 会匹配“空字符” 或者 一个x
  • ! —— 逻辑非。例如“!string” 将会匹配除了“string”以外的所有字符串
  • . —— 表示任意字符串
  • – —— 命令Apache“不要”重写URL,例如“xxx.domain.com.* – [F]”
  • + —— 匹配至少一个任意字符,例如G+匹配以G开头、并且后面至少有一个字符的字符串
  • * —— 匹配零个或多个字符,例如“.*”匹配任意字符串
  • | —— 逻辑“或”,与[OR]不同的是,它只匹配字符串,例如(x|y)匹配x或者y
  • \ —— 转义字符。可以转义左括号( 尖字符^ 美元符号$ 感叹号! 点. 星号* 管道符号| 右括号) 等
  • \. —— 转义为点字符(点字符在正则表达式中可以匹配任意字符)
  • /* —— 零个或多个正斜杠
  • .* —— 零个或多个任意字符(即,匹配任意字符串,包括空字符)
  • ^$ —— 匹配“空字符”、“空行”
  • ^.*$ —— 匹配任意字符串(仅限一行)
  • [^/.] —— 匹配既非“正斜杠”也不是“点”的任意字符
  • [^/.]+ —— 匹配第一个字符既非“正斜杠”也不是“点”,后继字符可以是“正斜杠”或者“点”的字符串
  • http:// —— 匹配“http://”
  • ^domain.* —— 匹配以“domain”开始的字符串
  • ^domain\.com$ —— 仅匹配“domain.com”
  • -d —— 测试字符串是否是已存在的目录
  • -f —— 测试字符串是否是已存在的文件
  • -s —— 测试字符串所指文件是否有“非零”值

在调取数据的时候由于条件是id in (‘1’,’2’…),类似于这样的排序一般是按照括号里边写的顺序,也可以指定给他顺序

就是加入 select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7);  红色部分,

但是我要的是按照其中某个字段的排序,所以做了如下排序得到了想要的结果

 

摘自http://www.jb51.net/cms/173593.html

打开程序文件:phpcms/modules/content/content.php

约 504行:

$r[‘type’] = ‘add’;

在其下面添加代码:

约508行:

$r[‘type’] = ‘init’;

在其下面添加代码:

约528行:

$strs2 = “<span class=’folder’>\$catname </span>”;

修改为:

上述操作完成后效果如图:

栏目后边带+号的就是单页面

 

心血来潮在虚拟机上装了个PHP7,据说跑得比以前版本快好几倍^_^。但把以前的一些程序挪过来发现问题还真是不少,(所以如果想把线上的程序改为用PHP7跑的,还是慎重些)。发现大多数还是跟PHP官方更新的是一致的,多问题为mysql系列函数出问题为多,因为从php5.5开始就已经把mysql系列函数当作即将废除的函数了,到了php7全部废除。

所以就在虚拟机上又安装了php5.4.25,这个版本(据说是上下兼容性好)。

注意注意:如果安装的这个版本是跟系统目前已有的php版本(指的php5、php7而不是php5点几)一样的话,在安装的时候/usr/local/apache2/modules/ 目录下的libphp*.so可能会被替换掉,因为apache下生成的只是php的最大系列版本号如:libphp5.so、libphp7.so,所以在安装前,先去apache目录/usr/local/apache2/modules/,把目前的libphp*.so文件备份一个。

开始安装:

如果编译出错请进入这篇文章http://blog.sayphp.com/?p=707查看如何解决。

安装成功后,复制一些配置文件到安装目录

修改启动端口

启动php5.4.25

查看apache配置文件

其中这里有两个.so文件,如果php5的没有就加上,主要是用这两行代码来切换apache下的php版本!

上边的注意注意部分提到的,因为我之前安装的是php7所以没出现这个问题,如果两个版本都是php5.*的版本,就到/usr/local/apahce2/modules下将之前备份的.so文件改成他的版本号,在apche配置文件使其加载就行了

如图:这是我安装的第三个版本时候这样做的

如果原来的.so文件不小心备覆盖了的话就到你的源码文件中的libs目录下找有.so

 

重启apache

service httpd restart

注意:此方法同样也适用于其他模块

php安装路径在/usr/local/php7下

php7这个版本在安装ftp扩展成功后会在类似/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/目录下生成一个ftp.so文件(如果其他版本的源码可能生成到其他地方)

接下来修改php.ini,查找extension_dir,应该是屏蔽状态,修改为

保存后重启apache