2011-04-05 74 views
1

我正在使用將應用程序發送到PHP服務器的Android應用程序。 Android應用程序應首先登錄,如果登錄成功,則開始發送數據。Android PHP服務器

這是PHP頁面(登錄):

<?php 
$data = file_get_contents('php://input'); 
$json = json_decode($data); 
$id=$json->{'im'}; 

$con = mysql_connect('localhost','root','1111'); 
mysql_select_db('root') or die(' '); 
$sql = "SELECT name FROM chiled WHERE `im` LIKE $id "; 

$query = mysql_query($sql); 

$a=mysql_fetch_row($query); 
print(json_encode($a[0])); 
$n=$json->{'name'}; 


mysql_close(); 
?> 

PHP頁面接收來自Android應用並且檢查該ID是否存在的ID在DB然後發送響應於Android應用。根據接收到的請求,應用程序將決定登錄是否成功,如果登錄成功,則會開始發送數據。

您認爲在PHP服務器中接收數據的最佳方式是什麼(如果登錄成功)?我可以使用新頁面接收(在Android App中創建一個連接到另一個頁面的新連接,然後開始發送數據)數據,還是可以在同一登錄頁面中執行此操作?

回答

0

如果登錄成功,您可以啓動一個存儲會話和驗證的php會話。大多數網站都以這種方式工作(例如Stack Overflow)。

默認情況下,php中的會話通過cookie PHPSESSID傳遞。所以,如果登錄是正確的,那麼你可以返回cookie,並在本地(服務器端)將會話與用戶相關聯。

此外,PHP允許創建和操作一個無cookie的會話。

唯一的細節是,您必須將會話與ip相關聯,因爲安全問題。

因此,週期可以是:

的Android --user /密碼 - >的login.php --- PHPSESSID - > Android的

的Android --phpsessid - > content_page.php - - 信息 - >安卓

,如果您還沒有登錄(或會話已過期)

的Android --phpsessid - > content_page.php ---錯誤頁面(你是不允許的) ---> android

+0

您是否有sessio的示例ñ或一個很好的鏈接,我不知道會話 – m7m 2011-04-05 16:44:58

+0

http://www.php.net/manual/en/book.session.php它包括示例,語法和..以及所有。請記住,默認情況下,會話通過cookie返回給客戶端。一個好的起點也是http://www.php.net/manual/en/function.session-start.php – magallanes 2011-04-05 16:46:05

0

你可以在同一個登錄頁面上發佈,發佈一個變量來說明如果登錄並在php中有if(login = true),或者你可以在成功登錄後建立一個新的連接到不同的頁面,這取決於你,取決於你在做什麼。

+0

但如果我讓登錄的任何身體知道後,一個新的頁面新的連接新頁面的鏈接可以在沒有登錄頁面的情況下訪問 – m7m 2011-04-05 16:07:11

0

您可以使用http響應代碼嚮應用程序發送失敗信號? http://php.net/manual/en/function.header.php

使用普通http基本認證會發生401錯誤。不知道Android客戶端如何迴應。

它應該至少應該讓您訪問響應代碼。 200成功,其他不成功。 (401,404)

1

您真的應該爲此創建一個Web服務(SOAP/WSDL),因爲它將摒棄PHP和Android/Java之間的數據傳輸。SOAP =(簡單對象訪問協議)

香草PHP方法:

http://davidwalsh.name/web-service-php-mysql-xml-json

至於用戶認證系統,我會考慮完善的框架工程(如Zend公司等)以獲得最佳實踐,甚至可能使用框架本身爲您的Android應用程序構建認證系統和WSDL服務。

ZF方法:

http://www.opensourceuniverse.com/zend-framework/quickstart-web-services-with-soap-and-zend-framework-263.html

消費在Android上的SOAP:

http://code.google.com/p/ksoap2-android/