1

顧客が OneSignal を使用してモバイル アプリにプッシュ通知を送信できるように、PHP で WordPress プラグインを構築しています。アクションが再帰的であるという点で、フォームとデータハンドラーの両方である関数があります。

<form name='fcnaddpush' id='fcnaddpush' action="<?php echo $_SERVER['REQUEST_URI']; ?>" METHOD="POST" />

ユーザーが送信ボタンをクリックすると、関数はそれ自体を呼び出し、フォームに入力された値を解析して配列を作成し、json_encode() で準備してから、cURL を介して OneSignal の REST API に送信します。それはすべて非常にうまく機能します........

タイトルまたはコンテンツにアポストロフィが含まれていると、問題が発生します。$_POST['title'] は文字列に \' を付けて返され、json_encode はそれを二重にエスケープするので、それはそれになりました。エスケープされたアポストロフィが 2 つ付いたプッシュ通知が届くと、通知を表示する JavaScript 関数が停止し、文字列がモバイル デバイス上のファイルに書き込まれているため、アプリをアンインストールして再インストールしなければ、古い通知も新しい通知も表示されません。

json_encode() を呼び出す前に stripslashes($_POST['title']) を使用することで、この問題を解決できるようです。

問題は、stripslashes() を使用するときに、他の「特殊文字」で意図しない結果が生じるかどうかです。POST メソッドに urlencode の代わりに utf-8 を使用するように指示する方法はありますか? それはうまくいきますか?

4

0 に答える 0