2016-03-20 16 views
0

ユーザーがAndroidアプリにログインできるようにしようとしています。サーバーにユーザー名とパスワードを送信すると、ユーザーの詳細が記載されたJSON配列が返されます。配列を返すだけでなく、HTMLコードも読み込みます。誰がなぜこれが起こっているのか、それを修正する方法を知っていますか?ありがとうPHPサーバーから奇妙な結果が得られます

ここはサーバーからの応答です。同じHTMLブロックが5回繰り返し、必要なJSON配列が続きます。

<br /> 
    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'> 
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>(!)</span> Notice: Use of undefined constant student_id - assumed 'student_id' in C:\wamp64\www\fetchuserdata.php on line <i>17</i></th></tr> 
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr> 
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr> 
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0005</td><td bgcolor='#eeeeec' align='right'>241296</td><td bgcolor='#eeeeec'>{main}()</td><td title='C:\wamp64\www\fetchuserdata.php' bgcolor='#eeeeec'>...\fetchuserdata.php<b>:</b>0</td></tr> 
    </table></font> 
<br /> 
    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'> 
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>(!)</span> Notice: Use of undefined constant student_id - assumed 'student_id' in C:\wamp64\www\fetchuserdata.php on line <i>17</i></th></tr> 
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr> 
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr> 
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0005</td><td bgcolor='#eeeeec' align='right'>241296</td><td bgcolor='#eeeeec'>{main}()</td><td title='C:\wamp64\www\fetchuserdata.php' bgcolor='#eeeeec'>...\fetchuserdata.php<b>:</b>0</td></tr> 
    </table></font> 
<br /> 
    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'> 
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>(!)</span> Notice: Use of undefined constant student_id - assumed 'student_id' in C:\wamp64\www\fetchuserdata.php on line <i>17</i></th></tr> 
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr> 
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr> 
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0005</td><td bgcolor='#eeeeec' align='right'>241296</td><td bgcolor='#eeeeec'>{main}()</td><td title='C:\wamp64\www\fetchuserdata.php' bgcolor='#eeeeec'>...\fetchuserdata.php<b>:</b>0</td></tr> 
    </table></font> 
<br /> 
    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'> 
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>(!)</span> Notice: Use of undefined constant student_id - assumed 'student_id' in C:\wamp64\www\fetchuserdata.php on line <i>17</i></th></tr> 
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr> 
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr> 
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0005</td><td bgcolor='#eeeeec' align='right'>241296</td><td bgcolor='#eeeeec'>{main}()</td><td title='C:\wamp64\www\fetchuserdata.php' bgcolor='#eeeeec'>...\fetchuserdata.php<b>:</b>0</td></tr> 
    </table></font> 
<br /> 
    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'> 
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>(!)</span> Notice: Use of undefined constant student_id - assumed 'student_id' in C:\wamp64\www\fetchuserdata.php on line <i>17</i></th></tr> 
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr> 
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr> 
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0005</td><td bgcolor='#eeeeec' align='right'>241296</td><td bgcolor='#eeeeec'>{main}()</td><td title='C:\wamp64\www\fetchuserdata.php' bgcolor='#eeeeec'>...\fetchuserdata.php<b>:</b>0</td></tr> 
    </table></font> 
{"student_id":10381109,"fname":"Jack":"lname":"Finan","username":"123","password":"123"} 

これは私のJavaコードです:

public class MainActivity extends AppCompatActivity implements View.OnClickListener 
{ 

TextView responseView; 
EditText etUsername; 
EditText etPassword; 
ProgressBar progressBar; 
Button bLogin; 
static final String SERVER_ADDRESS = "http://192.168.1.11:8080/"; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    responseView = (TextView) findViewById(R.id.responseView); 
    etUsername = (EditText) findViewById(R.id.etUsername); 
    etPassword = (EditText) findViewById(R.id.etPassword); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 
    bLogin = (Button) findViewById(R.id.bLogin); 
    bLogin.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) 
{ 
    switch(v.getId()){ 
     case R.id.bLogin: 
      String username = etUsername.getText().toString(); 
      String password = etPassword.getText().toString(); 

      User user = new User(username, password); 

      getUser(user); 
      break; 
    } 
} 

