0

我是 Android 的初学者,我有以下代码:(在 PHP 端,用户登录到我的 Android 应用程序后)

session_start();
$username = $_POST['username'];
$password = $_POST['password'];

$query = mysql_query("SELECT * FROM users WHERE c_name='$username' AND c_password='$password'") or die("Could not run query!");

$rows = mysql_num_rows($query);
if($rows == 0){
  echo "No user was found";
}else{

  $row = mysql_fetch_assoc($query);
  $_SESSION['id'] = $row['id'];
  $_SESSION['username'] = $row['c_name'];   
  echo "User Found";     
  }

在我想获取登录用户 ID 的文件中,我有:

session_start();
$r_name = $_POST['r_name'];
$r_address = $_POST['r_address'];
$r_phone = $_POST['r_phone'];
$r_username = $_POST['r_username'];

$req_id = $_SESSION['id'];
$req_username = $_SESSION['username'];

$query_add = "INSERT INTO data_collection VALUES ('','$r_name','$r_address','$r_phone','$r_username','$req_id')";

$query_exec = mysql_query($query_add) or die("Could not insert to db");
if($query_exec){
echo "Success";
}else
 echo "Error in query";

以及将数据发布到第二个 php 文件的 Android 端:

public void onClick(View v) {
// TODO Auto-generated method stub
String s_res_name = res_name.getText().toString();
String s_res_address = res_address.getText().toString();
String s_res_phone = res_phone.getText().toString();


ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("r_name", s_res_name));//c_name is the value in PHP and in the mySQL db
nameValuePairs.add(new BasicNameValuePair("r_address", s_res_address));
nameValuePairs.add(new BasicNameValuePair("r_phone", s_res_phone));

            try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://10.0.2.2/thesis/data_collection.php");
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();

                ResponseHandler<String> responseHandler = new BasicResponseHandler();
                final String response = httpclient.execute(httppost,responseHandler);

                tv.setText(""+response);
                if (response.equals("Success")){
                    Toast toast = Toast.makeText(getApplicationContext(), "Data Collection task successfully created", Toast.LENGTH_LONG);
                    toast.show();
                    finish();                       
                }       
            }catch(Exception e){
                Log.e("log.tag","Error in http connection"+e.toString());
            }
        }
    });

如何在第二个 php 文件中获取会话 ID 并将其存储在新表中?这段代码在网络上运行良好,当我通过表单发布数据时,但在 android 端它没有......

谢谢您的帮助。

4

2 回答 2

0

如何在第二个 php 文件中获取会话 ID 并将其存储在新表中?

会话 ID 是请求的一部分。如果您的意思是$_SESSION['id']您需要先打电话session_start()或配置会话自动启动。

我必须在 Android 端做某事吗?谢谢您的帮助。

是的,您需要传递真实的会话 ID(不是那个$_SESSION['id']值),默认情况下它是一个 cookie 或一个通常命名为 PHPSESSID 的查询参数。另请参见会话名称。如果您没有在请求中传递该信息,PHP 不知道该请求应该属于哪个会话。

有关更多信息,请在此处继续:http: //php.net/sessions

于 2013-05-05T17:45:29.497 回答
0

在我的应用程序中,我这样做:我有 PHP 脚本,可以进行真正的登录。此脚本将字符串返回为“HTML 页面”。该页面在应用程序中被擦除,字符串被解析并且来自该字符串的数据在应用程序中用于登录。

返回字符串示例:

nick|user_id|hashed_security_string

现在在 nick 你有用户名,user_id 是他来自 DB 的 ID,而 hashed_security_string 是用于安全目的的东西,例如,当你将应用程序中的某些内容提交到 DB 时,这个字符串与数据一起发送并在服务器上控制如果用户真的登录或如果用户存在。

于 2013-05-05T17:54:26.357 回答