QQ客服.com 这个。。。

QQ客服.com

嘿嘿, 这个要是能刷流量的话那不错。。。

貌似中文域名还在慢热中。。。或者难成气候。。

访问中文域名要先经过转码比如QQ客服.com
转码后就是:http://www.xn--qq-1e1d264b.com/

发现Chrome 10访问和IE8访问会直接显示QQ客服.COM, 火狐3.6.13访问就显示经过转码了的http://www.xn--qq-1e1d264b.com/了。。

标签: qq, 客服, qq客服

Magento报错:Call to a member function extend() on a non-object in app\code\core\Mage\Core\Model\Mysql4\Config.php on line 115

遇到报错:Fatal error: Call to a member function extend() on a non-object in \app\code\core\Mage\Core\Model\Mysql4\Config.php on line 115

错误原因及解决办法参见:

Magento错误 - Notice: Undefined index:***app\code\core\Mage\Core\Model\Mysql4\Config.php on line 92的解决办法

里的

SET FOREIGN_KEY_CHECKS=0;
update `core_store` set store_id = 0 where code='admin';
update `core_store_group` set group_id = 0 where name='Default';
update `core_website` set website_id = 0 where code='admin';
update `customer_group` set customer_group_id = 0 where customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

执行一遍清缓存就OK。

php WebSockets服务端和客户端

关于WebSockets 的基础概念参见:HTML5 WebSockets 基础使用学习教程

本文简单记录PHP利用WebSockets
和HTML5 WebSockets API的服务器推技术来实现在线聊天系统

php WebSockets服务端和客户端Demo下载

解压后只有两个文件:server.php(服务端)和client.html(客户端)

运行WebSockets服务器端

,命令行模式下使用php -q path\server.php
运行

,或者浏览器访问server.php

注:浏览器必须支持HTML5的WebSocket
。可使用当前的最新Firefox或Chrome。

另外PHP需要支持php_sockets组件
。windows环境下请将php.ini的php_sockets.dll打开。

以上条件满足后,打开http://domo.cn/WebSockets/client.html

如果出现图中提示:

PHP websockets error

这情况为server.php端未运行。可以另开个窗口:http://demo.cn/WebSockets/server.php

当出现提示:Message: Created socket Resource id #2 Message: Socket bound to localhost:8000 Message: Start listening on Socket.,此时表示WebSockets服务端运行中。

再次访问http://domo.cn/WebSockets/client.html,

PHP websockets 连接成功

此时客户端和服务器端WebSockets连接成功。

发送测试内容: PHP WebSockets Test

PHP WebSockets服务器主动 返回发送内容

PHP websockets exit

点击退出,客户端即与服务器端断开。

这样就利用PHP的sockets和HTML5的WebSockets API简单的实现了服务器推。

HTML5 WebSockets 基础使用学习教程

HTML5 WebSockets简介
WebSockets的使用

HTML5
WebSockets,可替代AJAX,无需AJAX请求即可与服务器端对话。

下面介绍HTML5 WebSockets,和记录Php环境的服务器端运行 WebSocket,创建客户端并通过WebSockets协议发送和接收服务器端信息。


HTML5 WebSockets简介

引用wiki的一句话:WebSocket protocol 是HTML5一种新的协议(protocol)。它是实现了浏览器与服务器全双工通信(full-duplex)(
全双工
:允许两台设备间进行资料的双向传输)

先前,很多网站为了实现即时通讯(real-time),所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(time interval)(如每1秒),由浏览器对伺服器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求(request),然而HTTP request 的header是非常长的,我们需要的数据可能是里面包含的数据的一个很小的值,这样会占用很多的带宽。

而最新的实现轮询效果是Comet – 用了AJAX。但这种技术虽然可达到全双工通信,但依然需要发出请求(reuqest)。

这时,HTML5 WebSockets的优势就体现出来了。

在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此 WebSocket 协议中,为我们带来了两大好处:

1. Header

互相沟通的Header是很小的-大概只有 2 Bytes

2. Server Push

服务器可以主动传送数据给客户端


WebSockets的使用


类似使用可以参见:《服务器推技术简介及php实现服务器推技术的聊天室

另外关于通过WebSockets协议发送和接收服务器端信息,参见我的另外文章:

php WebSockets服务端和客户端

源码下载使用测试

通过这边文章对WebSockets基础的学习和WebSockets的服务端和客户端代码的使用,对php和HTML5 的WebSockets的使用有了初步掌握。。

magento安全 - 修改后台路径/改变后台地址

为了安全考虑, 相信很多人都会想修改Magento默认的后台地址/admin

下面记录一下如何改变Magento的后台访问路径。

System - Configuration - Advanced - Admin - Use custom admin URL 设为YES

Custom admin URL 填入要改的后台路径,比如newadmin

另外修改:/app/etc/local.xml文件

找到<frontName><![CDATA[admin]]></frontName>,将admin改为newadmin

清空var/cache 和 var/session,OK。

 

出现问题报错的话检查以下:

select * from core_config_data where path='admin/url/custom'; -- should be http://www.yourdomain.com/newadminpath
select * from core_config_data where path='admin/url/use_custom'; -- should be: 0
select * from core_config_data where path='web/secure/base_url'
select * from core_config_data where path='web/unsecure/base_url'; -- should be: http://www.yourdomain.com/

标签: magento, admin, 后台

Magento - There was an error processing your order. Please contact us or try again later错误处理办法


RP 1.4.1.1使用在Magento1.4.0.1 在checkout/onepage/页面走到最后一步点ORDER PLACE报错:There was an error processing your order. Please contact us or try again later

经过代码跟踪,发现在app/code/core/Mage/Checkout/controllers/OnepageController.php这个位置saveOrderAction方法里的$this->getOnepage()->saveOrder();这个调用里出错了

继续跟中,可以把错误异常锁定在app/code/core/Mage/Checkout/Model/Type\Onepage.php里的saveOrder这个方法里。

把异常报告打开发现原来是在saveOrder这个方法里执行RP包的Payment.php这个文件中出错了,

if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) {$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; } 
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){ $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"]; }
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]) {$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; } 
elseif (getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); 	} 
elseif (getenv("HTTP_CLIENT_IP")) { $ip = getenv("HTTP_CLIENT_IP");	} 
elseif (getenv("REMOTE_ADDR")){$ip = getenv("REMOTE_ADDR"); 	}

这段获取内容获取IP,在本地的测试环境出现Notice级别的错误:Notice: Undefined variable:HTTP_SERVER_VARS

最后将整段换成自己代码库的方法:

if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
   $ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
   $ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
   $ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] 
        && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
   $ip = $_SERVER['REMOTE_ADDR'];
else
   $ip = "unknown";

重新测试一遍,使用RP接口正常走完订单流程,没再报There was an error processing your order. Please contact us or try again later

标签: Error, magento, 环境, RP