質問編集履歴

8

echo($msg); に修正

2022/01/20 14:39

投稿

mumu1354
mumu1354

スコア18

test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,10 @@
32
32
  credentials:"same-origin",
33
33
  body:params
34
34
  }).then(function(response){
35
+ if (response.ok) {
36
+ response.text().then(function(text){
37
+ console.log(text);//A(phpに渡したいデータ)が問題なく表示される
38
+ });
35
39
  }, function(error){
36
40
  });
37
41
  } else {
@@ -44,7 +48,7 @@
44
48
  if(check_ajax_referer('my-ajax-nonce', '_nonce', false)){
45
49
  //これ以降が処理されない
46
50
  $msg = filter_input( INPUT_POST , 'msg' );
47
- echo($msg);
51
+ echo($msg);//$msgをsingle.phpで使う方法を知りたい。
48
52
  die();
49
53
  }
50
54
 

7

タイトル変更

2022/01/20 13:48

投稿

mumu1354
mumu1354

スコア18

test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
  }
17
17
  add_action( 'wp_enqueue_scripts', 'my_ajax', 1 );?>
18
18
  ```
19
- ```javascript
19
+ ```javascript (get_template_directory_uri().'/js/test.js)
20
20
  const data ={
21
21
  ajaxurl: my_ajax_date.ajax_url,
22
22
  action: my_ajax_date.action,
@@ -41,10 +41,10 @@
41
41
  ```php
42
42
  <?php //(function.phpに記載)
