プロが教える店舗&オフィスのセキュリティ対策術

同一ページで入力→確認→送信と行いたいのですが、Wordpressのセキュリティ対策上Javascriptとphpの間ではデータを送信することができません。この時点でA jaxを使えないことが分かっているのですが、そのほかの方法で実装する方法を調べても良い方法が見つかりませんでした。
何か良い方法はありますでしょうか?

※現在のコード
https://wandbox.org/permlink/JGyiJSeIbExI3IRA

A 回答 (4件)

WordPressのセキュリティ対策上、JavascriptとPHPの間ではデータを送信することができません。

そのため、AJAXを使用できません。

AJAXを使用できない場合、JavascriptとPHPの間のデータのやり取りを行うには、次の方法があります。

* フォームを使用します。
* XMLHttpRequestを使用します。
* FormDataを使用します。

フォームを使用する場合は、フォームのaction属性にPHPファイルのURLを指定します。また、method属性にPOSTを指定します。

XMLHttpRequestを使用する場合は、openメソッドでリクエストのメソッドをPOSTに設定し、sendメソッドでデータを送信します。

FormDataを使用する場合は、FormDataオブジェクトを作成してデータを追加し、submitメソッドでデータを送信します。

あなたのコードを見ると、フォームを使用しているようです。しかし、フォームのaction属性にPHPファイルのURLが指定されていません。そのため、フォームからデータが送信されません。

フォームのaction属性にPHPファイルのURLを指定することで、フォームからデータが送信されるようになります。
    • good
    • 1
この回答へのお礼

Q.フォームを使用する場合は、フォームのaction属性にPHPファイルのURLを指定します。また、method属性にPOSTを指定します。

フォームのaction属性にPHPファイルのURLを指定することで、フォームからデータが送信されるようになります。

A.アドバイスありがとうございます、以前別の方に教えて頂いた際に「フロントを通してはダメです。STDINという標準入力をWordPressが破壊してしまう為、動作しません。」 と教わったので正しい情報か分からないのですが、調べたところ admin-ajax.php をリクエスト先に設定すれば可能なようです。Wordpressのサポートフォーラムにもセキュリティ対策上データの通信は行えないとの回答を目にしていた為完全にそうだとばかり思いこんでおりました。

※参考サイト
https://agohack.com/ajax-on-wordpress/

フォームのaction属性にファイルのurlを指定して自分自身に送信して画面遷移する方法でしょうか、やはり A jax か XML は使う事になりそうですね…
詳しい設計が分からなかったので勉強になります。作成してみて分からない際は質問いたしますのでアドバイス頂けると助かります、宜しくお願い致します。

お礼日時:2023/06/02 23:59

こんばんは



>Wordpressのセキュリティ対策上Javascriptとphpの
>間ではデータを送信することができません
特殊な制約下で、組み立てなければならないってことでしょうか?

ご提示のファイルの構成を見ただけで、内容は見ていませんけれど・・
PHP側でそれぞれの処理を行う仕組みのように見えますけれど、Ajaxを何の目的で使う必要があるのでしょうか?
普通にFormから送信して、PHPでレスポンスを返す仕組みなら何の問題もないのでは?

ページ遷移して見えるのが嫌なら、iframeを使うなどの方法もあると思います。
    • good
    • 1
この回答へのお礼

Q.特殊な制約下で、組み立てなければならないってことでしょうか?

PHP側でそれぞれの処理を行う仕組みのように見えますけれど、Ajaxを何の目的で使う必要があるのでしょうか?
普通にFormから送信して、PHPでレスポンスを返す仕組みなら何の問題もないのでは?

ページ遷移して見えるのが嫌なら、iframeを使うなどの方法もあると思います。

A.回答ありがとうございます。制約などは特にないのですが、Ajaxはヤフー知恵袋の回答機能を見て一部のみ切り替わっておりましたので、同じように作成するためにはAjaxが必須ではないかと思っておりました。

入力→確認→送信をそれぞれ還移させるものですが、ヤフー知恵袋のような質問機能は作成済みです。そちらが※現在のコードになります。

iframeというのは埋め込み型の機能だと思うのですが、入力→確認→送信を還移せずに実行するコードは作成できるのでしょうか?

お礼日時:2023/06/03 00:14

>>STDINを乗っ取り独自APIをWordpressにかぶせる必要があるようで、使うのはかなり困難だと思われます。



PHPでなく、他の言語で作っても、STDINなんて普通は使えないと思うよ。
なんか勘違いしている気がする。
    • good
    • 1
この回答へのお礼

回答ありがとうございます、STDINという標準入力をWordPressが
破壊してしまう為、動作しないと教えて頂いたのと、WordpressのサポートフォーラムでA jaxなどのデータ通信は原則禁止されているという記述がありましたので、使えないものだとばかり思っておりました。
下記のサイトを見ると、admin-ajax.phpを使えば問題なく動作するようですね…

※参考サイト
https://agohack.com/ajax-on-wordpress/

お礼日時:2023/06/02 23:27

>>セキュリティ対策Javascriptとphpの間ではデータを送信することができません。



それだと、WordPressって、まったくブラウザとサーバで通信できないことになると思うけどなあ??
なんで動作できるのだろうか??
    • good
    • 1
この回答へのお礼

回答ありがとうございます、Wordpressでも使えるのですが、フロントを通さずに直接通信をかける必要があるようです。
STDINを乗っ取り独自APIをWordpressにかぶせる必要があるようで、使うのはかなり困難だと思われます。

お礼日時:2023/06/02 22:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!