質問編集履歴

6

修正

2018/07/11 09:18

投稿

annindofu
annindofu

スコア13

test CHANGED
@@ -1 +1 @@
1
- JSONをPHPでPOST信してdecodeしたらSyntax errorになります。
1
+ JSONをPHPでPOSTで受信したら、string(0) "" になります。
test CHANGED
@@ -4,23 +4,27 @@
4
4
 
5
5
  ```ここに言語を入力
6
6
 
7
- $ary = array(
7
+ $ary = [
8
8
 
9
- "function" => "login",
9
+ 'function'=> 'login',
10
10
 
11
- "open" => array(
11
+ 'open' => [
12
12
 
13
- "userID" => $_POST['userID'],
13
+ [
14
14
 
15
- "password" => $_POST['password']
15
+ 'userID' => $_POST['userID'],
16
16
 
17
- )
17
+ 'password' => $_POST['password']
18
18
 
19
- );
19
+ ]
20
20
 
21
+ ]
21
22
 
23
+ ];
22
24
 
25
+
26
+
23
- $data = json_encode($ary);
27
+ $data = json_encode($ary);
24
28
 
25
29
 
26
30
 
@@ -66,23 +70,7 @@
66
70
 
67
71
  補足:
68
72
 
69
- ```ここに言語を入力
73
+ ```ここに言語を入力
70
-
71
- $ary = array(
72
-
73
- "function" => "login",
74
-
75
- "open" => array(
76
-
77
- "userID" => $_POST['userID'],
78
-
79
- "password" => $_POST['password']
80
-
81
- )
82
-
83
- );
84
-
85
-
86
74
 
87
75
  $data = json_encode($ary);
88
76
 
@@ -100,7 +88,7 @@
100
88
 
101
89
 
102
90
 
103
- しかし、POSTするとSyntax errorとなりました。
91
+ しかし、受信した側ではNULLではありませんでしたが、string(0) ""となりました。
104
92
 
105
93
  ※さくらサーバー置いてある、テストURLに送信しました。
106
94
 
@@ -112,99 +100,25 @@
112
100
 
113
101
 
114
102
 
115
- $response = array('response' => 'OK');
103
+ if ($json_string === NULL) {
116
104
 
117
- echo json_encode($response);
105
+ echo "NULL";
118
106
 
107
+ }else{
119
108
 
120
-
121
- // $obj = json_decode(str_replace('"','"',$json_string),true);
122
-
123
- $obj = json_decode($json_string);
124
-
125
-
126
-
127
- if (json_last_error() === JSON_ERROR_NONE) {
128
-
129
- echo "デコード成功: ".PHP_EOL;
130
-
131
- var_dump($obj);
109
+ var_dump($json_string);
132
110
 
133
111
  }
134
112
 
135
- else {
136
-
137
- echo "デコード失敗: ".PHP_EOL;
138
-
139
- echo "エラーメッセージ: ".json_last_error_msg().PHP_EOL;
140
-
141
- }
142
-
143
-
144
-
145
- exit;
146
-
147
113
  ```
148
114
 
149
-
150
-
151
115
  結果:
152
-
153
- > {"response":"OK"}NULL デコード失敗: エラーメッセージ: Syntax error
154
-
155
-
156
-
157
- 補足:
158
-
159
- ```ここに言語を入力
160
-
161
- $json_string = file_get_contents('php://input');
162
-
163
- var_dump($json_string);
164
-
165
- exit;
166
-
167
- ```
168
-
169
- 上記の中身は、
170
116
 
171
117
  > string(0) ""
172
118
 
173
119
 
174
120
 
175
- と出てきました。どうやら値が取れてないようです・・・
121
+ どうやら値が取れてないようです・・・
176
-
177
-
178
-
179
- 送信した側では下記のように出ました。
180
-
181
- ```ここに言語を入力
182
-
183
- file_get_contents({"response":"OK"}デコード成功:
184
-
185
- object(stdClass)#1 (2) {
186
-
187
- ["function"]=>
188
-
189
- string(5) "login"
190
-
191
- ["open"]=>
192
-
193
- object(stdClass)#2 (2) {
194
-
195
- ["userID"]=>
196
-
197
- string(4) "user"
198
-
199
- ["password"]=>
200
-
201
- string(4) "pass"
202
-
203
- }
204
-
205
- }
206
-
207
- ```
208
122
 
209
123
 
210
124
 

5

加筆

2018/07/11 09:18

投稿

annindofu
annindofu

スコア13

test CHANGED
File without changes
test CHANGED
@@ -180,7 +180,7 @@
180
180
 
181
181
  ```ここに言語を入力
182
182
 
183
- PHP Warning: file_get_contents({"response":"OK"}デコード成功:
183
+ file_get_contents({"response":"OK"}デコード成功:
184
184
 
185
185
  object(stdClass)#1 (2) {
186
186
 
@@ -204,8 +204,6 @@
204
204
 
205
205
  }
206
206
 
207
- )
208
-
209
207
  ```
210
208
 
211
209
 

4

加筆

2018/07/11 07:19

投稿

annindofu
annindofu

スコア13

test CHANGED
File without changes
test CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
  しかし、POSTすると、Syntax errorとなりました。
104
104
 
105
- POSTMANの使い方がいまいちよ分かなくJSON Serverが使えなかったので、テストURLとして、ワードプレスのテスト個別ページに送信してい
105
+ くらサーバー置いてある、テストURLに送信しました
106
106
 
