Avatar billede baitianlong Nybegynder
12. oktober 2004 - 12:27 Der er 36 kommentarer og
1 løsning

Localhost på database applet

Hej. Det er et problem at man på mit webhotel kun kan bruge 'localhost' til at kontakte databasen, for en applet afvikles jo hos klienten, og localhost er jo således klientens egen maskine.

Hvordan kan man gøre noget ved det ?
Avatar billede arne_v Ekspert
12. oktober 2004 - 12:30 #1
Det lyder som er wb hotel der har spærret for adgang til databasen
udefra. Det er helt almindeligt (sikkerhed !).

En workaround er:

applet----(HTTP)----PHP eller ASP side----database

(jeg har kode eksempeler hvis du fortæller hvad du bruger ASP eller PHP
eller JSP eller ...)
Avatar billede baitianlong Nybegynder
12. oktober 2004 - 19:08 #2
Min applet skal gemme getText() (html) fra et JTextPane i en MySql database ved tryk på knap... :)

Og det skal helst fikses med PHP.
Avatar billede arne_v Ekspert
13. oktober 2004 - 00:14 #3
Det her eksempel er ikke helt det, men jeg tror at det kan give dig em
ide af hvordan man gør det.

DatabaseApplet.java
-------------------

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
import java.net.*;

public class DatabaseApplet extends Applet implements ActionListener {
    TextArea select = new TextArea();
    TextField f1 = new TextField();
    TextField f2 = new TextField();
    Button insert = new Button();
    public void init() {
        select.setColumns(40);
        select.setRows(20);
        select.setText(select());
        f1.setColumns(10);
        f2.setColumns(20);
        insert.setLabel("Add");
        insert.addActionListener(this);
        add(select, null);
        add(f1, null);
        add(f2, null);
        add(insert, null);
        setVisible(true);
    }
    public void actionPerformed(ActionEvent ev) {
        insert(f1.getText(), f2.getText());
        select.setText(select());
        repaint();
    }
    private String select() {
        StringBuffer res = new StringBuffer("");
        try {
            URL url = new URL("http://localhost/select.php");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");
            con.connect();
            if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
                String line;
                while ( (line = br.readLine()) != null) {
                    res.append(line);
                    res.append("\r\n");
                }
                con.disconnect();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return res.toString();
    }
    private void insert(String f1, String f2) {
        try {
            URL url = new URL("http://localhost/insert.php");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST");
            String info = "F1=" + f1 + "&F2=" + f2;
            con.setDoOutput(true);
            con.getOutputStream().write(info.getBytes());
            con.connect();
            if (con.getResponseCode() != HttpURLConnection.HTTP_OK) {
                System.err.println("POST failed");
            }
            con.disconnect();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

select.php
----------

<?php
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test") or die(mysql_error());
$rs = mysql_query("SELECT * FROM T1") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    print $row["F1"] . " " . $row["F2"] . "\n";
}
mysql_free_result($rs);
mysql_close($con);
?>


insert.php
----------

<?php
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test") or die(mysql_error());
$f1 = $_POST["F1"];
$f2 = $_POST["F2"];
mysql_query("INSERT INTO T1(F1,F2) VALUES($f1,'$f2')") or die(mysql_error());
mysql_close($con);
?>
Avatar billede arne_v Ekspert
13. oktober 2004 - 00:15 #4
Eksemplet har en tabel T1 med 2 felter F1 og F2
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 00:22 #5
Det ser spændende ud. Mange tak for hjælpen - det bliver dog først i morgen, jeg fikser det...

Men mange tak :)
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 00:23 #6
Jeg havde selv tænkt på noget javascript/php halløj. Jeg (du) lavede engang en applet, der kunne hente en variabel fra en PHP cookie via javaScript. Den var smuk...
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 21:55 #7
Jeg har et klassisk problem (for mig).

Jeg kan godt starte siden med applet her på min computer, men når jeg uploader bliver applet notinited. Jeg har uploadet binært !

Nogle forslag ? :)
Avatar billede arne_v Ekspert
13. oktober 2004 - 22:06 #8
Hvilken MIME type giver den server du uploader til filen ?
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 22:12 #9
Det forstår jeg ikke hvad du mener med ?
Avatar billede arne_v Ekspert
13. oktober 2004 - 22:13 #10
Serveren returnerer en content type i HTTP response - det er den.

Kan du uploade en som jeg kan teste på ?
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 22:21 #11
jeg har uploadet en html side med applet'en i her: www.legende.dk/databaseapplet.html

Er det det du skal bruge ? :)
Avatar billede arne_v Ekspert
13. oktober 2004 - 22:32 #12
Ja
Avatar billede arne_v Ekspert
13. oktober 2004 - 22:33 #13
Er protection på filen OK ?

