Avatar billede Simon Praktikant
30. august 2005 - 16:15 Der er 17 kommentarer og
1 løsning

gemme værdier på klient

jeg har en java applet som skal benyttes af flere personer på hver sin klient-pc.
De skal hver gang indtaste en række parametre, hvorefter de får data som de vil overvåge.
Er det ikke muligt at gemme disse parametre på klient-pc'en? måske med en Cookie?
Det skal virke på såvel windows som linux.
kodeeksempler er meget velkomne.
Avatar billede arne_v Ekspert
30. august 2005 - 16:57 #1
Hvis appletten har privis så kan du bare gemme den i en config fil på client PC.

Hvis applet ikke har privs så skal du gemme det server side baseret
på client IP adresse.

Det sidste findes i 2 varianter:
a) applet henter oplysningerne fra server
b) applet vises i en dynamisk side (asp/php/jsp) som henter oplysningerne
  og overfører dem til applet via applet params
Avatar billede Simon Praktikant
30. august 2005 - 17:18 #2
skal man have privs for at kunne gemme i en cookie på klients pc?

Jeg tror helst at jeg vil gemme på klients pc.
Avatar billede arne_v Ekspert
30. august 2005 - 17:22 #3
du skal have privs for at kunne gemme en fil

jeg kan ikke rigtigt se hvordan en applet skulle kunne sætte eller gemme en cookie

(medmindre man kan sætte og hente en cookie med client side JavaScript som
kan kaldes fra en Java applet)
Avatar billede Simon Praktikant
30. august 2005 - 17:27 #4
nu kan det godt være at jeg spørger dumt, men hvis ikke en applet bruger cookies, hvad gør så?
Avatar billede arne_v Ekspert
30. august 2005 - 17:30 #5
cookies er så vidt jeg ved noget en browser og en web server udveksler over
nettet via HTTP protokollen

en applet køres i en JVM lokalt på client PC
Avatar billede Simon Praktikant
30. august 2005 - 18:48 #6
har du et (link til et) eksempel?
Avatar billede arne_v Ekspert
30. august 2005 - 23:55 #7
her kommer et eksempel hvor appletten selv gemmer på server

jeg har brugt PHP og MySQL på server, men det kan sagtens laves med ASP og Access
eller alt muligt andet
Avatar billede arne_v Ekspert
30. august 2005 - 23:55 #8
CREATE TABLE `persistinfo` (
`ip` varchar(15) NOT NULL default '',
`a` varchar(30) default NULL,
`b` varchar(30) default NULL,
PRIMARY KEY  (`ip`)
ENGINE=MyISAM DEFAULT CHARSET=latin1;
Avatar billede arne_v Ekspert
30. august 2005 - 23:55 #9
package august;

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

public class Remember extends Applet implements ActionListener {
    TextField a = new TextField();
    TextField b = new TextField();
    Button save = new Button();
    public void init() {
        load();
        save.setLabel("Save");
        save.addActionListener(this);
        add(a, null);
        add(b, null);
        add(save, null);
        setVisible(true);
    }
    public void actionPerformed(ActionEvent ev) {
        save();
    }
    private String load() {
        StringBuffer res = new StringBuffer("");
        try {
            URL url = new URL("http://localhost/load.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 = br.readLine();
                if(line != null) {
                    String[] vars = line.split(",");
                    a.setText(vars[0]);
                    b.setText(vars[1]);
                }
                con.disconnect();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return res.toString();
    }
    private void save() {
        try {
            URL url = new URL("http://localhost/save.php");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST");
            String info = "a=" + a.getText() + "&b=" + b.getText();
            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();
        }
    }
}
Avatar billede arne_v Ekspert
30. august 2005 - 23:56 #10
<?php
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test", $con) or die(mysql_error());
$rs = mysql_query("SELECT * FROM persistinfo WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "'", $con) or die(mysql_error());
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
if($row) {
  print $row["a"] . "," . $row["b"] . "\n";
}
mysql_free_result($rs);
mysql_close($con);
?>
Avatar billede arne_v Ekspert
30. august 2005 - 23:56 #11
<?php
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test", $con) or die(mysql_error());
$ip = $_SERVER['REMOTE_ADDR'];
$a = $_POST["a"];
$b = $_POST["b"];
mysql_query("REPLACE INTO persistinfo VALUES('$ip', '$a','$b')", $con) or die(mysql_error());
mysql_close($con);
?>
Avatar billede Simon Praktikant
31. august 2005 - 09:20 #12
Tak for det fine eksempel på at gemme på serveren.

Jeg vil hellere gemme i en config fil på klienten.

Det er fordi jeg vil undgå at oprette en database, samt skrive php, eller asp scripts.

Jeg har en forestilling om at det er nemmere at gemme i en config fil.
Avatar billede arne_v Ekspert
31. august 2005 - 20:52 #13
så skriver du vel bare en properties fil og loder den igen !?

det eneste vanskelige i det er privs
Avatar billede Simon Praktikant
01. september 2005 - 09:00 #14
sættes privs op i OS eller i browseren? og kan det komme til at virke ens på både win og linux?
Avatar billede arne_v Ekspert
02. september 2005 - 21:04 #15
du gemmer din klasse eller klasser i en jar fil

den jar fil signer du

og så skal den ved kørsel prompte for om brugeren vil give de privs

jeg har aldrig prøbet med Linux men jeg vil tro at det virker helt ens
uanset styre system
Avatar billede arne_v Ekspert
29. september 2005 - 20:40 #16
kommet videre ?
Avatar billede Simon Praktikant
16. august 2006 - 09:36 #17
jeps, tak for din hjælp. Smid svar og point er dine. Undskyld det tog så lang tid
Avatar billede arne_v Ekspert
16. august 2006 - 13:16 #18
svar
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