ホームページ >バックエンド開発 >PHPチュートリアル >php中出现通知: 未定義のインデックス: D:Program FilesのHTTP_RAW_POST_DATA
私はPHPで次のように書きました:
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
実行後
PHPに次のような通知が表示されました:D:Program FilesphpEnvphpdemoshm_php01shm01.phpの未定義のインデックス:HTTP_RAW_POST_DATA 47行目
次に、always_popを追加しましたulate_raw_post_data = php.ini ファイルのコメントが削除される
; この機能を無効にするために、PHP のデフォルトの動作は
です。
; http://php.net/always-populate-raw-post-data
always_populate_raw_post_data = オン
再起動しても動作しません、アドバイスをお願いします
ディスカッションに返信 (解決策)
投稿モードで送信する場合、
echo $HTTP_RAW_POST_DATA;
を使用して、送信された書式設定されていない文字列を出力できます
もちろん、投稿モードで送信されない場合は未定義です
実際、これは
always_populate_raw_post_data = On
投稿モードで送信された場合、使用できます
echo $HTTP_RAW_POST_DATA
送信されたフォーマットされていない文字列を出力します
;もちろん、投稿モードで投稿されていない場合は未定義です
我的ソースコードメソッドは次のとおりです:
public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($HTTP_RAW_POST_DATA, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
<コンテンツ>
if($keyword == "?" || $keyword == "?")
{
$msgType = "text";
$contentStr = date("Y-m-d H:i:s",time());
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
}else{
echo "";
終了します。
}
}
帮我看下
public function responseMsg() {
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if(! isset($GLOBALS["HTTP_RAW_POST_DATA"])) return '';
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
直接実行すると、もちろん直接戻ります
郵送で送信された場合は
直接実行すると、もちろん直接戻ります
郵送で送信された場合のみ機能します
これはWeChatインターフェースのコードです。私もこの問題を抱えています。投稿者はそれを解決しましたか?