Gestire MYSQL da app JAVA tramite PHP

di il
2 risposte

Gestire MYSQL da app JAVA tramite PHP

Ecco il mio problema:
ho un applicazione java che deve inserire(INSERT INTO),leggere(SELECT) e aggiornare(UPDATE) i valori di un database MYSQL.
il problema è che il server su cui risiede il database non accetta connessioni esterne, quindi l'unico metodo per dialogare con il database è il php(.
cosa dovrei fare? creare una pagina php con i metodi per la gestione del database e lanciarla passandogli i dati tramite java (come faccio???)
oppure fare tutto tramite java
ho trovato una classe di esempio(spero sia per il problema che ho io) ma non riesco a farla funzionare (non mi dà ne errori ne altro però non fa nulla).

ecco la classe di esempio

try {
        // Construct data
        String data = URLEncoder.encode("$nome", "UTF-8") + "=" + URLEncoder.encode("provanome", "UTF-8");
        data += "&" + URLEncoder.encode("$cognome", "UTF-8") + "=" + URLEncoder.encode("provacognome", "UTF-8");
        data += "&" + URLEncoder.encode("$userid", "UTF-8") + "=" + URLEncoder.encode("userprova", "UTF-8");
        data += "&" + URLEncoder.encode("$password", "UTF-8") + "=" + URLEncoder.encode("pswprova", "UTF-8");
        data += "&" + URLEncoder.encode("$password2", "UTF-8") + "=" + URLEncoder.encode("pswprova", "UTF-8");
        data += "&" + URLEncoder.encode("$email", "UTF-8") + "=" + URLEncoder.encode("prova@prova.it", "UTF-8");
    
        // Create a socket to the host
        String hostname = "http://www.**********/registrazione2.php";
        int port = 80;
        InetAddress addr = InetAddress.getByName(hostname);
        Socket socket = new Socket(addr, port);
    
        // Send header
        String path = "/servlet/SomeServlet";
        BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
        wr.write("POST "+path+" HTTP/1.0\r\n");
        wr.write("Content-Length: "+data.length()+"\r\n");
        wr.write("Content-Type: application/x-www-form-urlencoded\r\n");
        wr.write("\r\n");
    
        // Send data
        wr.write(data);
        wr.flush();
    
        // Get response
        BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line;
        while ((line = rd.readLine()) != null) {
            System.out.println(line);
        }
        wr.close();
        rd.close();
    } catch (Exception e) {System.out.prinln("Errore:"+e);
    }


allego anche la pagina registrazione2.php
in config.php sono contenuti i dati di host user e psw per poter accedere al database

<?php
	session_start();
	include("include/config.php");
?>
<html>
     <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>registrazione</title>
          <link rel="shortcut icon" href="immagini/struttura/favicon.ico" />
          <?php if (ereg("MSIE", $_SERVER['HTTP_USER_AGENT'])) {?><link rel="stylesheet" type="text/css" href="stili/stile.css">
          <?php }else{?> <link href="stili/stile.css" rel="stylesheet" type="text/css" /><?php }?>
     </head>
     
     <body>
     	<div id="container">
               <div id="logo"></div>
               <div id="menu">
               	<a href="index.htm"><img src="immagini/struttura/icona_home.png"> Home Page</a>
               	<a href="registrazione.php"><img src="immagini/struttura/icona_registrazione.png"> Registrazione</a>
               </div>
               <div id="registrazione">
               	<br><br><h1>Compila tutti i campi per completare la registrazione.</h1><br><br>
                    <?php
               				$nome = @$HTTP_POST_VARS["nome"];
					$cognome = @$HTTP_POST_VARS["cognome"];
					$userid = @$HTTP_POST_VARS["userid"];
					$password = @$HTTP_POST_VARS["password"];
					$password2 = @$HTTP_POST_VARS["password2"];
					$email = @$HTTP_POST_VARS["email"];

					

					if(($nome == "") || ($cognome == "") || ($userid == "") || ($password == "") || ($email == "")){
						echo "E' avvenuto un errore durante la registrazione!<br><br>Hai lasciato qualche campo vuoto oppure hai usato caratteri non permessi!";
					}else{
						if($password == $password2){
								$query = mysql_query("INSERT INTO utenti (userid, password, email, cognome, nome, credito) VALUES ('$userid', '$password', '$email', '$cognome', '$nome', '100')");
	
								if($query == 1){
	
									echo "Registrazione effettuata correttamente!";
	
								}else{
	
									echo "E' avvenuto un errore nell'inserimento del programma!<br><br>ERRORE: ".$query;
	
								}
							}else{

							echo "E' avvenuto un errore durante la registrazione!<br><br>Le password inserite devono essere uguali!";

						}

					}
				?>
               </div>
          </div>
     </body>
</html>

di php sono ancora alle primissime armi e di java non ho mai affrontato cose del genere, ero riuscito a far funzionare i driver JDBC, ma non mi servono a niente
spero in un vostro aiuto

2 Risposte

  • Re: Gestire MYSQL da app JAVA tramite PHP

    Devi creare una pagina php che accetti dei dati (attrverso il metodo GET) e quindi lavori sul database.
    Quindi devi fare un apllicazione in java che si connetta al sito web, chiama la pagina .php(che opera sul database) con i relativi parametri (che passi quindi con il metodo GET).
    http://www.java2s.com/Code/Java/Network-Protocol/ConnectwithaWebserver.htm, qui spiega in maniera molto ristretta come connettersi ad un webserver.
  • Re: Gestire MYSQL da app JAVA tramite PHP

    Ho provato con quest'altra porzione di codice ma non va neanche
    che faccio?devo sistemare la classe registrazione?
    aiutoooo
    
    URL url;
            URLConnection urlConn;
            DataOutputStream printout;
            DataInputStream input;
            
            try{
                url = new URL ("http://www.*********/registrazione2.php");
                urlConn = url.openConnection();
                urlConn.setDoInput (true);
                urlConn.setDoOutput (true);
                urlConn.setUseCaches (false);
                urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                // spedisce al server i dati via POST
                printout = new DataOutputStream (urlConn.getOutputStream());
                String content = "nome=" + URLEncoder.encode ("provanome","UTF-8") 
                +"cognome=" + URLEncoder.encode ("provacognome","UTF-8")
                +"userid=" + URLEncoder.encode ("provauser","UTF-8")
                +"password=" + URLEncoder.encode ("provapass","UTF-8")
                +"password2=" + URLEncoder.encode ("provapass","UTF-8")
                +"email=" + URLEncoder.encode ("pova@mail.it","UTF-8");
                printout.writeBytes (content);
                printout.flush ();
                printout.close ();
                // Stampa a video la risposta del server linea per linea
                BufferedReader bufline = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
                String str;
                while (null != ((str = bufline.readLine()))) {
                    System.out.println (str);
                }
                bufline.close ();
                }catch(Exception e){
                    System.out.println("ERRORE: "+e);
                }
        }
    
    
Devi accedere o registrarti per scrivere nel forum
2 risposte