2016-11-19 1 views
-1

Ich möchte nur JSON-Daten von einer URL als eine Variable in meiner Aktivität verwenden. Es funktioniert problemlos mit Listview-Arrays, aber das ist zu lang für meinen Wunsch, denke ich. Was soll ich tun? Ich habe einige Beispiele gefunden, aber httpclient ist jetzt veraltet. Ich möchte deswegen meine Bibliothek nicht herunterstufen.Warum ist es so schwer, nur 1 Zeile mysql Daten in Android zu bekommen?

Zum Beispiel kann ich eine Daten aus JSON-Daten als Header in meiner Symbolleiste verwenden. Wie kann ich?

meine php-json Seite;

$uid= $_GET['device_id']; 

$result = "SELECT `contact_name`,`username`,`device_id` FROM `users` WHERE `device_id`='{$uid}' AND `device_match`=1 AND `suspended`=0 LIMIT 1"; 
$result = mysql_query($result); 
$num = mysql_num_rows($result); 

if ($num>0) { 
    $row = mysql_fetch_array($result); 
    $response["success"] = 1; 
    $response["contact_name"] = $row['contact_name']; 
    $response["link"] = "index.php"; 
} else { 
    $response["success"] = 0; 
    $response["contact_name"] = ""; 
    $response["link"] = "login.php"; 
} 

echo json_encode($response); 

Ich benutze gerne diese Daten im Inneren;

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.portal_activity); 

    // I know thats stupid, just for explanation what I want to do. 

    final String username = $response["contact_name"]; 
    final String link= $response["link"]; 


    //like below; 
    Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); 
    toolbar.setTitle(username); 

    //or like to set into a textview; 

    TextView mytext1= (TextView)findViewById(R.id.mytext1); 
    mytext1.setText(link); 
} 

Mein Skill-Level: ziemlich gut PHP, Anfänger auf Android/Java

+0

Ihr Code ist offen für ** SQL-Injektionen ** - stellen Sie sich vor, jemand sendet die UID ''; DROP TABLE users - '- Verwenden Sie bitte parametrisierte Abfragen, um Sie vor dieser Sicherheitslücke zu schützen. dazu 'mysqli' oder' PDO'-Funktionen verwenden, da 'mysql'-Funktionen schon länger veraltet sind und in PHP7 komplett ** entfernt sind. –

+0

was ist das Problem in Ihrem Code? – Karthi

+0

Ich weiß, ich schreibe einfach den Kabeljau wegen meiner Anfrage. Ich schütze auch meine Seiten. Meine PHP-Seiten sind nur mit einigen Benutzer-Agent-Techniken von meiner App aus zugänglich. – Looden

Antwort

0

Sie müssen Ihren Rückgabetyp in Ihrem Header deklarieren.

header('Content-type: javascript/json'); 
// TODO: Add logic here 
echo json_encode($response); 

Beachten Sie auch, dass Ihr SQL SQL-Injektionen anfällig sein können, behandeln GET/POST-Daten als nicht vertrauenswürdigen Quellen. Sie wissen nicht, was sie enthalten, also fügen Sie sie niemals direkt an Ihr SQL an.

Beispiel eines weniger abgeschrieben Treiber verwenden:

$con = new PDO('mysql:host=localhost;dbname=some_db', 'some_user', 'some_pass'); 
// ? is a placeholder 
$smpt = $con->Prepare('SELECT * FROM some_table WHERE some_col = ?'); 
// add the value to the placeholder securely 
$smpt->execute(['someValue']); 
$result = $smpt->fetch(); 

Auch seien Sie vorsichtig mit den Informationen, die Sie Rückkehr in Ihrer Antwort sind, weil jemand rückgängig machen kann Ihre Anwendung entwickeln und bösartige IDs senden und Benutzerinformationen erhalten. Erwägen Sie die Verwendung von handshakes.

+0

danke Jungs für SQL-Injektion Warnungen. Aber ich habe dort wirklich kein Problem. Ich habe den Code kürzer gemacht. habe genug Filterfunktionen auf der PHP-Seite. Mein Problem in der Java-Seite. – Looden

+0

Sind Sie sicher? 'json_encode()' braucht 'true' als zweiten Parameter & Wenn jemand Ihre Anfragen innerhalb der APP zurückentwickelt und diesen URI findet, kann er bösartige IDs senden. – KDOT

+0

'json_encode()' nimmt * nicht * einen booleschen Wert als zweiten [Parameter] (http://php.net/manual/en/function.json-encode.php#refsect1-function.json-encode-parameters). 'json_decode()' tut das aber. –

Verwandte Themen