43
43
  function test() {
44
- if(check_ajax_referer('my-ajax-nonce', '_nonce')){
44
+ if(check_ajax_referer('my-ajax-nonce', '_nonce', false)){
45
45
  //これ以降が処理されない
46
46
  $msg = filter_input( INPUT_POST , 'msg' );
47
- echo(A(Javascriptから渡ったデータ));
47
+ echo($msg);
48
48
  die();
49
49
  }
50
50
 

6

質問を変更しました。

2022/01/20 06:00

投稿

mumu1354
mumu1354

スコア18

test CHANGED
@@ -1 +1 @@
1
- WordPressでJavascriptの変数をPHPに受け渡したいですが、うまくいきません
1
+ WordPressでJavascriptの変数をPHP(singel.php)で使う方法が知りたいです。
test CHANGED
File without changes

5

現状を追加

2022/01/20 05:25

投稿

mumu1354
mumu1354

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,7 @@
1
- WordPressでJavascriptの変数をPHPに受け渡したいのですが、まくいきません。
1
+ WordPressでJavascriptの変数をPHPに受け渡し、その値をsingle.phpで使うにはどうしのでしょか?
2
2
 
3
3
  【状況】
4
- 1. check_ajax_referer()で-1が返ってくる。リクエストURLとtokenを基に認証を行い、invalid(無効)になるため
5
- 2.javascriputからPHPに変数らない(コードのAと記載の部分.
4
+ 1. A(Javascriptから渡ったデータ)をsingle.phpで使う方法わからない
6
5
 
7
6
  ```php
8
7
  <?php
@@ -42,11 +41,12 @@
42
41
  ```php
43
42
  <?php //(function.phpに記載)
44
43
  function test() {
45
- check_ajax_referer('my-ajax-nonce', '_nonce'); //-1が返ってくる
44
+ if(check_ajax_referer('my-ajax-nonce', '_nonce')){
46
45
  //これ以降が処理されない
47
46
  $msg = filter_input( INPUT_POST , 'msg' );
48
47
  echo(A(Javascriptから渡ったデータ));
49
48
  die();
49
+ }
50
50
 
51
51
  }
52
52
  add_action('wp_ajax_my-ajax-nonce', 'test');
@@ -63,12 +63,6 @@
63
63
  check_ajax_referer()の使い方を参照[WordPress, セキュア処理で使うnonce関数のちがい(CSRF対策)](https://tadtadya.com/wordpress-differences-between-secure-nonce-functions/#check_ajax_referer)
64
64
 
65
65
  [2022/1/17 追記]
66
- 現状check_ajax_referer()で認証がうまくいかない状態が続いております。
67
- 私自身nonceを扱うのが初めてなのですが、URLにパラメーターは必須なのでしょうか?
68
-
69
- 最終的には、javascriptのクリックアクションに合わせて変化する値をPHP渡すようにしたいので
70
- ページ遷移やリロードは避けたいです。
71
-
72
66
  もし現状のやり方で不可能なら、CSSのdisplayの変更で行う予定です。
73
67
 
74
68
 

4

javascript params.append("nonce", data._nonce);をparams.append("_nonce", data._nonce);に変更

2022/01/18 02:13

投稿

mumu1354
mumu1354

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,7 @@
1
1
  WordPressでJavascriptの変数をPHPに受け渡したいのですが、うまくいきません。
2
2
 
3
3
  【状況】
4
- 1. check_ajax_referer()で-1が返ってくる。
4
+ 1. check_ajax_referer()で-1が返ってくる。リクエストURLとtokenを基に認証を行い、invalid(無効)になるため
5
5
  2.javascriputからPHPに変数が渡らない(コードのAと記載の部分.
6
6
 
7
7
  ```php
@@ -59,17 +59,11 @@
59
59
  wp_create_nonceの使い方を参考:[WordPressでAJAX通信する方法](https://haniwaman.com/wordpress-ajax/)
60
60
  fetchの使い方を参考:[WordPress の Ajax 処理で fetch を試してみる](https://celtislab.net/archives/20180727/ajax-fetch/)
61
61
  ajax用のアクションフックの使い方を参照 [wordpressで使ってみるajaxの基本](https://unskilled.site/wordpress%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8Bajax%E3%81%AE%E5%9F%BA%E6%9C%AC/)
62
+ check_ajax_referer()の使い方を参照[WordPressのAjaxにNonceを追加](http://dim5.net/wordpress/nonce-ajax.html)
63
+ check_ajax_referer()の使い方を参照[WordPress, セキュア処理で使うnonce関数のちがい(CSRF対策)](https://tadtadya.com/wordpress-differences-between-secure-nonce-functions/#check_ajax_referer)
62
64
 
63
65
  [2022/1/17 追記]
64
- javascriputファイルにphpを書いていたため修正いたしました
65
- ご指摘ありがとうございます。
66
-
67
- その後Nonceについていろいろ調べながら勧めており
68
- 1.[WordPressのAjaxにNonceを追加](http://dim5.net/wordpress/nonce-ajax.html)
69
- 2.[WordPress, セキュア処理で使うnonce関数のちがい(CSRF対策)](https://tadtadya.com/wordpress-differences-between-secure-nonce-functions/#check_ajax_referer)
70
- をもとに修正いたしました。
71
-
72
- しかし、現状check_ajax_referer()でnonce 無効とり403エラー発生しております。
66
+ 現状check_ajax_referer()で認証うまくいかい状態続いております。
73
67
  私自身nonceを扱うのが初めてなのですが、URLにパラメーターは必須なのでしょうか?
74
68
 
75
69
  最終的には、javascriptのクリックアクションに合わせて変化する値をPHP渡すようにしたいので

3

質問内容を追記しました。

2022/01/17 11:37

投稿

mumu1354
mumu1354

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,7 @@
1
1
  WordPressでJavascriptの変数をPHPに受け渡したいのですが、うまくいきません。
2
2
 
3
3
  【状況】
4
- 1. javascript 403エラー check_ajax_referer()でnonce 無効となってのが原因?
4
+ 1. check_ajax_referer()で-1って
5
5
  2.javascriputからPHPに変数が渡らない(コードのAと記載の部分.
6
6
 
7
7
  ```php
@@ -27,7 +27,7 @@
27
27
  let params = new URLSearchParams();
28
28
  params.append("action", data.action);
29
29
  params.append("msg", "A(phpに渡したいデータ)");
30
- params.append("nonce", data._nonce);
30
+ params.append("_nonce", data._nonce);
31
31
  fetch(data.ajaxurl,{
32
32
  method:'POST',
33
33
  credentials:"same-origin",
@@ -42,7 +42,8 @@
42
42
  ```php
43
43
  <?php //(function.phpに記載)
44
44
  function test() {
45
- check_ajax_referer('my-ajax-nonce', '_nonce');
45
+ check_ajax_referer('my-ajax-nonce', '_nonce'); //-1が返ってくる
46
+ //これ以降が処理されない
46
47
  $msg = filter_input( INPUT_POST , 'msg' );
47
48
  echo(A(Javascriptから渡ったデータ));
48
49
  die();

2

1.admin-ajax.php,wp_create_nonceのHTML出力をwp_localize_scriptに変更。2.nonceの認証方法をcheck_ajax_refererに変更。

2022/01/17 08:13

投稿

mumu1354
mumu1354

スコア18

test CHANGED
File without changes
test CHANGED
@@ -71,5 +71,12 @@
71
71
  しかし、現状check_ajax_referer()でnonce が無効となり403エラーが発生しております。
72
72
  私自身nonceを扱うのが初めてなのですが、URLにパラメーターは必須なのでしょうか?
73
73
 
74
+ 最終的には、javascriptのクリックアクションに合わせて変化する値をPHP渡すようにしたいので
75
+ ページ遷移やリロードは避けたいです。
76
+
77
+ もし現状のやり方で不可能なら、CSSのdisplayの変更で行う予定です。
74
78
 
75
79
 
80
+
81
+
82
+

1

2022/01/17 07:45

投稿

mumu1354
mumu1354

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1,54 +1,55 @@
1
1
  WordPressでJavascriptの変数をPHPに受け渡したいのですが、うまくいきません。
2
2
 
3
3
  【状況】
4
-   1. nonceが使えていない
4
+ 1. javascript 403エラー check_ajax_referer()でnonce 無効となっているのが原因?
5
5
  2.javascriputからPHPに変数が渡らない(コードのAと記載の部分.
6
6
 
7
7
  ```php
8
8
  <?php
9
9
  //WordPressでXMLHttpRequestでPOST通信するための記述(function.phpに記載)
10
- function my_ajaxurl() {
10
+ function my_ajax() {
11
- ?>
11
+ wp_enqueue_script( 'ajax-script', get_template_directory_uri().'/js/test.js', null, '1.0.0', false );
12
- <script>
12
+ wp_localize_script('ajax-script','my_ajax_date',array(
13
- var ajaxurl = '<?php echo esc_url(admin_url( 'admin-ajax.php')); ?>';
13
+ 'ajax_url' => esc_url(admin_url( 'admin-ajax.php')),
14
+ 'nonce' => wp_create_nonce( 'my-ajax-nonce' ),
14
- </script>
15
+ 'action' => 'my-ajax-nonce',
15
- <?php
16
+ ));
16
- }
17
+ }
17
- add_action( 'wp_head', 'my_ajaxurl', 1 );?>
18
+ add_action( 'wp_enqueue_scripts', 'my_ajax', 1 );?>
18
19
  ```
19
20
  ```javascript
21
+ const data ={
20
- const url = ajaxurl; //phpから指定しておいた変数名を指定
22
+ ajaxurl: my_ajax_date.ajax_url,
23
+ action: my_ajax_date.action,
24
+ _nonce: my_ajax_date.nonce,
25
+ };
21
- if(window.fetch){
26
+ if(window.fetch){
22
- let params = new URLSearchParams();
27
+ let params = new URLSearchParams();
23
- params.append("action", "test");
28
+ params.append("action", data.action);
24
- params.append("msg", 'A(phpに渡したいデータ)');
29
+ params.append("msg", "A(phpに渡したいデータ)");
25
- params.append("nonce", "<?php echo wp_create_nonce( 'xxx' ); ?>");
30
+ params.append("nonce", data._nonce);
26
- fetch(ajaxurl,{
31
+ fetch(data.ajaxurl,{
27
- method:'POST',
32
+ method:'POST',
28
- credentials:"same-origin",
33
+ credentials:"same-origin",
29
- body:params
34
+ body:params
30
- }).then(function(response){
35
+ }).then(function(response){
31
- }, function(error){
36
+ }, function(error){
32
- });
37
+ });
33
- } else {
38
+ } else {
34
- alert('ご使用のブラウザはサポートしていません。Chrome, firefox, Edge等の最新版のブラウザをご使用下さい');
39
+ alert('ご使用のブラウザはサポートしていません。Chrome, firefox, Edge等の最新版のブラウザをご使用下さい');
35
- }
40
+ }
36
- }
37
41
  ```
38
42
  ```php
39
43
  <?php //(function.phpに記載)
40
- }
41
- add_action( 'wp_head', 'my_ajaxurl', 1 );
42
44
  function test() {
43
- $nonce = $_REQUEST['nonce'];
44
- if ( wp_verify_nonce( $nonce, 'xxxx' ) ) {
45
+ check_ajax_referer('my-ajax-nonce', '_nonce');
45
- $msg = filter_input( INPUT_POST , 'msg' );
46
+ $msg = filter_input( INPUT_POST , 'msg' );
46
47
  echo(A(Javascriptから渡ったデータ));
47
48
  die();
49
+
48
- }
50
+ }
49
- }
50
- add_action('wp_ajax_test', 'test');
51
+ add_action('wp_ajax_my-ajax-nonce', 'test');
51
- add_action('wp_ajax_nopriv_test', 'test');
52
+ add_action('wp_ajax_nopriv_my-ajax-nonce', 'test');
52
53
  ?>
53
54
 
54
55
  ```
@@ -57,3 +58,18 @@
57
58
  wp_create_nonceの使い方を参考:[WordPressでAJAX通信する方法](https://haniwaman.com/wordpress-ajax/)
58
59
  fetchの使い方を参考:[WordPress の Ajax 処理で fetch を試してみる](https://celtislab.net/archives/20180727/ajax-fetch/)
59
60
  ajax用のアクションフックの使い方を参照 [wordpressで使ってみるajaxの基本](https://unskilled.site/wordpress%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8Bajax%E3%81%AE%E5%9F%BA%E6%9C%AC/)
61
+
62
+ [2022/1/17 追記]
63
+ javascriputファイルにphpを書いていたため修正いたしました
64
+ ご指摘ありがとうございます。
65
+
66
+ その後Nonceについていろいろ調べながら勧めており
67
+ 1.[WordPressのAjaxにNonceを追加](http://dim5.net/wordpress/nonce-ajax.html)
68
+ 2.[WordPress, セキュア処理で使うnonce関数のちがい(CSRF対策)](https://tadtadya.com/wordpress-differences-between-secure-nonce-functions/#check_ajax_referer)
69
+ をもとに修正いたしました。
70
+
71
+ しかし、現状check_ajax_referer()でnonce が無効となり403エラーが発生しております。
72
+ 私自身nonceを扱うのが初めてなのですが、URLにパラメーターは必須なのでしょうか?
73
+
74
+
75
+