月度归档:2015年05月
php的 uc_client.php 测试一列
define('UC_CONNECT', 'mysql');
define('UC_DBHOST', 'localhost');
define('UC_DBUSER', 'root');
define('UC_DBPW', '');
define('UC_DBNAME', 'ultrax');
define('UC_DBCHARSET', 'utf8');
define('UC_DBTABLEPRE', '`ultrax`.pre_ucenter_');
define('UC_DBCONNECT', 0);define('UC_CHARSET', 'utf-8');
define('UC_KEY', 'M1K6F1X3Qaj5d103O8J8Labay219occ7w78d5asbb34aZfGbV2O9t9E5m288NfNd');
define('UC_API', 'http://127.0.0.1/dz/uc_server');
define('UC_APPID', '1');
define('UC_IP', '');
define('UC_PPP', 20);if($_POST)
{include "uc_client/client.php";
$username=$_POST["u"];
$password=$_POST["p"];
$f = uc_get_user($username, 0);
if(!$f)
{uc_user_register($username, $password, $username."@aaa.com");
$f = uc_get_user($username, 0);
}
echo uc_user_synlogin($f[0]) ;
}
禁止 某些可写目录执行 php的方法
首先说下分析为啥这个是正确的,
httpd.conf里面 AddType application/x-httpd-php5 .php
并不区分大小写,从而导致 .php .PHP .Php .pHp .phP 都可以正确执行,那么就需要防止这类漏洞,采用apache rewrite方法的时候用 NC 表示不区分大小写匹配 ,F表示forbidden
RewriteRule ^images/.*\.php – [NC,F]
uc_client/client.php 功能介绍
uc的客户端uc_clinet/client.php 功能
以uc_get_user 为例子
function uc_get_user($username, $isuid=0) { $return = call_user_func(UC_API_FUNC, 'user', 'get_user', array('username'=>$username, 'isuid'=>$isuid)); return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return); } 此函数调用 client.php 内部 UC_API_FUNC 函数,一般来说UC_API_FUNC 是 定值,你在客户端的后台一般设置是mysql方式的同步 那么 define('UC_API_FUNC', UC_CONNECT == 'mysql' ? 'uc_api_mysql' : 'uc_api_post'); 也就是说 UC_API_FUNC 的值是 uc_api_mysql 下面看 uc_api_myql 函数 function uc_api_mysql($model, $action, $args=array()) { global $uc_controls; if(empty($uc_controls[$model])) { include_once UC_ROOT.'./lib/db.class.php'; include_once UC_ROOT.'./model/base.php'; include_once UC_ROOT."./control/$model.php"; eval("\$uc_controls['$model'] = new {$model}control();"); } if($action{0} != '_') { $args = uc_addslashes($args, 1, TRUE); $action = 'on'.$action; $uc_controls[$model]->input = $args; return $uc_controls[$model]->$action($args); } else { return ''; } } 表示的是 包含了 control/$model.php 运行里面的 on_xxx 比如 onget_user 就是一例 function onget_user() { $this->init_input(); $username = $this->input('username'); if(!$this->input('isuid')) { $status = $_ENV['user']->get_user_by_username($username); } else { $status = $_ENV['user']->get_user_by_uid($username); } if($status) { return array($status['uid'],$status['username'],$status['email']); } else { return 0; } } 这里明显是 $_ENV['user'] 是 model/user.php 的user类引入的 在contrl/user.php 里面看的很清楚 function usercontrol() { parent::__construct(); $this->load('user'); $this->app = $this->cache['apps'][UC_APPID]; } 通过base类的load 函数 function load($model, $base = NULL) { $base = $base ? $base : $this; if(empty($_ENV[$model])) { require_once UC_ROOT."./model/$model.php"; eval('$_ENV[$model] = new '.$model.'model($base);'); } return $_ENV[$model]; } 那么好了,在user->get_user_by_username 和 $user->get_user_by_uid 函数里面选择一个,根据 isuid 来判断参数是否是uid, 从而到uc数据库的UC_DBTABLEPRE."members 根据uid还是username查找.得到的值被重新组织了!!! return array($status['uid'],$status['username'],$status['email']); 如果想得到 uid ,需要从 [0] 里面的!!!
支付宝手机网页支付
支付宝手机网页支付
参考此文 http://www.tuicool.com/articles/aqeA7r
手机网页支付产品由手机网页即时到账授权接口(alipay.wap.trade.create.direct)、
手机网页即时到账交易接口(alipay.wap.auth.authandexecute)两个接口组成。
必须先调用手机网页即时到账授权接口(alipay.wap.trade.create.direct)获得授权令牌,
再调用手机网页即时到账交易接口(alipay.wap.auth.authandexecute)完成付款。