107
107
 
108
108
 
@@ -150,9 +150,7 @@
150
150
 
151
151
  結果:
152
152
 
153
- > Notice: wp_localize_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or login_enqueue_scripts hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.0.) in /home/example/example/example/wp-includes/functions.php on line 4161
154
-
155
- {"response":"OK"}デコード失敗: エラーメッセージ: Syntax error
153
+ > {"response":"OK"}NULL デコード失敗: エラーメッセージ: Syntax error
156
154
 
157
155
 
158
156
 
@@ -178,10 +176,42 @@
178
176
 
179
177
 
180
178
 
179
+ 送信した側では下記のように出ました。
180
+
181
+ ```ここに言語を入力
182
+
183
+ PHP Warning: file_get_contents({"response":"OK"}デコード成功:
184
+
185
+ object(stdClass)#1 (2) {
186
+
187
+ ["function"]=>
188
+
189
+ string(5) "login"
190
+
191
+ ["open"]=>
192
+
193
+ object(stdClass)#2 (2) {
194
+
195
+ ["userID"]=>
196
+
197
+ string(4) "user"
198
+
199
+ ["password"]=>
200
+
201
+ string(4) "pass"
202
+
203
+ }
204
+
205
+ }
206
+
207
+ )
208
+
209
+ ```
210
+
211
+
212
+
181
213
  JSONの記述がおかしいのでしょうか?
182
214
 
183
- それとも、json_decodeの仕方が間違っていますでしょうか?
184
-
185
215
 
186
216
 
187
217
  教えてくださいm(_ _)m

3

加筆

2018/07/11 07:15

投稿

annindofu
annindofu

スコア13

test CHANGED
File without changes
test CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
  しかし、POSTすると、Syntax errorとなりました。
104
104
 
105
- ※テストURLとして、ワードプレスのテスト個別ページに送信しています。
105
+ POSTMANの使い方がいまいちよく分からなく、JSON Serverが使えなかったので、テストURLとして、ワードプレスのテスト個別ページに送信しています。
106
106
 
107
107
 
108
108
 

2

加筆

2018/07/11 02:10

投稿

annindofu
annindofu

スコア13

test CHANGED
File without changes
test CHANGED
@@ -102,6 +102,8 @@
102
102
 
103
103
  しかし、POSTすると、Syntax errorとなりました。
104
104
 
105
+ ※テストURLとして、ワードプレスのテスト個別ページに送信しています。
106
+
105
107
 
106
108
 
107
109
  ```ここに言語を入力
@@ -183,3 +185,9 @@
183
185
 
184
186
 
185
187
  教えてくださいm(_ _)m
188
+
189
+
190
+
191
+ 開発環境:
192
+
193
+ PHP 7.1.16、vagrant(centOS7)

1

質問の補足

2018/07/11 02:06

投稿

annindofu
annindofu

スコア13

test CHANGED
File without changes
test CHANGED
@@ -64,7 +64,43 @@
64
64
 
65
65
  ```
66
66
 
67
+ 補足:
68
+
69
+ ```ここに言語を入力
70
+
67
- 上記のソースをPOSTして、
71
+ $ary = array(
72
+
73
+ "function" => "login",
74
+
75
+ "open" => array(
76
+
77
+ "userID" => $_POST['userID'],
78
+
79
+ "password" => $_POST['password']
80
+
81
+ )
82
+
83
+ );
84
+
85
+
86
+
87
+ $data = json_encode($ary);
88
+
89
+
90
+
91
+ var_dump($data);
92
+
93
+ exit;
94
+
95
+ ```
96
+
97
+ 上記の結果は、下記のように出ましたので、$_POST['userID'],$_POST['password']の値は取得できてました。
98
+
99
+ > string(63) "{"function":"login","open":{"userID":"user","password":"pass"}}"
100
+
101
+
102
+
103
+ しかし、POSTすると、Syntax errorとなりました。
68
104
 
69
105
 
70
106
 
@@ -74,7 +110,15 @@
74
110
 
75
111
 
76
112
 
113
+ $response = array('response' => 'OK');
114
+
115
+ echo json_encode($response);
116
+
117
+
118
+
77
- $obj = json_decode(str_replace('"','"',$json_string),true);
119
+ // $obj = json_decode(str_replace('"','"',$json_string),true);
120
+
121
+ $obj = json_decode($json_string);
78
122
 
79
123
 
80
124
 
@@ -94,11 +138,41 @@
94
138
 
95
139
  }
96
140
 
141
+
142
+
143
+ exit;
144
+
97
145
  ```
98
146
 
99
- 上記で受け取ると、
100
147
 
101
- Syntax errorになります。
148
+
149
+ 結果:
150
+
151
+ > Notice: wp_localize_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or login_enqueue_scripts hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.0.) in /home/example/example/example/wp-includes/functions.php on line 4161
152
+
153
+ {"response":"OK"}デコード失敗: エラーメッセージ: Syntax error
154
+
155
+
156
+
157
+ 補足:
158
+
159
+ ```ここに言語を入力
160
+
161
+ $json_string = file_get_contents('php://input');
162
+
163
+ var_dump($json_string);
164
+
165
+ exit;
166
+
167
+ ```
168
+
169
+ 上記の中身は、
170
+
171
+ > string(0) ""
172
+
173
+
174
+
175
+ と出てきました。どうやら値が取れてないようです・・・
102
176
 
103
177
 
104
178