2013-05-05 49 views
0

我在Android的初学者,我有以下代码: Android的PHP - 存储会话到MySQL数据库

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";  
    } 

在文件(在PHP端,用户登录到我的Android应用程序后)在这里我想获得我的人是登录的用户的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"; 

和Android端的数据帖到2 PHP文件:

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侧它不...

谢谢你的帮助。

+0

实际上你的问题是什么,$ req_id = $ _SESSION ['id'];您已获得会话ID – 2013-05-05 17:41:35

+0

您的问题是插入表格还是获取会话ID – 2013-05-05 17:42:02

+0

您好。我强烈建议使用Cookie来管理您的用户数据。 – 2013-05-05 17:42:17

回答

0

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

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

我必须在Android方面做些什么吗?感谢您的帮助。

是的,你需要通过真正会话ID(不是$_SESSION['id']值),这是一个cookie或查询参数通常默认名为PHPSESSID。另请参阅会话名称。如果您不通过请求传递该信息,PHP不知道该请求应属于哪个会话。

欲了解更多信息,请继续在这里:http://php.net/sessions

+0

你可能有一个真实会话ID的例子请在Android端? – Elona 2013-05-05 17:50:01

+0

@Beginner:不,这其实并不是我手边的例子,对不起。检查如何从第一个响应中获取cookie,以及如何在第二个请求中使用它们。这通常会做到这一点,但它也取决于你在android侧的工作流程,所以我不能举一个简单的例子。 – hakre 2013-05-05 17:53:51

0

在我的应用我做这种方式: 我有PHP脚本,那些真正的登录。该脚本将字符串作为“HTML页面”返回。该页面在应用程序中是erad,字符串被解析并且来自该字符串的数据在应用程序中用于登录。返回字符串的

例子:

nick|user_id|hashed_security_string 

现在尼克你的用户名,user_id是他的ID从DB和hashed_security_string被用于安全目的的东西时,你比如提交您的应用程序的东西DB,如果用户确实已记录或存在用户,则此字符串将与数据一起发送并在服务器上进行控制。

+0

谢谢你的回复..我怎样才能返回在android端的HTML字符串? 我想要做的是检索在android端的2个会话,并将它们发布在第二个php文件中以及表格中。 这是您如何做到的? – Elona 2013-05-05 17:58:29

+0

我正在使用套接字。就像我想将页面内容加载到变量一样。例如,我打电话给site:http://www.example.com/login.php,然后填写POST变量并发送它们。所以基本上我手动创建和发送表单。我得到的结果与通过浏览器显示页面相同。这样,我可以拥有几乎相同的登录脚本,用于Web和我的应用程序。我不完全知道在Android中,我正在使用它与iOS。我正在使用这样的东西:http://stackoverflow.com/questions/7118127/loading-data-from-site-as-stringandroid – 2013-05-05 18:01:51