请问一下在微信子自定义菜单中的url链接
我基于原有的微信平台CMS做了一个功能,然后把功能的链接放到菜单中,通过点击菜单进入页面。但是一开始可以顺利进入,还点了几次异步上传照片,但是会显示error openid:{wechat_id}错误提示。可是后来就不行了,进不了页面,一点就是在一个空白页面显示error openid:{wechat_id},在windows的微信开发者工具又显示no token ,后来又不知道怎么老是跳成手机端首页。恳求高手帮帮忙。
回复讨论(解决方案)
这些错误提示时你们自己代码写的吧,你要把对应代码发出来
这些错误提示时你们自己代码写的吧,你要把对应代码发出来
<?phpclass WapAction extends BaseAction{ public $token; public $wecha_id; public $fakeopenid; public $fans; public $homeInfo; public $bottomeMenus; public $wxuser; public $user; public $group; public $company; public $shareScript; public $sign; private $_appid; private $_secret; private $_redirect_uri; private $_auth; public $owxuser; protected function _initialize() { parent::_initialize(); $this->_appid = C("appid"); $this->_secret = C("secret"); $this->time = 0; $this->token = $this->_get("token"); if (ALI_FUWU_GROUP && (date("Y") == 2015)) { $fuwuuserlist = M("fuwuuser")->where(array("token" => $this->token))->select(); foreach ($fuwuuserlist as $fuwuvo ) { $fuwuuserinfo = M("userinfo")->where(array("token" => $this->token, "wecha_id" => $fuwuvo["wecha_id"]))->find(); if ($fuwuuserinfo == "") { if ($fuwuvo["gender"] == "M") { $fuwuvo["gender"] = 1; } else if ($fuwuvo["gender"] == "F") { $fuwuvo["gender"] = 2; } else { $fuwuvo["gender"] = 0; } $add_userinfo_hb = array("token" => $this->token, "wecha_id" => $fuwuvo["wecha_id"], "issub" => 1, "portrait" => $fuwuvo["avatar"], "truename" => $fuwuvo["real_name"], "nickname" => $fuwuvo["real_name"], "wechaname" => $fuwuvo["real_name"], "sex" => $fuwuvo["gender"]); $add_userinfo_hb = array_map("nulltoblank", $add_userinfo_hb); $id_userinfo = M("userinfo")->add($add_userinfo_hb); } else { if (($fuwuuserinfo["portrait"] == "") || ($fuwuuserinfo["wechaname"] == "")) { if ($fuwuvo["gender"] == "M") { $fuwuvo["gender"] = 1; } else if ($fuwuvo["gender"] == "F") { $fuwuvo["gender"] = 2; } else { $fuwuvo["gender"] = 0; } $save_userinfo_hb = array("token" => $this->token, "wecha_id" => $fuwuvo["wecha_id"], "issub" => 1, "portrait" => $fuwuvo["avatar"], "truename" => $fuwuvo["real_name"], "nickname" => $fuwuvo["real_name"], "wechaname" => $fuwuvo["real_name"], "sex" => $fuwuvo["gender"]); $save_userinfo_hb = array_map("nulltoblank", $save_userinfo_hb); $up_userinfo = M("userinfo")->where(array("token" => $this->token, "wecha_id" => $fuwuvo["wecha_id"]))->save($save_userinfo_hb); } } } } if (strlen($this->token)) { $_SESSION["wap_token"] = $this->token; } if (!$this->token) { $this->token = $_SESSION["wap_token"]; } if (!empty($_SESSION["wap_token"])) { $this->token = $_SESSION["wap_token"]; } if (!$this->token && !strpos(MODULE_NAME, "Drp") === false) { $id = $this->_get("id"); if ($id) { $did = M("Distributor_store")->where(array("id" => $id))->getField("did"); $this->token = M("Distributor")->where(array("id" => $did))->getField("token"); } } $this->assign("token", $this->token); if (!$this->token) { exit("no token"); } if ($this->token && !preg_match("/^[0-9a-zA-Z]{3,42}$/", $this->token)) { exit("error token"); } $this->wxuser = S("wxuser_" . $this->token); if (!$this->wxuser || 1) { $this->wxuser = D("Wxuser")->where(array("token" => $this->token))->find(); S("wxuser_" . $this->token, $this->wxuser); } $this->owxuser = $this->wxuser; $this->assign("wxuser", $this->wxuser); $this->_checkVipTime($this->wxuser); $fake = 0; if (($this->wxuser["winxintype"] != 3) && $this->_appid && $this->_secret) { if ($this->wxuser["oauth"] == 1) { if (!$this->isAgent) { $this->wxuser["appid"] = trim($this->_appid); $this->wxuser["appsecret"] = trim($this->_secret); } else { $this->wxuser["appid"] = $this->thisAgent["appid"]; $this->wxuser["appsecret"] = $this->thisAgent["appsecret"]; } } $fake = 1; } $toAuth = 0; if ((C("server_topdomain") == "paiyi.net.cn") && (C("site_url") != "http://weixintest.paiyi.net.cn")) { $toAuth = 1; } else { $toAuth = $this->wxuser["oauth"]; } if ((C("server_topdomain") == "pigcms.cn") && ($this->wxuser["winxintype"] != 3)) { $this->wxuser["appid"] = $this->_appid; $this->wxuser["appsecret"] = $this->_secret; $this->wxuser["oauth"] = 0; $this->wxuser["is_domain"] = 1; $fake = 1; } $wexintype = $this->wxuser["winxintype"]; $session_openid_name = "token_openid_" . $this->token; $session_fakeopenid_name = "token_fakeopenid_" . $this->token; $session_reopenid_name = "token_reopenid_" . $this->token; $session_oauthed_name = "token_oauthed_" . $this->token; $getUserInfoModules = getUserInfoModule::index(); $getUserinfo = 0; if (isset($_GET["rget"]) || intval($_GET["ali"])) { $_SESSION["otherSource"] = 1; $toAuth = 0; $this->wxuser["oauthinfo"] = 0; } if (isset($_SESSION["otherSource"])) { $toAuth = 0; } if ($this->wxuser["oauthinfo"] && !$_SESSION[$session_oauthed_name]) { if ($_SESSION[$session_openid_name]) { $fansInfo = M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $_SESSION[$session_openid_name]))->find(); if ($toAuth) { if (!$fansInfo || !$fansInfo["wechaname"] || !$fansInfo["portrait"]) { unset($_SESSION[$session_openid_name]); $getUserinfo = 1; } } } else { if (isset($_SESSION[$session_reopenid_name]) && $_SESSION[$session_reopenid_name]) { $fansInfo = M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $_SESSION[$session_reopenid_name]))->find(); if (!$fansInfo || !$fansInfo["wechaname"] || !$fansInfo["portrait"]) { unset($_SESSION[$session_openid_name]); unset($_SESSION[$session_reopenid_name]); $getUserinfo = 1; } } else { $getUserinfo = 1; } } } $this->isFuwu = 0; $this->isWechat = 0; $userAgent = strtolower($_SERVER["HTTP_USER_AGENT"]); if (strpos($userAgent, "alipayclient")) { $this->isFuwu = 1; } else if (strpos($userAgent, "micromessenger")) { $this->isWechat = 1; } if (!M("Weixin_account")->where(array("type" => 1))->find()) { M("Wxuser")->where("1")->save(array("type" => 0)); } $this->cookieToSession(); if ($_GET["wecha_id"] && ($_GET["wecha_id"] != $_SESSION[$session_openid_name]) && (3 != $wexintype)) { unset($_SESSION[$session_openid_name]); unset($_SESSION[$session_oauthed_name]); cookie("oauth2_" . $this->token, NULL); } if ($this->isFuwu) { if ($_GET["wecha_id"] != "") { $this->wecha_id = $_GET["wecha_id"]; } else { $this->wecha_id = session("wecha_id"); } session("wecha_id", $this->wecha_id); $thisfuwuuser = M("fuwuuser")->where(array("token" => $this->token, "wecha_id" => $this->wecha_id))->find(); $isFuwuoauth = session("isFuwuoauth"); } if ($this->isFuwu && ($isFuwuoauth != "yes")) { $fw_wecha_id = FuwuOAuth::index($this->token); if ($fw_wecha_id != "no") { $this->wecha_id = $fw_wecha_id; session("wecha_id", $this->wecha_id); session("isFuwuoauth", "yes"); } else if ($this->wecha_id == "") { $this->error("服务窗没有获取粉丝信息权限<br/>请在服务窗开发者中确认开通"); exit(); } $_SESSION[$session_openid_name] = $this->wecha_id; $_SESSION[$session_oauthed_name] = 1; } $users = M("Users")->where(array("id" => $this->wxuser["uid"]))->find(); if (("payReturn" == ACTION_NAME) && (0 < $users["is_syn"])) { $_SESSION[$session_openid_name] = $_GET["wecha_id"]; }
if (empty($_SESSION[$session_openid_name]) && (0 < $users["is_syn"])) { $_SESSION["auth_callback_" . $this->token] = array("url" => getSelfUrl(array("wecha_id")), "token" => $this->token); $url = $users["source_domain"] . A("Home/Auth")->getCallbackUrl($users["is_syn"], "auth") . "token=" . $this->token . "&source=pigcms"; header("Location:" . $url); exit(); } if (2 == $users["is_syn"]) { $url = $users["source_domain"] . A("Home/Auth")->getCallbackUrl($users["is_syn"], "follow") . "wecha_id=" . $_SESSION[$session_openid_name]; $this->_auth = json_decode(HttpClient::getInstance()->get($url)); if (1 == $this->_auth->code) { M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $_SESSION[$session_openid_name]))->setField("issub", 1); } else { M("Home")->where(array("token" => $this->token))->setField("gzhurl", $this->_auth->follow->url); $this->wxuser["qr"] = $this->_auth->follow->qrcode; $this->wxuser["wxname"] = $this->_auth->follow->wechat; } } if (!isset($_SESSION[$session_openid_name]) || !$_SESSION[$session_openid_name]) { if ($this->isFuwu) { } else { $apiOauth = new apiOauth(); if ((!$_GET["wecha_id"] || (urldecode($_GET["wecha_id"]) == "{wechat_id}")) && ($_GET["wecha_id"] != "no") && $this->wxuser["appid"] && ((($this->wxuser["type"] == 0) && ($this->wxuser["appsecret"] != "")) || ($this->wxuser["type"] == 1)) && ($toAuth == 1)) { $token_info = $apiOauth->webOauth($this->wxuser, "", $fansInfo); } if (!empty($token_info)) { $this->wecha_id = $token_info["openid"]; if (3 == $wexintype) { $fake = 0; } if ($fake) { if (isset($_SESSION[$session_fakeopenid_name])) { $datainfo["issub"] = 1; $this->wecha_id = $_SESSION[$session_fakeopenid_name]; $userinfoModel = M("Userinfo"); $userinfoData = $userinfoModel->where(array("token" => $this->token, "wecha_id" => $_SESSION[$session_fakeopenid_name]))->find(); if ($userinfoData) { $fakeUserinfoData = $userinfoModel->where(array("token" => $this->token, "wecha_id" => $token_info["openid"], "fakeopenid" => $token_info["openid"]))->find(); if ($fakeUserinfoData) { if ($userinfoModel->where(array("id" => $fakeUserinfoData["id"]))->save($this->_mergeUserinfo($userinfoData, $fakeUserinfoData))) { $userinfoModel->where(array("id" => $userinfoData["id"]))->delete(); } } else { $userinfoModel->where(array("id" => $userinfoData["id"]))->setField("fakeopenid", $token_info["openid"]); } } else { $fakeUserinfoData = $userinfoModel->where(array("token" => $this->token, "wecha_id" => $token_info["openid"], "fakeopenid" => $token_info["openid"]))->find(); if ($fakeUserinfoData) { $userinfoModel->where(array("id" => $fakeUserinfoData["id"]))->setField("wecha_id", $_SESSION[$session_fakeopenid_name]); } } $this->wecha_id = $_SESSION[$session_fakeopenid_name]; } else { $fansInfo = M("Userinfo")->where(array("token" => $this->token, "fakeopenid" => $token_info["openid"]))->find(); if ($fansInfo) { $this->wecha_id = $fansInfo["wecha_id"]; } } } if ($this->wxuser["oauthinfo"] && (MODULE_NAME != "Index")) { $jsonui = $apiOauth->get_fans_info($token_info["access_token"], $token_info["openid"]); if (isset($jsonui["openid"]) && $jsonui["openid"]) { if ($fansInfo) { $exist = $fansInfo["id"]; $issub = $fansInfo["issub"]; } else { $existInfo = M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $this->wecha_id))->find(); $issub = $existInfo["issub"]; $exist = $existInfo["id"]; } $datainfo["wechaname"] = str_replace(array("'", "\\"), array(""), $jsonui["nickname"]); $datainfo["sex"] = $jsonui["sex"]; $datainfo["portrait"] = $jsonui["headimgurl"]; $datainfo["token"] = $this->token; $datainfo["wecha_id"] = $jsonui["openid"]; $datainfo["city"] = $jsonui["city"]; $datainfo["province"] = $jsonui["province"]; $datainfo["truename"] = $datainfo["wechaname"]; $datainfo["wecha_id"] = $this->wecha_id; if ($fake) { $datainfo["fakeopenid"] = $jsonui["openid"]; } if (3 == $wexintype) { $datainfo["fakeopenid"] = ""; $datainfo["issub"] = $this->_issubService($datainfo["wecha_id"]); } if ($exist) { D("Userinfo")->where(array("id" => $exist))->save($datainfo); } else { D("Userinfo")->add($datainfo); } } else { $this->error("授权不对哦,请重置您的appsecret!<br>" . $this->wxuser["appid"] . "<br>" . $this->wxuser["appsecret"] . "<br>" . $jsonui["errcode"], "#"); exit(); } } if (empty($this->wxuser["oauthinfo"]) && (MODULE_NAME != "Index")) { if ($fansInfo) { $exist = $fansInfo["id"]; } else { $existInfo = M("Userinfo")->where(array("token" => $this->token, "wecha_id" => $this->wecha_id))->find(); $exist = $existInfo["id"]; } $datainfo["token"] = $this->token; $datainfo["wecha_id"] = $this->wecha_id; if ($fake) { $datainfo["fakeopenid"] = $token_info["openid"]; } if (3 == $wexintype) { $datainfo["fakeopenid"] = ""; $datainfo["issub"] = $this->_issubService($datainfo["wecha_id"]); } if ($exist) { D("Userinfo")->where(array("id" => $exist))->save($datainfo); } else { D("Userinfo")->add($datainfo); } } $_SESSION[$session_openid_name] = $this->wecha_id; $_SESSION[$session_oauthed_name] = 1; cookie("oauth2_" . $this->token, array("wap_token" => $this->token, "wecha_id" => $this->wecha_id, "appid" => $this->wxuser["appid"]), 311040000); } else { $this->wecha_id = $this->_get("wecha_id"); if ($fake && $toAuth && !isset($_GET["isappinstalled"])) { $_SESSION[$session_fakeopenid_name] = $this->wecha_id; } if (!$toAuth) { $_SESSION[$session_openid_name] = $this->wecha_id; } if (isset($_GET["wecha_id"]) && strlen($_GET["wecha_id"]) && $toAuth) { $get_parms = $_GET; unset($get_parms["wecha_id"]); $get_parm_str = ""; if ($get_parms) { $comma = ""; foreach ($get_parms as $gpk => $gpv ) { $get_parm_str .= $comma . $gpk . "=" . $gpv; $comma = "&"; } } $get_parm_str .= "&g=" . GROUP_NAME . "&m=" . MODULE_NAME . "&a=" . ACTION_NAME; $_SESSION[$session_reopenid_name] = $this->wecha_id; header("Location:" . $this->siteUrl . "/index.php?" . $get_parm_str); exit(); } } } } else { $this->wecha_id = $_SESSION[$session_openid_name]; } if ($_GET["yundabao"] == 1) { cookie("yundabao", "1", 31536000); } $yundabao = cookie("yundabao"); if ($yundabao != "1") { if ($this->wecha_id && !preg_match("/^[0-9a-zA-Z_\-\s]{3,82}$/", $this->wecha_id)) { exit("error openid:" . $this->wecha_id); } }
它就是有时输出 error openid:" 这一行的东西,有时又输出 no token ,然后不知道怎么有时又跳回首页,

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP에는 4 가지 주요 오류 유형이 있습니다. 1. NOTICE : 가장 작은 것은 정의되지 않은 변수에 액세스하는 것과 같이 프로그램을 방해하지 않습니다. 2. 경고 : 심각한 통지는 파일을 포함하지 않는 것과 같은 프로그램을 종료하지 않습니다. 3. FatalError : 가장 심각한 것은 기능을 부르는 것과 같은 프로그램을 종료합니다. 4. parseerror : 구문 오류는 엔드 태그를 추가하는 것을 잊어 버리는 것과 같이 프로그램이 실행되는 것을 방지합니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP에서 Password_hash 및 Password_Verify 기능을 사용하여 보안 비밀번호 해싱을 구현해야하며 MD5 또는 SHA1을 사용해서는 안됩니다. 1) Password_hash는 보안을 향상시키기 위해 소금 값이 포함 된 해시를 생성합니다. 2) Password_verify 암호를 확인하고 해시 값을 비교하여 보안을 보장합니다. 3) MD5 및 SHA1은 취약하고 소금 값이 부족하며 현대 암호 보안에는 적합하지 않습니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

