0

我学习 android 并尝试使用 PHP 脚本和 WAMP 服务器编写一些代码来验证用户名和密码。我不断从我的 PHP 脚本中收到未定义的索引错误。据我所知,这意味着我的 PHP 脚本无法从 URL 访问数据。这是相关的代码。任何帮助表示赞赏。

//build url data to be sent to server
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("username",username));
        nameValuePairs.add(new BasicNameValuePair("password",password));

        String result = "";
        InputStream is = null;
        //http post
        try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://10.0.2.2/PasswordCheck.php");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        }catch(Exception e){
            Log.e("Connection", "Error in http connection "+e.toString());
        }

这是我的 PHP 脚本

<?php
mysql_connect("localhost", "root", "") or die("could not connect to mysql");
mysql_select_db("drop-in") or die("database not found");

$username = $_POST["username"];
$suppliedPassword = $_POST["password"];
$databasePassword = "";
$output = "false";
$query = mysql_query("SELECT Password FROM users WHERE Username = '$username'") or die("query failed");
if(mysql_num_rows($query) > 0){
    $row = mysql_fetch_assoc($query); 
    $databasePassword = $row['password'];
    if($databasePassword == $suppliedPassword)
    {
        $output = "true";
    }
}
    print($output);
    mysql_close();
?>

这里是服务器回复的图片

http://imgur.com/sQStI2D

编辑:所以我发现即使 PHP 脚本给出了这些错误,$username 和 $password 变量也包含我的 android 应用程序试图传递的值。然而,这些错误的存在仍然困扰着我的代码,因为错误表的 HTML 在响应中被发送回 android 应用程序

4

3 回答 3

1

在我看来,您的 Android 代码似乎没有发布“用户名”和“密码”字段,这就解释了为什么 PHP 脚本找不到它们。

new ArrayList<NameValuePair>();通过查看此代码示例,在您的代码中, arrayList 的长度可能会丢失:看起来应该如此new ArrayList<NameValuePair>(2);,您应该尝试使用它,看看是否可以解决问题。

于 2013-08-21T01:46:44.133 回答
0

原来这是一个简单的拼写错误。我在循环中的“密码”一词中使用了小写字母“p”,而不是大写字母。奇怪的是它导致了它所做的错误。

于 2013-08-21T04:11:39.490 回答
0

您可以在 PHP 中尝试 json_decode() 函数:

尝试在您的服务器上创建一个文件并将 android 请求的内容放入简单的文本文件中,您将获得数组输出。在那个文件中。

在您的服务器上的 .php 文件中写入以下代码:

<?php
$data=file_put_content(collect.txt, $_POST);
 // if you got to know object or array name from txt file use it.
$array=json_decode($data, true) // for array output.
print_r($array);
?>

如果您不想从文件中读取,如果您知道数组名称,则可以直接在 json 对象中使用

<?php

$array=json_decode($data) // remove true for use as an object output.
print_r($array);
?>

一旦你得到你的数组,就为新变量赋值,然后对它们做任何你想做的事情。根据您的要求更新数据库或任何内容

于 2015-08-31T17:41:49.567 回答