Month: 4月 2016

PHP CURL CURLOPT_HTTPHEADER设置HOST主机头进行外网访问

为了安全,我们的web服务主机往往不能上网。维护的时候,也是通过跳板机,ssh登录后去操作。

有时候我们的程序需要访问外网。比如需要调用外网其他程序的某个接口。这下该怎么办呢?

我们可以通过PHP的CURL函数的CURLOPT_HTTPHEADER来配置设置host访问。

在开发中,我遇到这样一个例子。

有一个活动程序,需要调用qzone那边的一个接口。…

《PHP企业应用开发十大问题》

《PHP企业应用开发十大问题》

1. 如何解决全文检索的问题(不依赖第三方搜索引擎)

2. 如何解决计划任务的问题(不依赖操作系统计划任务)

3. 如何用户二次开发无法升级的问题

4. 如何和其他格式文件进行数据的交换。

5. 常见安全问题的防护(xss, sql注入,附件上传,csrf等)

6. 如何用PHP做聊天服务器。(做轻量级的解决方案)

7. 如何解决PHP环境部署问题。

8. 如何选择PHP的开发框架。

9. 如何解决消息通知的问题。

10. 如何保护自己的代码?…

PHP AJAX JSONP实现跨域请求

PHP AJAX JSONP实现跨域请求

代码示例:

js代码

<script>
 $.ajax({
    type : "get",//get方法
    async:false,
    url : "json.php",
    dataType : "jsonp", //类型
    jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) //jsonp回调参数,必需
    jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名(如果一个页面有多个jsonp请求,请在这里起不同的名字)
    success:function(json){
    alert(json);
    alert(json[0].aid);
    },
 error:function(){
    alert('fail');
     }
 });
});
</script>
PHP代码:json.php 

<?php
$callback = $_GET['callback']; //jsonp回调参数,必需
                

MYSQL查询某字段中以逗号分隔的字符串的方法

首先我们建立一张带有逗号分隔的字符串。CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCHAR(20) NOT NULL,pnum VARCHAR(50) NOT NULL);

然后插入带有逗号分隔的测试数据
INSERT INTO test(pname,pnum) VALUES('产品1','1,2,4');
INSERT INTO test(pname,pnum) VALUES('产品2','2,4,7');
INSERT INTO test(pname,pnum) VALUES('产品3','3,4');
INSERT INTO test(pname,pnum) VALUES('产品4','1,7,8,9');

INSERT INTO test(pname,pnum) VALUES('产品5','33,4');…

利用 oEmbed 和 PHP 访问第三方内容

将来自流行应用程序和网站的富内容和数据添加到自己的 web 页面

oEmbed 规范提供了一种方法,可以在 web 页面中显示来自第三方内容共享站点的内容的嵌入式表示。本文介绍 oEmbed API,并在一个 PHP 应用程序上下文中进行演示,解释如何使用它来嵌入来自诸如 Flickr、YouTube、Slideshare、Wikipedia 等流行网站的内容。

oEmbed: 一个嵌入媒体的开放格式

oEmbed 是一个最新的规格,由Cal Henderson (Flickr), Mike Malone, Leah Culver (Pownce), 和Richard Crowley (OpenDNS) 公布.

oEmbed是一个开放格式,来标准化嵌入图片、视频、链接或者其他媒体的方法,以及绕过媒体提供者的API(或需要屏幕抓取但没有).在一个用户发表直接指向具体媒体资源链接时,它使网站能快速简单地嵌入这个媒体.它的工作原理是:把链接作相应转换,也就是说,把图片或者视频转成XML或者JSON,告诉用户如何嵌入媒体.

“oEmbed是一个格式,允许一个URL的嵌入代理存在于第三方站点.当一个用户发表一个资源的链接时,简单的API允许一个网站显示嵌入内容(比如图片、视频),而没有必要直接解析这个资源.”作者在oEmbed网页上说.…

编程的智慧(下)

  • 下面我对这些情况举一些例子。

    情况1:下面这段代码里面有一个continue:

    List<String> goodNames = new ArrayList<>(); for (String name: names) { if (name.contains("bad")) { continue; } goodNames.add(name); ... } 

    它说:“如果name含有'bad'这个词,跳过后面的循环代码……” 注意,这是一种“负面”的描述,它不是在告诉你什么时候“做”一件事,而是在告诉你什么时候“不做”一件事。为了知道它到底在干什么,你必须搞清楚continue会导致哪些语句被跳过了,然后脑子里把逻辑反个向,你才能知道它到底想做什么。这就是为什么含有continue和break的循环不容易理解,它们依靠“控制流”来描述“不做什么”,“跳过什么”,结果到最后你也没搞清楚它到底“要做什么”。