Server php per app android

di il
18 risposte

Server php per app android

Ciao a tutti! Vi spiego subito il "problema":
Per un progetto universitario devo creare un app android che effettua determinate operazioni su una base di dati (per il database ho creato un'istanza mysql sui server di amazon (aws)). Informandomi un pò in giro ho letto che non è possibile collegare direttamente l'app al database e che è possibile utilizzare un server php che faccia da "tramite" tra l'applicazione e il database. Premettendo che sono assolutamente ignorante in php, informandomi in rete ho fatto un semplicissimo script php che si collega al database e stampa i risultati di una query (diciamo che per quello che ci devo fare è sufficiente). L'ho testato con WAMP e funziona, ma il fatto è che ovviamente lo script è in locale sul mio pc. Come posso fare per mettere "online" il mio script in modo da poterlo eseguire tramite url dalla mia applicazione android per eseguire query sul database?
Chiedo scusa se la domanda è posta male e se fossero necessarie altre informazioni non esitate a chiedere

18 Risposte

  • Re: Server php per app android

    Per fare cio' hai potenzialmente due strade:
    - Apri le porte del tuo router (di default la porta 80 (http) o 443 (https) ), in questo caso per accedere allo script il tuo pc deve essere avviato con WAMP / XAMMP avviato.
    - Compri una VPS dove install apache2 oppure nginx per evitare di tenere il tuo pc pernemmente avviato.
  • Re: Server php per app android

    Grazie mille della risposta!!! Vorrei chiederti un'ultima cosa giusto come curiosità. Supponiamo che io abbia un sito web, è possibile caricare lo script sul sito ed eseguirlo tramite l'url (ad esempio https://www.miosito.it/folder/server.ph ) oppure è necessario acquistare un vps? Chiedo ancora scusa se la domanda è "strana" ma questi argomenti mi sono abbastanza nuovi. Grazie
  • Re: Server php per app android

    spx ha scritto:


    Grazie mille della risposta!!! Vorrei chiederti un'ultima cosa giusto come curiosità. Supponiamo che io abbia un sito web, è possibile caricare lo script sul sito ed eseguirlo tramite l'url (ad esempio https://www.miosito.it/folder/server.ph ) oppure è necessario acquistare un vps? Chiedo ancora scusa se la domanda è "strana" ma questi argomenti mi sono abbastanza nuovi. Grazie
    Devi avere un "miosito.it" con dentro un interprete PHP (e che ti consenta di scriverci dentro i tuoi file)
  • Re: Server php per app android

    +m2+ ha scritto:


    spx ha scritto:


    Grazie mille della risposta!!! Vorrei chiederti un'ultima cosa giusto come curiosità. Supponiamo che io abbia un sito web, è possibile caricare lo script sul sito ed eseguirlo tramite l'url (ad esempio https://www.miosito.it/folder/server.ph ) oppure è necessario acquistare un vps? Chiedo ancora scusa se la domanda è "strana" ma questi argomenti mi sono abbastanza nuovi. Grazie
    Devi avere un "miosito.it" con dentro un interprete PHP (e che ti consenta di scriverci dentro i tuoi file)
    Grazie anche a te per la risposta! Effettivamente sono stato troppo vago
    Ho un amico che ha un sito web registrato su aruba e prima gli ho chiesto la cortesia di farmi fare una prova. Ho caricato due file php, uno stampa un semplice messaggio e l'altro esegue una query sul succitato database (su aws) e stampa i risultati. Entrambi gli script testati in locale con wamp funzionano. Se invece li eseguo tramite browser, quello che stampa il semplice messaggio funziona, mentre quello che stampa i risultati della query non funziona (la pagina rimane in caricamento). Sottolineo ancora che con wamp funzionano entrambi. Può dipendere dall'interprete del sito? Posso fare qualche verifica? Ho visto che è possibile acquistare una vps per pochi euro al mese quindi non sarebbe un problema, ma non vorrei spendere soldi e ritrovarmi punto e a capo quando potrei fare lo stesso tramite il sito del mio amico, tanto come detto è solo per testare il funzionamento del progetto. Grazie
  • Re: Server php per app android

    E come farebbe a eseguire "una query sul succitata database (su aws) " ?
  • Re: Server php per app android

    Ti consiglio nel php.ini far si che al posto di dart un Server Error (solitamente 500) mostri gli errori direttamente nel browser per fare cio' devi:
    • Trovate il file php.ini solitamente la directory e' questa: /etc/php/x.x/cli/php.ini (dove x e' la versione es: 7.2), in caso tu non sappia dove sia basta digitare php --ini e nelle prime linee ci sara' scritto.
    • Trovare la linea display_errors = Off cambiarla in display_errors = On
    • Trovare la linea error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT (o simile) e cambiarla in error_reporting = E_ALL.
    Vedi se ti da qualche errore in piu
  • Re: Server php per app android

    +m2+ ha scritto:


    E come farebbe a eseguire "una query sul succitata database (su aws) " ?
    Ho scritto qualche castroneria? Purtroppo adesso non ho il codice sottomano, domattina te lo posto. Ti confermo peró che eseguendolo tramite wamp funziona e stampa i dati presenti nel database (sono dei semplici numeri interi)

    Hexah ha scritto:


    Ti consiglio nel php.ini far si che al posto di dart un Server Error (solitamente 500) mostri gli errori direttamente nel browser per fare cio' devi:
    • Trovate il file php.ini solitamente la directory e' questa: /etc/php/x.x/cli/php.ini (dove x e' la versione es: 7.2), in caso tu non sappia dove sia basta digitare php --ini e nelle prime linee ci sara' scritto.
    • Trovare la linea display_errors = Off cambiarla in display_errors = On
    • Trovare la linea error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT (o simile) e cambiarla in error_reporting = E_ALL.
    Vedi se ti da qualche errore in piu
    Guarda in realtá rimane in loop il caricamento della pagina. Mi spiego meglio:
    Chiamiamo script1 lo script che stampa il messaggio (diciamo "ciao") e script2 quello che stampa degli interi che sono nel database.
    Su wamp funzionano entrambi. Caricandoli sul sito web se vado su "http://www.miosito.com/folder/script" mi esce la schermata con scritto "ciao". Se invece digito "http://www.miosito.com/folder/script" rimane fissa la rotellina di caricamento (se per esempio sono su gazzetta.it e digito l'url dello script2, rimane sempre su gazzetta.it con l'icona di caricamento del browser). Come se non si aprisse proprio... puó essere comunqie valido il procedimento he hai scritto sopra?
  • Re: Server php per app android

    Dipende alla fine che errore ti da il tuo browser? Se 50x puoi provare altrimenti controlla i log di PHP e Apache/nginx
  • Re: Server php per app android

    +m2+ ha scritto:


    E come farebbe a eseguire "una query sul succitata database (su aws) " ?
    Ecco il codice che ho utilizzato (l'ho trovato in rete e come già detto testato con wamp funziona correttamente):
    
    <?php
    	//ovviamente nello script che utilizzo ho scritto i vari dati corretti quali username, password ecc...
    	
    	$hostname="mio_hostname";
    	$username="mio_username";
    	$password="mia_password";
    	$dbname="mio_db";
    	$usertable="mia_tabella";
    	$yourfield = "mio_campo";
    	
    	mysql_connect($hostname,$username, $password) or die ("html>script language='JavaScript'>alert('Unable to connect to database! Please try again later.'),history.go(-1)/script>/html>");
    	mysql_select_db($dbname);
    	
    	# Check If Record Exists
    	
    	$query = "SELECT * FROM $usertable";
    	
    	$result = mysql_query($query);
    	
    	if($result){
    		while($row = mysql_fetch_array($result)){
    			$name = $row["$yourfield"];
    			echo "ID: ".$name."<br/>";
    		}
    	}
    ?>
    

    Hexah ha scritto:


    Dipende alla fine che errore ti da il tuo browser? Se 50x puoi provare altrimenti controlla i log di PHP e Apache/nginx
    Guarda credevo che restasse in loop il caricamento ma lasciandolo caricare dopo un pò mi è apparso il seguente warning che però credo si riferisca ad un problema di connessione al db più che altro:

    Warning: mysql_connect(): Can't connect to MySQL server on 'indirizzo_del_db' (4) in /web/htdocs/www.miosito.it/home/testphp/test2.ph on line 14
    html>script language='JavaScript'>alert('Unable to connect to database! Please try again later.'),history.go(-1)/script>/html>


    (ovviamente ci sono scritti gli indirizzi reali del db e del sito web).
    Chiedo sempre da ignorante: Poiche su wamp funziona, portebbe trattarsi di qualche configurazione lato db (cioè aws) oppure lato sito dove è caricato lo script?
  • Re: Server php per app android

    Se in locale funziona probabilemente il problema sta nel server dove e' caricato lo script,


    Picolla parentensi, ti consiglio di NON utilizzare mysql_connect come si evince dal warning ma mysqli(che non e' un altro database ma un altra estensione di php) siccome e' stato deprecato in php 5.5 (mysql), non supporta i prepared statment, e' sia object orientated che procedural ed e' in generale piu' sicuro ed aggiornato, generalemente basta rimpizzare mysql_ con mysqli_

    potresti postare anche tutto lo script cosi' possiamo capire meglio il problema?
  • Re: Server php per app android

    Lo script completo è scritto nel mio messaggio precedente. Per quanto riguarda la mysql_connect si, ho visto che é deprecata. Grazie
  • Re: Server php per app android

    Se per questo pure mysqli è da evitare, a favore di PDO
  • Re: Server php per app android

    +m2+ ha scritto:


    Se per questo pure mysqli è da evitare, a favore di PDO
    Non sono totalmente d'accordo con te, sono consapevole del fatto che PDO supporta piu' database (12), ma spostarsi su mysqli da mysql puo' risultare piu' rapido che farlo su PDO
  • Re: Server php per app android

    spx ha scritto:


    Lo script completo è scritto nel mio messaggio precedente. Per quanto riguarda la mysql_connect si, ho visto che é deprecata. Grazie
    Ah non avevo visto,
    Questo codice:
    
    <?php
    //ovviamente nello script che utilizzo ho scritto i vari dati corretti quali username, password ecc...
    
    $hostname="mio_hostname";
    $username="mio_username";
    $password="mia_password";
    $dbname="mio_db";
    $usertable="mia_tabella";
    $yourfield = "mio_campo";
    
    $db = new mysqli($hostname,$username, $password, $dbname);
    
    //Se ce un errore
    if ($db->connect_errno) {
        die("Failed to connect to MySQL({$db->connect_errno}): " . $db->connect_error); //Scrivi qual e' l'errore
    }
    
    # Check If Record Exists
    
    $query = "SELECT * FROM $usertable";
    
    $result = $db->query($query);
    if($result){
        while($row = $result->fetch_array()){
            $name = $row["$yourfield"]; //Puoi anche rimuovere le virgolette non servono
            echo "ID: ".$name."<br/>";
        }
    }
    ?>
    
    Ho utilizza lo stile object orientated ma il risultato non cambia, ora ti dara un errore specifico e non generico come nel tuo esempio, se la connessione al database fallisce,
Devi accedere o registrarti per scrivere nel forum
18 risposte