Fordi der returneres ingen data når man requester filen.
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 22:40 #14
Jeg er ked af at jeg er så "uvidende", men jeg ved desværre ikke svaret til de spørgsmål du stiller. Jeg har kopieret din kode ind i eclipse og trykket save, så jeg fik en class-fil. Den har jeg uploaded med CuteFtp i binær mode.

Jeg håber du kan bære over med mig og det kan blive fikset. Det er sådan en dum ting, når opgaven var en helt anden...
Avatar billede arne_v Ekspert
13. oktober 2004 - 22:49 #15
Men hvis du nu checker fil protection i CuteFTP hvordan ser den så ud ?
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 22:55 #16
File ATTR ser sådan her ud:

-rwxr-xr-x
Avatar billede arne_v Ekspert
13. oktober 2004 - 22:57 #17
Og hvordan ser ATTR på HTML filen ud ?

(de skal gerne være ens)
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 22:59 #18
De er magen til :)
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 23:01 #19
Jeg har lige prøvet at uploade en anden lille applet, men den virker fint ?! Det er da underligt: http://www.legende.dk/javaur.html
Avatar billede arne_v Ekspert
13. oktober 2004 - 23:06 #20
Passer fil størrelsen på server med fil størrelsen hos dig ?

PS: ur virker heller ikke hos mig
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 23:16 #21
Det er da underligt...

Filerne er så små, og den runder af. Så det kan man ikke regne med. Men jo de er Ur.class: 1KB DatabaseApplet.class: 3 KB begge steder

P.S. tusind tak for din tålmodighed :)
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 23:17 #22
i mine internet indstillinger har jeg Java 1.5.0 til appletter

(hvis det er interessant)
Avatar billede arne_v Ekspert
13. oktober 2004 - 23:22 #23
Jeg tror ikke at det spiller nogen rolle her.

Groft sagt synes jeg at din web server ikke opfører sig pænt.

Den lukker simpelthen forbindelsen øjeblikkeligt når man requester en
class fil.
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 23:24 #24
Jeg har et andet sted, jeg kan prøve at uploade... Et øjeblik :)
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 23:32 #25
http://www.ceep.pl/databaseapplet.html

Nu ligger den der, med de samme ATTR, men desværre samme resultat. Det er dog en anden webserver (i et andet land)
Avatar billede arne_v Ekspert
13. oktober 2004 - 23:40 #26
Lidt andet svar faktisk.

Men ja det virker stadigvæk ikke.
Avatar billede arne_v Ekspert
13. oktober 2004 - 23:40 #27
Kunne du email dem til mig så kunne jeg prøve at ligge dem på min server ?
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 23:42 #28
Det her lyder måske lidt åndssvagt, men kan jeg bede dig om at prøve at uploade filerne. Så vil jeg emaile dig filerne, password osv. til mit webhotel... Jeg vil gerne have det her til at virke.
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 23:43 #29
nårh... to tosser, samme tanke :) (næsten da).

Hvad er din email ?, eller send mig en mail på j<snabela>legende.dk
Avatar billede arne_v Ekspert
13. oktober 2004 - 23:43 #30
arne_v@mail.danbbs.dk
Avatar billede baitianlong Nybegynder
13. oktober 2004 - 23:47 #31
ok, jeg har sendt dig 5 filer (html, php, php, java og class) :)
Avatar billede arne_v Ekspert
13. oktober 2004 - 23:57 #32
Jeg har modtaget dem.

Uploadet til din server => stadig fejl

Uploadet til min server => OK (anden fejl men det er som det skal være)
Avatar billede baitianlong Nybegynder
14. oktober 2004 - 00:07 #33
har du tabellen sat op osv. på din server, kan jeg se siden :) Så jeg kan se hvad det er og programmere videre med dine insert() og select() metoder .
Avatar billede arne_v Ekspert
14. oktober 2004 - 00:12 #34
Hvis du kigger på koden vil du se at select og insert er helt simple.

Der er ikke PHP på min public web server.
Avatar billede baitianlong Nybegynder
14. oktober 2004 - 00:16 #35
ok. Jeg vender tilbage til det i morgen. Og får sikkert et par spørgsmål :) Så glem alt om mig i 12 timer og "lad op" - mange tak :)
Avatar billede baitianlong Nybegynder
23. november 2004 - 17:57 #36
Det var rimelig lange tolv timer... Jeg er godtnok udhvilet nu. Jeg må hellere lukke spørgsmålet, så endnu en gang tak for din hjælp. Det er jo ikke din skyld at mine webhoteller "opfører sig underligt". Læg venligst et svar :)
Avatar billede arne_v Ekspert
23. november 2004 - 19:38 #37
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester