首先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"); }