公众号开发的redirect参数不固定接收携带
跳转代码
public function mkl()
{
$str_all_param = $this->url_get();
$redirect_uri = urlencode("https://abc.com/star2/index?{$str_all_param}");
$url_oauth = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->wechat_appId}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_base&connect_redirect=1#wechat_redirect";
header("location:".$url_oauth);
}容错核心代码
public function index()
{
$data['title'] = "自定义标题";
$param = $this->input->get('fm',TRUE);
$str_all_param = $this->url_get();
$nonceStr = $this->Wechat_model->nonce_str();
$now = time();
if( !isset($_SESSION['openid']) )
{
$code = $this->input->get('code',TRUE);
if ( isset($code) )
{
$res = $this->Wechat_model->getOpenidByWeb($code);
if ( $res['status'] == 200 ) {
$json = $res['json'];
$openid = $json->openid;
$row = $this->db->select('id,pid2')->where('openid',$openid)->get("members")->row_array();
if( $row['id'] )
{
// 直接赋值openid
$_SESSION['openid'] = $openid;
if ( $row['pid2'] != 1 )
{
$this->db->set('pid2',1)->where('openid',$openid)->update("members");
}
}
else
{
if ( $openid )
{
$arr = array(
'openid' => $openid,
'createtime'=> $now,
'param' => $param,
'pid2' => 1,
);
$this->db->insert('members',$arr);
}
$_SESSION['openid'] = $openid;
}
}
else
{
redirect("star2/mkl/?{$str_all_param}");
}
}
else
{
redirect("star2/mkl/?{$str_all_param}");
}
// 公众号环境end
}
else
{
$openid = $_SESSION['openid'];
}
// 是否重置今天时间
$row_member = $this->db->select("firsttime2,usetime2,num2")->where('openid',$openid)->get('members')->row_array();
$firsttime = date("Y-m-d",time());
if( $row_member['firsttime2'] != $firsttime )
{
$this->db
->set('num2',1)
->set('firsttime2',$firsttime)
->set('usetime2',0)
->where("openid",$openid)->update('members');
}
$data['num'] = $row_member['usetime2'] >= 5 ? 0 : $row_member['num2'];
// 公众号环境
// $nonceStr = $this->Wechat_model->nonce_str();
$jsapiTicket = $this->Wechat_model->getJsApiTicket();
$url = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$string = "jsapi_ticket=".$jsapiTicket."&noncestr=".$nonceStr."×tamp=".$now."&url=".$url;
$signature = sha1($string);
$data['signature'] = $signature;
$data['appId'] = $this->wechat_appId;
$data['timeStamp'] = $now;
$data['nonceStr'] = $nonceStr;
// 公众号环境end
$data['fm'] = $param;
$this->load->view('star/index0310.html',$data);
}最关键的代码
private function url_get()
{
$arr_param = $_GET;
if( empty($arr_param) )
{
$str_all_param = '';
}
else
{
$str = '';
$arr_temp = array();
foreach ($arr_param as $k => $v)
{
if ( $k == 'code' ) continue;
$arr_temp[] = "{$k}={$v}";
}
$str_all_param = implode('&', $arr_temp);
}
return $str_all_param;
}ci框架,3.0版本。
发布时间:2021-03-16,15:27:06
公众号开发,获取openid,外加跳转参数的设置。
