ホームページ  >  記事  >  バックエンド開発  >  見てください、eval()

見てください、eval()

不言
不言オリジナル
2018-05-29 09:15:521374ブラウズ

xu モデレーター、会ったことはありますか。テスト サーバーではコードは問題なく実行されますが、2008+php5.4+fastcgi の正式バージョンは少し奇妙です。

ディスカッション (解決策) への返信

いいえコード、真実なし

コードなし、真実なし

<?php  
/**  
  * wechat php test  
  */  
 
class MpapiAction extends Action{  
private $id;  
 
public function getId(){  
return $id = $_REQUEST[&#39;appid&#39;];  
}  
public function index(){  
Log::write(&#39;eval是否开启:&#39;.function_exists(&#39;eval&#39;));  
Log::write("remote_addr:".$_SERVER[&#39;REMOTE_ADDR&#39;].(strpos($_SERVER[&#39;REMOTE_ADDR&#39;], "101.226"))?" from weixin":"unknow ip");  
Log::write("query_string:".$_SERVER[&#39;QUERY_STRING&#39;]);  
header("Content-type:text/html;charset=utf-8");  
$str = md5($_REQUEST[&#39;appid&#39;]."weike86.com");  
define("TOKEN", $str);  
Log::write(&#39;TOKEN::&#39;.$str);  
$this->valid();  
$wechat = new WechatAction();  
$wechat->responseMsg($_REQUEST[&#39;appid&#39;]);  
}  
 
public function valid(){  
        $echoStr = $_GET["echostr"];  
        //valid signature , option  
        if($this->checkSignature()){  
         Log::write(&#39;$echoStr&#39;.$echoStr);  
         Log::write(&#39;HTTP_RAW_POST_DATA:&#39;.$GLOBALS["HTTP_RAW_POST_DATA"]);  
         echo $echoStr;  
         //exit;  
       }  
    }  
      
private function checkSignature(){  
        // you must define TOKEN by yourself  
        if (!defined("TOKEN")) {  
            throw new Exception(&#39;TOKEN is not defined!&#39;);  
        }  
          
        $signature = $_GET["signature"];  
        $timestamp = $_GET["timestamp"];  
        $nonce = $_GET["nonce"];  
          
$token = TOKEN;  
$tmpArr = array($token, $timestamp, $nonce);  
        // use SORT_STRING rule  
sort($tmpArr, SORT_STRING);  
$tmpStr = implode( $tmpArr );  
$tmpStr = sha1( $tmpStr );  
 
if( $tmpStr == $signature ){  
return true;  
}else{  
return false;  
}  
}  
 
}  
 
?>

コードなし、真実なし

公式サーバーから返される値 (例外)
WeChat サーバーから返される値にテスト サーバーは正常に応答します (通常)

エラー行の近くにコードを投稿する必要があります。

その日はわかったのに、答えを忘れてしまいました。ページの正常な応答を妨げる BOM が存在します。インターネット上には PHP クラスがあり、BOM 削除ツールもあります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。