Hungarian
Amikor egy JAVA applet van egy oldalon (Flash is lehet) az nem ugyanazt a session Id-t használja, mint amit maga az oldal, ezért a szerver oldali PHP kód másik böngész?nek ismeri fel. A megoldás:
- A PHP kód a web oldal legenerálásakor beírja az applet definíciójába az aktuális session azonosítót a session_id() függvény segítségével.
- Amikor a JAVA applet elindul a weboldalról ezt a paramétert beolvassa a getParameter() függvénnyel és letárolja egy String típusú változóban.
- Amikor a JAVA meghívja a szerver oldali scriptet, az url-hez hozzáfűzi az aktuálisan lementett session Id-t.
- A szerver oldali script figyeli, hogy a $_GET paraméterek között ott van-e egy megadott nevű paraméter és ha igen, akkor azzal a paraméterrel nyitja meg a session-t. Alul van egy kód a megoldás bemutatására.
Példakód:
Applet kód a html oldalon
<applet code="DataGrid" archive="DataGrid.jar"mayscript>
...
<param name="SID" value="abcdef11376671d3evrh5qnvnvun5"> //actual session ID
</applet>
...
<param name="SID" value="abcdef11376671d3evrh5qnvnvun5"> //actual session ID
</applet>
JAVA kód az appletben:
private String SID;
....
SID = getParameter("SID");
....
SID = getParameter("SID");
...
URL url=null;
URLConnection con=null;
String sURL = "server.php?cmd=FUNC:MuszerRow:"+id+"&sid="+SID;
try {
url = new URL(getCodeBase(), sURL);
con = url.openConnection();
con.connect();
BufferedReader input = new BufferedReader(new InputStreamReader(con.getInputStream()));
String s = input.readLine();
...
}catch(Exception e){
System.out.print("Error: " + e.toString() );
}
URL url=null;
URLConnection con=null;
String sURL = "server.php?cmd=FUNC:MuszerRow:"+id+"&sid="+SID;
try {
url = new URL(getCodeBase(), sURL);
con = url.openConnection();
con.connect();
BufferedReader input = new BufferedReader(new InputStreamReader(con.getInputStream()));
String s = input.readLine();
...
}catch(Exception e){
System.out.print("Error: " + e.toString() );
}
Szerver oldali script a server.php kódban
<?php
session_start();
if(isset($_GET["sid"]) && (session_id() != $_GET["sid"])){
session_write_close();
session_id($_GET["sid"]);
session_start();
}
....
?>
session_start();
if(isset($_GET["sid"]) && (session_id() != $_GET["sid"])){
session_write_close();
session_id($_GET["sid"]);
session_start();
}
....
?>