Bonjour,
ayant recemment cree un jeu du serpent que j'ai mis en ligne a
l'adresse http://perso.wanadoo.fr/danious/serpent.html , j'ai voulu
mettre en place un systeme qui permet a tout joueur qui fait une partie
d'enregistrer son score apres avoir entre son nom lorsque le jeu est
fini. J'utilise pour cela les instructions (classiques) suivantes :
File scores=new File("scores.html");
FileWriter out=new FileWriter(scores,true);/*true : pour ecrire a la
fin*/
BufferedWriter b=new BufferedWriter(out);
String s=getNomEtScore();/*cette fonction permet d'octenir la chaine
a ecrire dans le fichier html*/
b.write(s+" <br> "); /*br : pour une nouvelle ligne dans le fichier
html*/
b.newLine();/*pas obligatoire*/
b.flush();/*vide le tampon*/
b.close();
IMPORTANT : ces instructions marchent parfaitement chez moi
mais quand je mets ce code en ligne (avec un fichier scores.html vide
dans le meme dossier que les classes de mon jeu du serpent) et que je
fais une partie en ligne, rien n'est ajoute au fichier scores.html du
site alors que les instructions sont les memes que celles qui marchent
dans mon dossier en local...
Apparemment c'est parce qu'il n'arrive pas a trouver le fichier
scores.html qui, pourtant, est bien place dans le meme dossier que les
classes. (ca ne marche pas non plus en ligne avec ./scores.html alors
que ca marche en local)
Apparemment c'est parce qu'il n'arrive pas a trouver le fichier scores.html qui, pourtant, est bien place dans le meme dossier que les classes. (ca ne marche pas non plus en ligne avec ./scores.html alors que ca marche en local)
Je ne comprends vraiment pas ce qui cloche.
C'est parce que les applets n'ont pas le droit d'écrire sur le disque dur du poste naviguateur.
Pour résoudre ce problème il faut, soit utiliser une base de données (par exemple) sur le poste serveur, soit signer l'applet et demander au visiteur l'autorisation d'utiliser son poste.
-- Hervé AGNOUX http://www.diaam-informatique.com
Danious wrote:
Apparemment c'est parce qu'il n'arrive pas a trouver le fichier
scores.html qui, pourtant, est bien place dans le meme dossier que les
classes. (ca ne marche pas non plus en ligne avec ./scores.html alors
que ca marche en local)
Je ne comprends vraiment pas ce qui cloche.
C'est parce que les applets n'ont pas le droit d'écrire sur le disque dur du
poste naviguateur.
Pour résoudre ce problème il faut, soit utiliser une base de données (par
exemple) sur le poste serveur, soit signer l'applet et demander au visiteur
l'autorisation d'utiliser son poste.
Apparemment c'est parce qu'il n'arrive pas a trouver le fichier scores.html qui, pourtant, est bien place dans le meme dossier que les classes. (ca ne marche pas non plus en ligne avec ./scores.html alors que ca marche en local)
Je ne comprends vraiment pas ce qui cloche.
C'est parce que les applets n'ont pas le droit d'écrire sur le disque dur du poste naviguateur.
Pour résoudre ce problème il faut, soit utiliser une base de données (par exemple) sur le poste serveur, soit signer l'applet et demander au visiteur l'autorisation d'utiliser son poste.
-- Hervé AGNOUX http://www.diaam-informatique.com
Danious
Merci pour ta reponse. Etant donne que c'est une page perso de wanadoo, je ne peux pas y creer une base de donnees a moins de payer 9 par mois (l'arnaque), donc je vais plutot signer l'applet. J'ai trouve plusieurs tutoriaux ou sites qui en parlent mais ils n'ont pas l'air tres complets (a moins que ce soit vraiment facile a faire) en tout cas j'essayerai de signer moi meme l'applet prochainement.
Si quelqu'un, justement, connais un site efficace qui en parle et qu'il a deja teste personnellement, je suis preneur...
Danious
Merci pour ta reponse.
Etant donne que c'est une page perso de wanadoo, je ne peux pas y creer
une base de donnees a moins de payer 9 par mois (l'arnaque), donc je
vais plutot signer l'applet. J'ai trouve plusieurs tutoriaux ou sites
qui en parlent mais ils n'ont pas l'air tres complets (a moins que ce
soit vraiment facile a faire) en tout cas j'essayerai de signer moi
meme l'applet prochainement.
Si quelqu'un, justement, connais un site efficace qui en parle et qu'il
a deja teste personnellement, je suis preneur...
Merci pour ta reponse. Etant donne que c'est une page perso de wanadoo, je ne peux pas y creer une base de donnees a moins de payer 9 par mois (l'arnaque), donc je vais plutot signer l'applet. J'ai trouve plusieurs tutoriaux ou sites qui en parlent mais ils n'ont pas l'air tres complets (a moins que ce soit vraiment facile a faire) en tout cas j'essayerai de signer moi meme l'applet prochainement.
Si quelqu'un, justement, connais un site efficace qui en parle et qu'il a deja teste personnellement, je suis preneur...
Danious
Shorty
C'est assez simple de signer une applet avec un certificat autosigné. En gros c'est juste une commande keytool pour générer le certificat et une commande jarsigner pour signer le jar de ton applet.
Tu peux déjà voir : http://java.sun.com/developer/technicalArticles/Security/Signed/
C'est assez simple de signer une applet avec un certificat autosigné.
En gros c'est juste une commande keytool pour générer le certificat
et une commande jarsigner pour signer le jar de ton applet.
Tu peux déjà voir :
http://java.sun.com/developer/technicalArticles/Security/Signed/
C'est assez simple de signer une applet avec un certificat autosigné. En gros c'est juste une commande keytool pour générer le certificat et une commande jarsigner pour signer le jar de ton applet.
Tu peux déjà voir : http://java.sun.com/developer/technicalArticles/Security/Signed/
damien guerin
Tu veux écrire sur le serveur ou sur la machine cliente??? Car c'est pas pareil. Normalement c'est sans souci d'écrire sur le serveur... Par contre sur le client, tu peux peut etre utiliser les cookies non?
Pour info, chez moi, ton jeu ne fonctionne pas, impossible de controler le serpent...! Les touches HAUT BAS GAUCHE DROIT ne réponde pas à l'applet...!
Tu veux écrire sur le serveur ou sur la machine cliente??? Car c'est
pas pareil. Normalement c'est sans souci d'écrire sur le serveur...
Par contre sur le client, tu peux peut etre utiliser les cookies non?
Pour info, chez moi, ton jeu ne fonctionne pas, impossible de controler
le serpent...! Les touches HAUT BAS GAUCHE DROIT ne réponde pas à
l'applet...!
Tu veux écrire sur le serveur ou sur la machine cliente??? Car c'est pas pareil. Normalement c'est sans souci d'écrire sur le serveur... Par contre sur le client, tu peux peut etre utiliser les cookies non?
Pour info, chez moi, ton jeu ne fonctionne pas, impossible de controler le serpent...! Les touches HAUT BAS GAUCHE DROIT ne réponde pas à l'applet...!
Danious
Les touches HAUT BAS GAUCHE DROIT ne réponde pas à l'applet...!
pour jouer au serpent, il faut d'abord cliquer dans le cadre du jeu pour que l'applet ait le "focus" sur le clavier. J'aurai pu ajouter l'instruction requestFocus() dans le code pour que le focus soit automatiquement active des que l'applet est lancee (c'est a dire des que tu arrives sur la page) mais si je fais ca, il est alors impossible de cliquer autre part car c'est l'applet qui a la priorite sur tout (c'est a dire qu'il serait impossible de cliquer sur le lien "menu principal" par exemple)
Si ca ne marche toujours pas en cliquant sur l'applet, il faudrait que tu me tiennes au courant et a ce moment la j'ajouterai un traitement pour d'autres touches (genre t,g,f,h en plus de haut,bas droite gauche) car c'est possible que les constantes du style VK_UP (pour la touche "haut") ne marchent pas chez tout le monde.
Tu veux écrire sur le serveur ou sur la machine cliente???
Bonne question ! En fait, dans le code actuel, il n'y a qu'une instruction qui ecrit dans un fichier du repertoire courant avec une simple instruction write() d'un BufferedWriter associe a un fichier du repertoire courant. Etant donne qu'en principe les classes sont copiees chez le client et sont executees depuis chez lui, je pense que mon instruction va ecrire chez lui. Evidemment, ce que je voulais faire, moi, c'est plutot que ca ecrive sur le serveur, pour que les joueurs puissent voir leurs scores affiches directement en ligne sur mon site.
Mais dans ce cas, comment je peux faire ca?
Danious
Les touches HAUT BAS GAUCHE DROIT
ne réponde pas à
l'applet...!
pour jouer au serpent, il faut d'abord cliquer dans le cadre du jeu
pour que l'applet ait le "focus" sur le clavier.
J'aurai pu ajouter l'instruction requestFocus() dans le code pour que
le focus soit automatiquement active des que l'applet est lancee (c'est
a dire des que tu arrives sur la page) mais si je fais ca, il est alors
impossible de cliquer autre part car c'est l'applet qui a la priorite
sur tout (c'est a dire qu'il serait impossible de cliquer sur le lien
"menu principal" par exemple)
Si ca ne marche toujours pas en cliquant sur l'applet, il faudrait que
tu me tiennes au courant et a ce moment la j'ajouterai un traitement
pour d'autres touches (genre t,g,f,h en plus de haut,bas droite gauche)
car c'est possible que les constantes du style VK_UP (pour la touche
"haut") ne marchent pas chez tout le monde.
Tu veux écrire sur le serveur ou sur la
machine cliente???
Bonne question !
En fait, dans le code actuel, il n'y a qu'une instruction qui ecrit
dans un fichier du repertoire courant avec une simple instruction
write() d'un BufferedWriter associe a un fichier du repertoire courant.
Etant donne qu'en principe les classes sont copiees chez le client et
sont executees depuis chez lui, je pense que mon instruction va ecrire
chez lui. Evidemment, ce que je voulais faire, moi, c'est plutot que ca
ecrive sur le serveur, pour que les joueurs puissent voir leurs scores
affiches directement en ligne sur mon site.
Les touches HAUT BAS GAUCHE DROIT ne réponde pas à l'applet...!
pour jouer au serpent, il faut d'abord cliquer dans le cadre du jeu pour que l'applet ait le "focus" sur le clavier. J'aurai pu ajouter l'instruction requestFocus() dans le code pour que le focus soit automatiquement active des que l'applet est lancee (c'est a dire des que tu arrives sur la page) mais si je fais ca, il est alors impossible de cliquer autre part car c'est l'applet qui a la priorite sur tout (c'est a dire qu'il serait impossible de cliquer sur le lien "menu principal" par exemple)
Si ca ne marche toujours pas en cliquant sur l'applet, il faudrait que tu me tiennes au courant et a ce moment la j'ajouterai un traitement pour d'autres touches (genre t,g,f,h en plus de haut,bas droite gauche) car c'est possible que les constantes du style VK_UP (pour la touche "haut") ne marchent pas chez tout le monde.
Tu veux écrire sur le serveur ou sur la machine cliente???
Bonne question ! En fait, dans le code actuel, il n'y a qu'une instruction qui ecrit dans un fichier du repertoire courant avec une simple instruction write() d'un BufferedWriter associe a un fichier du repertoire courant. Etant donne qu'en principe les classes sont copiees chez le client et sont executees depuis chez lui, je pense que mon instruction va ecrire chez lui. Evidemment, ce que je voulais faire, moi, c'est plutot que ca ecrive sur le serveur, pour que les joueurs puissent voir leurs scores affiches directement en ligne sur mon site.
Mais dans ce cas, comment je peux faire ca?
Danious
damien guerin
Bon, désolé, après avoir cliquer, ça marche, on peut diriger le serpent ;) Si tu souhaites écrire sur le serveur, il n'y pas besoin de certificat... Ta méthode devrait fonctionner, tu dois pouvoir écrire dans le serveur...Tu devrais essayer d'écrire via un chemin en absolu, ou bien faire afficher le répertoire courant, je pense que le pb vient de là... Mais sinon, y a toujours la possibilité de passer par un script perl ou php que ton applet appelerai mais ce n'est pas très académique. Non, franchement, tu dois pouvoir le faire directement en java. Tiens moi nous au courant.
Bon, désolé, après avoir cliquer, ça marche, on peut diriger le
serpent ;)
Si tu souhaites écrire sur le serveur, il n'y pas besoin de
certificat... Ta méthode devrait fonctionner, tu dois pouvoir écrire
dans le serveur...Tu devrais essayer d'écrire via un chemin en absolu,
ou bien faire afficher le répertoire courant, je pense que le pb vient
de là... Mais sinon, y a toujours la possibilité de passer par un
script perl ou php que ton applet appelerai mais ce n'est pas très
académique. Non, franchement, tu dois pouvoir le faire directement en
java.
Tiens moi nous au courant.
Bon, désolé, après avoir cliquer, ça marche, on peut diriger le serpent ;) Si tu souhaites écrire sur le serveur, il n'y pas besoin de certificat... Ta méthode devrait fonctionner, tu dois pouvoir écrire dans le serveur...Tu devrais essayer d'écrire via un chemin en absolu, ou bien faire afficher le répertoire courant, je pense que le pb vient de là... Mais sinon, y a toujours la possibilité de passer par un script perl ou php que ton applet appelerai mais ce n'est pas très académique. Non, franchement, tu dois pouvoir le faire directement en java. Tiens moi nous au courant.
vc.spam
Salut,
Pour écrire sur le serveur, il te faut des droits en écriture sur le fichier. Le plus simple c'est peut-être d'utiliser l'adresse FTP du fichier (regardes la classe java.net.URLConnection). Bref, tu utilises la connexion dont tu te sers pour la MAJ de ton site. Par contre, en décompilant l'applet, on aura l'accès complet à ton site perso :-(... Après, il faut penser au accès multi client. Quand deux personnes modifient simultanéments... Il faudra gèrer ça...
A+
Vincent
Salut,
Pour écrire sur le serveur, il te faut des droits en écriture sur le
fichier. Le plus simple c'est peut-être d'utiliser l'adresse FTP du
fichier (regardes la classe java.net.URLConnection). Bref, tu utilises
la connexion dont tu te sers pour la MAJ de ton site. Par contre, en
décompilant l'applet, on aura l'accès complet à ton site perso
:-(...
Après, il faut penser au accès multi client. Quand deux personnes
modifient simultanéments... Il faudra gèrer ça...
Pour écrire sur le serveur, il te faut des droits en écriture sur le fichier. Le plus simple c'est peut-être d'utiliser l'adresse FTP du fichier (regardes la classe java.net.URLConnection). Bref, tu utilises la connexion dont tu te sers pour la MAJ de ton site. Par contre, en décompilant l'applet, on aura l'accès complet à ton site perso :-(... Après, il faut penser au accès multi client. Quand deux personnes modifient simultanéments... Il faudra gèrer ça...
A+
Vincent
Bernard Koninckx
Les privilèges sur les fichiers en UNIX, LINUX sont si mes souvenirs sont bons: R : lecture W : écriture X : exécution
U : User G : Group O : Others A : All
Il lui suffirait donc de mettre son flag en écriture et lecture pour les Others et All ... C'est pas très catholique, m'enfin. C'est vrai aussi que n'importe quel plaisantin peut flinguer son fichier puisqu'il sera accessible par tous.
Je me trompe ???
Bernard
a écrit dans le message de news: Salut,
Pour écrire sur le serveur, il te faut des droits en écriture sur le fichier. Le plus simple c'est peut-être d'utiliser l'adresse FTP du fichier (regardes la classe java.net.URLConnection). Bref, tu utilises la connexion dont tu te sers pour la MAJ de ton site. Par contre, en décompilant l'applet, on aura l'accès complet à ton site perso :-(... Après, il faut penser au accès multi client. Quand deux personnes modifient simultanéments... Il faudra gèrer ça...
A+
Vincent
Les privilèges sur les fichiers en UNIX, LINUX sont si mes souvenirs sont
bons:
R : lecture
W : écriture
X : exécution
U : User
G : Group
O : Others
A : All
Il lui suffirait donc de mettre son flag en écriture et lecture pour les
Others et All ... C'est pas très catholique, m'enfin. C'est vrai aussi que
n'importe quel plaisantin peut flinguer son fichier puisqu'il sera
accessible par tous.
Je me trompe ???
Bernard
<vc.spam@free.fr> a écrit dans le message de
news:1118681412.654763.51670@o13g2000cwo.googlegroups.com...
Salut,
Pour écrire sur le serveur, il te faut des droits en écriture sur le
fichier. Le plus simple c'est peut-être d'utiliser l'adresse FTP du
fichier (regardes la classe java.net.URLConnection). Bref, tu utilises
la connexion dont tu te sers pour la MAJ de ton site. Par contre, en
décompilant l'applet, on aura l'accès complet à ton site perso
:-(...
Après, il faut penser au accès multi client. Quand deux personnes
modifient simultanéments... Il faudra gèrer ça...
Les privilèges sur les fichiers en UNIX, LINUX sont si mes souvenirs sont bons: R : lecture W : écriture X : exécution
U : User G : Group O : Others A : All
Il lui suffirait donc de mettre son flag en écriture et lecture pour les Others et All ... C'est pas très catholique, m'enfin. C'est vrai aussi que n'importe quel plaisantin peut flinguer son fichier puisqu'il sera accessible par tous.
Je me trompe ???
Bernard
a écrit dans le message de news: Salut,
Pour écrire sur le serveur, il te faut des droits en écriture sur le fichier. Le plus simple c'est peut-être d'utiliser l'adresse FTP du fichier (regardes la classe java.net.URLConnection). Bref, tu utilises la connexion dont tu te sers pour la MAJ de ton site. Par contre, en décompilant l'applet, on aura l'accès complet à ton site perso :-(... Après, il faut penser au accès multi client. Quand deux personnes modifient simultanéments... Il faudra gèrer ça...
A+
Vincent
Ice
Bonjour Danious !
Après maintes réflexion, j'en conclue que la réponse la plus plausible est celle de
Pour un accès général (et un enregistrement) de tous les scores, il faut que ces données soient stockées sur le serveur. La seul et unique solution est de soit se connecter à ton site avec le protocole HTTP et recuperer le fichier, y inscrire le code et le renvoyer (methode PUT du protocole) ou alors un accès ftp.
Mais je suis en train de voir une autre solution, plutot pas mal, mais je crois que ton serveur qeb ne doit pas pouvoir effectuer cela, c'est en fait, avec des .war et des applications tournants cotés serveur. Mais bon, tu voie, au moins quelles solutions s'offrent à toi.
Cordialement votre,
Ice. XD
Bonjour Danious !
Après maintes réflexion, j'en conclue que la réponse la plus
plausible est celle de vc.s...@free.fr.
Pour un accès général (et un enregistrement) de tous les scores, il
faut que ces données soient stockées sur le serveur. La seul et
unique solution est de soit se connecter à ton site avec le protocole
HTTP et recuperer le fichier, y inscrire le code et le renvoyer
(methode PUT du protocole) ou alors un accès ftp.
Mais je suis en train de voir une autre solution, plutot pas mal, mais
je crois que ton serveur qeb ne doit pas pouvoir effectuer cela, c'est
en fait, avec des .war et des applications tournants cotés serveur.
Mais bon, tu voie, au moins quelles solutions s'offrent à toi.
Après maintes réflexion, j'en conclue que la réponse la plus plausible est celle de
Pour un accès général (et un enregistrement) de tous les scores, il faut que ces données soient stockées sur le serveur. La seul et unique solution est de soit se connecter à ton site avec le protocole HTTP et recuperer le fichier, y inscrire le code et le renvoyer (methode PUT du protocole) ou alors un accès ftp.
Mais je suis en train de voir une autre solution, plutot pas mal, mais je crois que ton serveur qeb ne doit pas pouvoir effectuer cela, c'est en fait, avec des .war et des applications tournants cotés serveur. Mais bon, tu voie, au moins quelles solutions s'offrent à toi.
Cordialement votre,
Ice. XD
damien guerin
Accessible par tous??? Faudra que tu me montres comment faire alors... Il y a quand même une connexion (sécurisé) à faire sur la machine avant de pouvoir écrire.
D'idéal c'est évident il faut un serveur SQL mais ne pouvant en avoir, l'écriture dans un fichier est la meilleure solution à mon sens. Le mieux c'est de le coupler avec php ou jsp. Java écrit dans un fichier "score.ini" (données brutes du style toto:score1, etc...) et à la consultation des scores par le client via "scores.php", php ouvre score.ini, effectue le classement et génère le html adéquat. Le tour est joué. Bien sur java peut écrire directement le score.html mais c'est vrai que c'est pas très propre et ça devient vite bordélique.
Vlà.
Accessible par tous???
Faudra que tu me montres comment faire alors...
Il y a quand même une connexion (sécurisé) à faire sur la machine
avant de pouvoir écrire.
D'idéal c'est évident il faut un serveur SQL mais ne pouvant en
avoir, l'écriture dans un fichier est la meilleure solution à mon
sens. Le mieux c'est de le coupler avec php ou jsp. Java écrit dans un
fichier "score.ini" (données brutes du style toto:score1, etc...) et
à la consultation des scores par le client via "scores.php", php ouvre
score.ini, effectue le classement et génère le html adéquat. Le tour
est joué. Bien sur java peut écrire directement le score.html mais
c'est vrai que c'est pas très propre et ça devient vite bordélique.
Accessible par tous??? Faudra que tu me montres comment faire alors... Il y a quand même une connexion (sécurisé) à faire sur la machine avant de pouvoir écrire.
D'idéal c'est évident il faut un serveur SQL mais ne pouvant en avoir, l'écriture dans un fichier est la meilleure solution à mon sens. Le mieux c'est de le coupler avec php ou jsp. Java écrit dans un fichier "score.ini" (données brutes du style toto:score1, etc...) et à la consultation des scores par le client via "scores.php", php ouvre score.ini, effectue le classement et génère le html adéquat. Le tour est joué. Bien sur java peut écrire directement le score.html mais c'est vrai que c'est pas très propre et ça devient vite bordélique.