Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Neds
    Registrato dal
    Nov 2004
    Messaggi
    25

    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
    codice:
    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

    Codice PHP:
    <?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">
                       [url="index.htm"][img]immagini/struttura/icona_home.png[/img] Home Page[/url]
                       [url="registrazione.php"][img]immagini/struttura/icona_registrazione.png[/img] Registrazione[/url]
                   </div>
                   <div id="registrazione">
                       

    <h1>Compila tutti i campi per completare la registrazione.</h1>


                        <?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!

    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!

    ERRORE: "
    .$query;
        
                                    }
                                }else{

                                echo 
    "E' avvenuto un errore durante la registrazione!

    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. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il fatto che il DB MySQL non accetti connessioni dall'esterno è una buona cosa (dappertutto dovrebbe essere così), ma non è un limite all'utilizzo di Java.

    Se il tuo server è predisposto per l'esecuzione di pagine JSP significa che da qualche parte hai la possibilità di caricare le tue WebApplication... è sufficiente includere la libreria ConnectorJ e utilizzare Java per l'accesso.

    Una discussione è già presente nelle Pillole di questo forum per la connessione di una applicazione Java a MySQL. Che sia una Servlet o una pagina JSP (preferisco la prima soluzione) non ha importanza. Direi che non è il caso di scomodare PHP per questo tipo di problematiche, visto che JSP è stato inventato appositamente per queste applicazioni...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Neds
    Registrato dal
    Nov 2004
    Messaggi
    25
    purtroppo l'amministratore del server mi ha detto che supportano solo php
    ho provato con quest'altra porzione di codice, e non va
    codice:
    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);
                }
        }
    un aiuto per poter inserire i dati tramite php?

  4. #4
    Utente di HTML.it L'avatar di Neds
    Registrato dal
    Nov 2004
    Messaggi
    25
    continuo a brancolare nel buio.
    ma qualcuno conosce un servizio di hosting gratuito che permette connessioni esterne al database???ho tanto bisogno di aiuto

  5. #5
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Ma la tua applicazione java dove risiede? Hai pagine jsp sul server? E l'amministratore accetta solo collegamenti al database MySQL con php?
    Oppure non hai pagine jsp di nessun tipo e la tua applicazione java è una applicazione locale che cerca di collegarsi al database remoto?

    Francamente questa combinazione di cose non mi piace affatto. Sarebbe meglio gestire tutto in java o tutto in php. Però di gestori che forniscono il supporto a java gratuitamente non ne conosco.

    Comunque questa che segue potrebbe essere una soluzione: usi java per chimare una pagina php che si trova sul server. Quindi la chiamata è a un url, a una generica pagina web. Come parametri puoi passare direttamente la stringa sql che vuoi realizzare.
    Magari, per sicurezza, aggiungi come parametro anche un username e una password, im modo che la pagina php prima di rispondere verifichi che chi tenta di collegarsi abbia i diritti per farlo.

    Se localmente hai un server apache su cui fai girare servlet e jsp, il problema è banale. Il risulato lo puio inglobare nelle tue pagine con ajax. Se hai una applicazione desktop, dovrai invece trovarti le api giuste, sia per invocare la pagina, sia per leggerne i risultati.

    mmm.. potresti anche fare in modo che la pagina php restituisca del codice xml... sta cosa potebbe prendere strane ed interessanti forme...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quello che trovo strano è che tu abbia delle pagine JSP e che l'amministratore ti dica che accetta solo pagine PHP... se hai la possibilità di scrivere codice JSP, dovresti avere anche la possibilità di accedere al DB tramite JSP stesso... se non lo puoi fare significa che l'amministratore non ha installato i driver JDBC per MySQL e questo significa che l'amministratore è un incompetente. Non accetterei nemmeno come scusa la sicurezza: un codice JSP che accede a MySQL è sicuro tanto quanto un equivalente codice PHP.

    Ad ogni modo, se chiedi un aiuto per questioni che riguardano PHP, posta nella sezione PHP del forum: qui si tratta solo ed esclusivamente di Java.

    Hai una scelta: o continuare qui con JSP oppure ti sposto su PHP.

    Che faccio, lascio?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it L'avatar di Neds
    Registrato dal
    Nov 2004
    Messaggi
    25
    dunque, chiarisco la situazione:
    ho un sito con una home page e una pagina di registrazione(in php,quella postata su)
    gli utenti si registrano ad un database mysql.una volta registrati, gli utenti possono usare l'applicazione java scaricata nel proprio pc(un videopoker) che deve connettersi al database per riconoscere l'utente e leggere il credito, lasciar giocare l'utente, e riconnettersi al database per aggiornare il credito.L'applicazione è già pronta a funzionare nel pc degli utenti, ma serve sapere se lo può usare e il credito residuo.
    è un progetto per l'università, vorrei evitare la parte dispendiosa(dopo averlo consegnato non mi interessa più)
    ps: questa è la risposta dell'admin:
    i server supportano solo php! quello che chiede da noi può farlo solo su dedicati o virtuali naturalmente a pagamento
    cioè, non c'è modo di utilizzare php per risolvere la situazione?
    cosa potrei fare?

  8. #8
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    cioè, non c'è modo di utilizzare php per risolvere la situazione?
    Una possibilità te l'ho data un paio di messaggi fa. Che per quanto assurda può funzionare.

    Però mi sembra strano che queste siano le richieste del tuo progetto. Da quel che ne so io, gli spazi web di solito vengono messi a disposizione dall'università. Il docente a cui fai riferimento dovrebbe essere in grado di garantire un computer da utilizzare come server su cui installare un application server per java e mysql. Almeno per il giorno in cui effettuare la prova ufficiale della tua applicazione.

    Ma non mi spiego neppure per quale motivo il database debba risiedere su un server gestito da altri: se il tuo applciativo è già stato distribuito a più persone (altri studenti che partecipano al progetto, no?), per quale motivo non utilizzare uno dei computer diponibili per installare il database e le applicazioni necessarie? In realtà basterebbe eclipse, tomcat e mysql, che li puoi installare anche su una chiavetta usb, se gli indirizzi ip li salvi su un file di configurazione della tua web application, la portabilità del tutto è garantita, e non capisco cosa possa pretendere di più il tuo docente.

    Fagli presente la risposta data dal tuo gestore e verifica che non si possa fare altrimenti.
    Ciao!
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  9. #9
    Utente di HTML.it L'avatar di Neds
    Registrato dal
    Nov 2004
    Messaggi
    25
    probabilmente hai ragione ma la prof è di progetto software(ingegneria del software) e bada più alla teoria dello sviluppo più che ai problemi pratici(non sa nulla di codice), però per passare l'esame vuole un progettino e noi dobbiamo farlo.
    inoltre anche se volessi attivare un account per utilizzare un server all'università penso che potrei accedervi solo dalla rete dei laboratori(e non ho la possibilità di andarci ogni giorno,dista 100km) quindi devo trovare una soluzione da casa.
    cmq una soluzione penso di averla trovata utilizzando db4free o freesql come database utenti, con cui già riesco a dialogare direttamente con la mia applicazione(tramite JDBC), quindi ora devo solo smanettare con l'esecuzione delle query e i valori di ritorno,ecc... per fortuna niente di preoccupante, al massimo faccio registrare gli utenti direttamente dall'applicazione piuttosto che dal sito (ma questo vedrò di risolverlo dopo).
    già che ci sono(è anche la sezione esatta,o devo aprire una nuova discussione? ):
    quando poi distribuirò l'applicazione che utilizzerà i driver JDBC, come faccio a distribuire anche i driver in modo che l'utente non lo deve installare?devo mettere tutto in un jar?mi date qualche dritta?
    grazie cmq del supporto.
    mi sa che stasera sarò più tranquillo

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    E mi pareva strana la cosa... chissà perchè avevo capito che stavi utilizzando JSP...

    Questo è un problema differente e per risolverlo dovrai optare per la soluzione di Pastore12. Sinceramente non vedo alternative, visto che la tua applicazione è per forza esterna al sito.

    Per la costruzione di pagine PHP che effettuino questa cosa, ti rimando al forum PHP che tratta per benino questo linguaggio.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.