HTTP 요청 방법에는 각각 리소스를 확보, 제출, 업데이트 및 삭제하는 데 사용되는 Get, Post, Put and Delete가 포함됩니다. 1. GET 방법은 리소스를 얻는 데 사용되며 읽기 작업에 적합합니다. 2. 게시물은 데이터를 제출하는 데 사용되며 종종 새로운 리소스를 만드는 데 사용됩니다. 3. PUT 방법은 리소스를 업데이트하는 데 사용되며 완전한 업데이트에 적합합니다. 4. 삭제 방법은 자원을 삭제하는 데 사용되며 삭제 작업에 적합합니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP는 $ \ _ 파일 변수를 통해 파일 업로드를 처리합니다. 보안을 보장하는 방법에는 다음이 포함됩니다. 1. 오류 확인 확인, 2. 파일 유형 및 크기 확인, 3 파일 덮어 쓰기 방지, 4. 파일을 영구 저장소 위치로 이동하십시오.

phpoop에서 self ::는 현재 클래스를 말하며, Parent ::는 부모 클래스를 말하며, static ::는 늦은 static 바인딩에 사용됩니다. 1. self :: 정적 방법과 일정한 호출에 사용되지만 늦은 정적 바인딩을 지원하지는 않습니다. 2.parent :: 하위 클래스가 상위 클래스 방법을 호출하는 데 사용되며 개인 방법에 액세스 할 수 없습니다. 3. Static ::는 상속 및 다형성에 적합한 후기 정적 결합을 지원하지만 코드의 가독성에 영향을 줄 수 있습니다.
