2016-06-29 13 views
2

お時間をいただきありがとうございます。ここに状況があります:

私はAndroidアプリケーションからいくつかのデータを投稿しようとしています。私はそれが動作しますが、$ユーザ名、$パスワード、および$の電子メールの値でをハードコーディングとき、批判的

<?php 
 
$db_name = "op-users"; 
 
$mysql_username = "******"; 
 
$mysql_password = "******"; 
 
$server_name = "***.***.***.***"; 
 

 
$con = mysqli_connect($server_name, $mysql_username, $mysql_password, 
 
$db_name); 
 

 
$username = $_POST["username"]; 
 
$password = $_POST["password"]; 
 
$email = $_POST["email"]; 
 

 
$statement = mysqli_prepare($con, "INSERT INTO users (username, password, 
 
email) VALUES (?, ?, ?)"); 
 
mysqli_stmt_bind_param($statement, "sss", $username, $password, $email); 
 
mysqli_stmt_execute($statement); 
 

 
$response = array(); 
 
$response["success"] = true; 
 

 
echo json_encode($response); 
 
?>

:まず、(Dログイン資格情報が正しい、私を信じて)私のPHPコードを検討それらの値を私のデータベースに入力してください。これは、このPHPが意図したとおりに動作していて、$ _POSTステートメントから値を受け取っていないことを示しているようです。

私のアプリが実際にPOST情報を送信していることがわかっている次のWiresharkキャプチャも考えてみましょう。 WIRESHARK CAPTURE

つまり、PHPは動作しますが、POSTリクエストを受信して​​いないようです。アプリケーションはPOSTデータを送信しますが、PHPページは投稿されたデータを取得していません。ちなみに、私が言ったように、値をハードコードするとき、アプリケーションに登録すると、ハードコードされた値がデータベースに保存されるため、アプリケーションがregister.phpに正常に接続していることがわかります。

誰かがトラブルシューティングの方法をお勧めしますか?ありがとう!

+0

問題をデバッグするだけで、フォームの 'method'属性をチェックしてください。' GET'か 'POST'ですか? –

+0

私は本当にあなたが非常に簡単で非常に安全なJSONにデータをポストするようにエンコードすることをアドバイスします。そのようなことをデバッグしようと時間を無駄にすることはありません。 – Borna

+0

私はMethod.POSTを持っています。これが適用されていることを確認する方法があるかどうか疑問に思っていますが、WiresharkのクリップはPOSTingであることを示唆しているようです。 – Treadle

答えて

0

をちょうどこの上で成果報告したいと思います。私のGoDaddyサーバーがWindowsを実行していたことがわかります。これは、POST配列の取得を妨げていました。私は.phpファイルを別のサーバにアップロードしてLinuxを実行した後、これを認識し、完璧に動作しました。だからGoDaddyは先に進んでLinuxサーバーに移行し、今すぐ動作します。つまり、私の問題は、遠く離れたWindowsサーバー上で実行されている目に見えない設定でした。これらの同じ現象が発生している場合は、Linuxサーバーを使用してみてください。

+0

実際には、実際には、正確に何が正しく設定されていないかまだ分かりません。 WindowsやLinuxはここでは重要ではありません。 –

+0

正解、何が間違っていたのか分かりません。しかし、私はどこかで、GETとPOSTリクエストがデフォルトでWindowsサーバー上で無効になっていると読んでいます。これは100%が症状が何であるかを説明しています。 – Treadle

+0

おそらく。幸運にも、Windowsとしてのサーバーとしての私の経験は限られています。しかし、GET要求が無効になっていると、クライアント/ブラウザからのエラーを除いて何も表示されません(ブラウザにurlを入力してEnterキーを押すとG​​ET要求です)。 POSTがブロックされていた場合、POSTを送信するときにサーバーからの応答はなく、クライアントからのエラーは表示されません。これらは問題が他の場所にあるように機能しました(おそらく、PHPのPOST関連の設定で)。 –

0

あなたが適切な値を受信して​​いる確認するためにあなたのphpファイルでこれを入れてください:

print_r($_POST);

+0

私はそれについて考えましたが、実際にブラウザがページにアクセスしていないので、何も見ることができませんでした。言い換えれば、アプリはバックグラウンドでURLに接続しているので、何が表示されているのかわかりません。 – Treadle

+1

@Treadle、file_put_contents( "fileToSave"、json_encode($ _ POST));そうすれば、受信したデータを確認することができます。 – Borna

+0

この行を追加すると、ページが読み込まれません。ファイル名をtest.txtに変更し、そのファイルをサーバーにアップロードすることを忘れませんでした。奇妙な。しかし、POSTの内容を見るのは本当にうれしいでしょう。それが重要です。 – Treadle

関連する問題