微信openid存入数据库为空解决方案

舒阳州
2023-12-01

 

首先openid是字符串,大家应该都考虑到了。我这的问题是打印openid,输出sql正常,打印sql和执行语句和吧sql存文件时openid就变成了空?原因是第一步获取code时使用header跳转时代码接着往下执行了!

分析如下 :进入首页(msp.php)判断用户有没有存opeid 没有的话进入这个页面存openid(openid.php代码如下),本页第一步获取code使用Header跳转页面并没有die终止导致程序继续往下运行,我觉得跳转页面了不应该运行下面的代码了。 往下继续运行时并没有code获取到openid也不存在所以数据库存的是空,而Header跳转到本页面了,应该正确流程再添加一条正确的记录的 但是只有1条open为空记录 这什么情况!不过Header("Location: $shouquan");die;加个die问题解决了  耗时2H。

if(!$_REQUEST['code']){
    $shouquan = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=https://www.jifen.com/mobile/openid.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
    Header("Location: $shouquan");die;
}
$code=$_REQUEST['code']; //接收code
$open_url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=".$code."&grant_type=authorization_code";
$wx_user = file_get_contents($open_url);
$wx_user = json_decode($wx_user,true); // 返回结果为json,用户的openid,access_token
$openid = $wx_user['openid'];
$openid = "'$openid'";
//var_dump('INSERT INTO ' . $GLOBALS['ecs']->table('class_openid') ."(user_name,openid,wxopenid) " ."value($user_name,'$openid','$openid')");die;
$res = $db->query('INSERT INTO ' . $GLOBALS['ecs']->table('class_openid') ."(user_name,openid,wxopenid) " ."values($user_name,".$openid.",".$openid.")");
//echo 'INSERT INTO ' . $GLOBALS['ecs']->table('class_openid') ."(user_name,openid,wxopenid) " ."values($user_name,".$openid.",".$openid.")";die;
$myfile = fopen(date('Y-m-d',time()).".txt", "ab+") or die("Unable to open file!".date('Y-m-d',time()).".txt");
$text = date('Y-m-d H:i:s',$time).'INSERT INTO ' . $GLOBALS['ecs']->table('class_openid') ."(user_name,openid,wxopenid) " ."values($user_name,".$openid.",".$openid.")"."\r\n";
fwrite($myfile, $text);
fclose($myfile);
if($res){
    Header("Location: https://www.jifen.com/mobile/msp.php?act=msp_shop&type=2");
}
 类似资料: