ping localhost 返回 ::1的导致不能打开http://localhost的原因及解决

虽然可以在浏览器中正常访问http://localhost 但用file,file_get_contents等函数打开http://localhost 异常。用127.0.0.1也可以打开,本地hosts指向也正常,尝试ping localhost结果返回的是::1,推测不是httpd和php的配置问题,是php不能识别::1所致

ping localhost
reply from ::1: times<1ms
reply from ::1: times<1ms
reply from ::1: times<1ms

应该是返回127.0.0.1,::1显然是错误的,不过为什么呢,hosts文件也没有错啊

127.0.0.1 localhost

这导致php的file_get_contents,getimagesize等函数不能打开“ http://localhost ”开头的,只可以打开“ http://127.0.0.1 ”开头的。

卸载ipv6:ipv6 uninstall

一切恢复正常。

PHP让json_encode()指定回传格式

PHP 回傳 JSON 很方便, 只要將資料經過 json_encode() 就解決了.

不過因為 PHP 自動轉換型別, 造成很多資料都習慣存成字串, 希望在輸出 JSON 的時候, 數字部份可以輸出成數字, 該怎麼做呢?

另一個問題, PHP 轉換成 JSON, 部份陣列會被轉成对象(因為 JavaScript 陣列的 Key 必須是數字, 所以會轉成对象), 要全部強制轉成对象, 該怎麼做呢?

PHP 讓 json_encode() 指定回傳格式

上述的問題, json_encode() 的參數都可以解決.

Read More

php-json数据传输(使用ajax无刷新)

废话不说直接上关键代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script language="javascript">

$(".login").live('click',function(){
var username=$(".input_user").val();
var password=$(".input_ps").val();
if(username==""){
alert("用户名不能为空");
return false;
}
if(password==""){
alert("密码不能为空");
return false;
}
var URL="checkLogin.php?";
var DATA="&username="+username+"&password="+password;
$.getJSON(URL+DATA,function(json){
if(json.username=='true_u'&&json.password=='true_p'){
//alert(json.username+"|"+username+'...1');
window.location="index.php";
}
if(json.username=='error_u'||json.password=='error_p'){
alert("用户名输入或密码输入有误,请检查后重新登陆!");
window.location="login.php";
}

});
});
</script>

Read More

php传json格式给C++时乱码解决方案

今天在做给C++传json数据时,C++无法识别到中文

网上查下原因有json只支持utf-8,但是我的整个项目编码都是utf8的,没有出现过其它编码,所以问题还是抛给了C++解决,后来经一高手解答说,php通过redis给c++做publish时,需要base64_encode

我i试着给他传了下,需要c++做 base64_decode,但是c++好像没整个函数,就网上找了个

加进去试了下 OK 解决了。

现在显示的都是中文正常了,核心是base64_encode这个函数!