问题:微信子菜单类型为view,在详情页需要记录用户点赞数,以此确定唯一性,而订阅号无法通过网页获取用户的openid,需通过第三方获取
示例:
一些常用预定义常量:
//预定义常量
define('SCHEME', $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://');
define('SCRIPT_NAME', isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : preg_replace("/(.*)\.php(.*)/i", "\\1.php", $_SERVER['PHP_SELF']));
define('QUERY_STRING', safe_replace($_SERVER['QUERY_STRING']));
define('PATH_INFO', isset($_SERVER['PATH_INFO']) ? safe_replace($_SERVER['PATH_INFO']) : '');
define('DOMAIN', isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : preg_replace("/([^:]*)[:0-9]*/i", "\\1", $_SERVER['HTTP_HOST']));
define('SITE_URL', SCHEME.$_SERVER['HTTP_HOST'].COOKIE_PATH);
define('RELATE_URL', isset($_SERVER['REQUEST_URI']) ? safe_replace($_SERVER['REQUEST_URI']) : SCRIPT_NAME.(QUERY_STRING ? '?'.QUERY_STRING : PATH_INFO));
define('URL', SCHEME.$_SERVER['HTTP_HOST'].RELATE_URL);
define('WX_OAUTH_OPENID', "https://open.weixin.qq.com/connect/oauth2/authorize?appid='.某个公众号的appid.'&redirect_uri='.urlencode(获取openid的url).'&response_type=code&scope=snsapi_base&state={url}?#wechat_redirect");
使用方法:
/**
* 详情页
*/
public function getShow($iId)
{
$openid = '';
if(!Session::has('openid') and !Input::has('openid')){
return Redirect::to('/video/openid?url='.URL);
}elseif(Input::has('openid')){
$openid = Input::get('openid');
Session::put('openid', $openid);
}
$res = Video::getShow($iId, $openid);
if(!$res){
return Redirect::to('/video');
}
return View::make('front.video.show')
->with('oVideo', $res[0])
->with('oExpert', $res[1])
->with('flag', $res[2]);
}
/**
*获取openid
*/
public function getOpenid(){
if(Input::has('url')){
$url = Input::get('url');
$res = parse_url($url);
if(isset($res['query'])){
$url = $url.'&openid=';
}else{
$url = $url.'?openid=';
}
$url = base64_encode($url);
$url = str_replace('{url}', $url, WX_OAUTH_OPENID);
return Redirect::to($url);
}
}