Codice PHP:
include "dbconn.inc"; //Connessione database
if(!isset ($_REQUEST[rich])){
echo "Nessuna richiesta ricevuta.";
exit();
}
$richiesta = $_REQUEST[rich]; //ID richiesta
$username = $_REQUEST[user];
$password = $_REQUEST[pass];
$loginverificato=false;
//Verifichiamo che username e password coincidano
$sql="select * from utenti where username = '$username' and password = '$password'";
$res=mysql_query($sql,$ConnessioneDB);
while ($records=mysql_fetch_assoc($res)) {
$loginverificato=true;
};
if(($richiesta==1)||($loginverificato)){ //Se l'utente è già registrato e risulta presente nel DB oppure si deve ancora iscrivere, esegue il codice
switch ($richiesta){
case 1: registrazione($ConnessioneDB, $username, $password, $_REQUEST[nome]);
break;
case 2: echo "LoginOk";
break;
case 3: creditoresiduo($ConnessioneDB, $username);
break;
case 4: //echo "-bird,dog/d,c at,cow,sheep";
//echo "-60,riparazione lavandino,2012/2/21,pluto,+30,ripetizioni grammatica,2012/2/22,pluto";
//echo estrattoconto($ConnessioneDB, $username, $_GET[mode]);
echo "-60,riparazione lavandino,2012/2/21,pluto,+30,ripetizioni grammatica,2012/2/22,pluto";
break;
case 5:
break;
default :
break;
}
} else { //Se invece nome utente e password non coincidono, ritorna errore
echo "LoginError";
}
/******************************* FUNZIONI ****************************/
function registrazione($ConnessioneDB, $username, $password, $nome){
$sql = "INSERT INTO `bancadeltempo`.`utenti` (`username`, `password`, `nomecognome`) VALUES ('$username', '$password', '$nome');";
mysql_query($sql,$ConnessioneDB) or die( "RegError");
echo "RegOk";
}
function ricerca(){
}
function creditoresiduo($ConnessioneDB, $username){
$sql="select credito from portafoglio where username = '$username'";
$res=mysql_query($sql,$ConnessioneDB);
while ($records=mysql_fetch_assoc($res)) {
echo $records[credito];
};
}
//function estrattoconto($ConnessioneDB, $username, $mode){
// if($mode=="1") $sql="select * from ultimeoperazioni where usernamebeneficiario = '$username' limit 0 , 10";
// if($mode=="2") $sql="select * from ultimeoperazioni where usernamepagante = '$username' limit 0 , 10";
// if($mode=="0") $sql="select * from ultimeoperazioni where usernamepagante = '$username' or usernamebeneficiario = '$username' limit 0 , 10"; //Tira fuori gli ultimi 10 valori
// $res=mysql_query($sql,$ConnessioneDB);
// while ($records=mysql_fetch_assoc($res)) $output[]=$records; //Recupera i record
// print(json_encode($output)); //Creiamone una stringa json
// mysql_close();
//}
function estrattoconto($ConnessioneDB, $username, $mode){
if($mode=="1") $sql="select * from ultimeoperazioni where usernamebeneficiario = '$username' limit 0 , 10";
if($mode=="2") $sql="select * from ultimeoperazioni where usernamepagante = '$username' limit 0 , 10";
if($mode=="0") $sql="select * from ultimeoperazioni where usernamepagante = '$username' or usernamebeneficiario = '$username' limit 0 , 10"; //Tira fuori gli ultimi 10 valori
$res=mysql_query($sql,$ConnessioneDB);
$i=0;
$return="";
while ($records=mysql_fetch_assoc($res)){
if($i!=0) $return = $return.",";
$i++;
if($records[usernamepagante]==$username) {
$return = $return."-"; //Mettiamo il segno per far capire se è un'entrata o un'uscita
$utente = $records[usernamebeneficiario]; //L'utente in questo caso è chi ha ricevuto il pagamento
}
else {
$return = $return."+";
$utente = $records[usernamepagante]; //Vice versa di sopra
}
$credito = $records[credito];
$causale = $records[causale];
$anno = $records[anno];
$mese = $records[mese];
$giorno = $records[giorno];
$return = $return.$credito.",".$causale.",".$anno."/".$mese."/".$giorno.",".$utente;
}
mysql_close();
return $return;
}
function pagamento(){
}
?>
Codice JAVA nell'app su Android:
Codice PHP:
private static String executeHttpRequest(String data) { //Si preoccupa della trasmissione e ricezione di dati dal server
String result = "";
try {
//URL url = new URL(SERVER_URL);
URL url = new URL("http://192.168.1.136/BancaDelTempoServer/server.php");
URLConnection connection = url.openConnection();
// Impostazioni varie (I/O, Non usa cache, tipo)
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// Invia query POST
DataOutputStream dataOut = new DataOutputStream(connection.getOutputStream());
dataOut.writeBytes(data);
dataOut.flush();
dataOut.close();
// Recupera risposta server
DataInputStream dataIn = new DataInputStream(connection.getInputStream());
String inputLine;
while ((inputLine = dataIn.readLine()) != null) {
result += inputLine; // <-- PUNTO 2 (vedi spiegazione sotto)
}
dataIn.close();
} catch (IOException e) {
e.printStackTrace(); //Logga l'errore
result = null; //Restituisce null <-- PUNTO 1 (vedi sotto)
}
return result;
}
Dal debugger vedo che ritorna null non a causa di un'eccezione (come si vede al punto 1) ma proprio nel punto 2, ovvero quando legge il risultato del web server.