public void getUser(User user) 
{ 
    new GetJSONData(user).execute(); 
} 

class GetJSONData extends AsyncTask<Void, Void, String> // class to fetch javascript object data 
{ 
    User user; // variable 

    GetJSONData(User user) // constructor 
    { 
     this.user = user; 
    } 

    protected void onPreExecute() // methods below 
    { 
     progressBar.setVisibility(View.VISIBLE); 
     responseView.setText(""); 
    } 

    protected String doInBackground(Void... urls) 
    { 

     HttpURLConnection connection = null; 
     BufferedReader reader = null; 

     try { 
      URL url = new URL(SERVER_ADDRESS + "fetchuserdata.php"); // the server we hit and the course code we want entered 
      connection = (HttpURLConnection) url.openConnection(); // open connection 
      connection.setRequestMethod("POST"); 

      Uri.Builder builder = new Uri.Builder().appendQueryParameter("username", user.username).appendQueryParameter("password",user.password); 
      String query = builder.build().getEncodedQuery(); 
      OutputStream os = connection.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os,"UTF-8")); 
      writer.write(query); 
      writer.flush(); 
      writer.close(); 
      os.close(); 

      connection.connect(); // connect 

      InputStream stream = connection.getInputStream(); // create input stream of data 
      reader = new BufferedReader(new InputStreamReader(stream)); // create buffered reader to help read input stream of data 

      StringBuilder buffer = new StringBuilder(); 
      String line; 

      while ((line = reader.readLine()) != null) { 
       buffer.append(line).append("\n"); 
      } 

      return buffer.toString(); 
     } 
     catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 
     finally 
     { 
      if(connection != null) 
      { 
       connection.disconnect(); 
      } 
      try 
      { 
       if(reader != null) 
       { 
        reader.close(); 
       } 
      } 
      catch(IOException e) 
      { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 

    protected void onPostExecute(String result) 
    { 
     if(result == null) { 
      result = "THERE WAS AN ERROR"; 
     } 
     progressBar.setVisibility(View.GONE); 
     Log.i("INFO", result); 
     responseView.setText(result); 
    } 
} 
} 

そしてPHP:

<?php 
$con=mysqli_connect('localhost','root','164f9ogC!','user'); 

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

$statement = mysqli_prepare($con, "SELECT * FROM user WHERE username = ? AND password = ?"); 
mysqli_stmt_bind_param($statement, "ss", $username, $password); 
mysqli_stmt_execute($statement); 

mysqli_stmt_store_result($statement); 
mysqli_stmt_bind_result($statement, $student_id, $fname, $lname, $username, $password); 

$user = array(); 

while(mysqli_stmt_fetch($statement)){ 
    $user[student_id] = $student_id; 
    $user[fname] = $fname; 
    $user[lname] = $lname; 
    $user[username] = $username; 
    $user[password] = $password; 
} 

echo json_encode($user); 

mysqli_stmt_close($statement); 

mysqli_close($con); 
?> 
+0

その結果は警告です。それを読んで。この警告を表示する部分が表示されます。 – Raizal

答えて

3

あなたがPHPでエラーを持っているので、あなたがHTMLを取得しています。 HTMLのブロックを読むと、エラーがあなたのwhileループ内にあることがわかります。

PHPの配列にはインデックスの引用符を付ける必要があります。それ以外の場合は、定数にアクセスしようとしています。

+0

うん、それだった。どうもありがとう。 –

1

まずはmysqli_ *の使用を中止してください。これは廃止され、非常に安全です。非常に安全な状態でPDOに移動します。

$ userの引用符を追加することも忘れました。

while(mysqli_stmt_fetch($statement)){ 
    $user['student_id'] = $student_id; 
    $user['fname'] = $fname; 
    $user['lname'] = $lname; 
    $user['username'] = $username; 
    $user['password'] = $password; 
} 

私はJavascriptがPHPは、一般的にそのような情報を得るカント、あなたが持っている唯一のエコータグは$ユーザータグのためであるとして、HTMLを出力しているものであることを確認することができます。

私はJavascriptをよく知らないので、私が言うことができるのはあなたのJavascriptを鋭く見ているだけです。

関連する問題