zu den frames, oberflächlich aber das ist mir als erstes eingefallen:
http://de.wikipedia.org/wiki/Frame_(HTML)#Nachteile
Zu den links:
Also ganz verhindern wirst du das leider nicht können, das der user den parameter sieht. Du kannst natürlich statt direkten koordinaten eine ID nehmen oder einen beliebigen string der dann vom Server ausgewertet wird.
z.b. statt move(1,9) dann move('blablubb') und der server weiß dann das blablubb = 1;9 ist.
das teleportieren könntest du umgehen wenn du vorher regeln festlegst nach denen sich der user bewegen kann.
z.b. (alles ausgedacht), ich bin auf Feld 3;3 dann kann ich nur auf 3;2, 3;4; 2;3 und 4;3 gehen.
Wenn man also einen ungültigen link anklickt gibts nen fehler.
Das ist aber ein grundsätzliches Problem was man in der Webentwicklung hat, da die gesamte Darstellung Clientseitig erfolgt. Der Server generiert ja ledeglich Text, der vom Browser als HTML interpretuert wird und entsprechend Formatiert.
Da jetzt aber auch keine feste Verbidnung zum Server besteht (obwohl WebSockets das können...) muss man anschließend alle daten die man ändern will wieder zum Server zurück senden. Zudem schickt der browser auf jeden fall ein HTTP request raus, das kann man recht einfach abfangen und auslesen, also selbst wenn du den link irgendwie geheimhalten könntest, verbergen was da hin und her geschickt wird kannst du nicht. Das musst du auf jedenfall Serverseitig regeln.
Aber weiter im Text, ich sagte doch bereits was du dir angucken musst wenn auf jQuery verzichten willst, nämlich das XMLHttpRequest Objekt
Aber da ich gerade gut drauf bin hier ein kleines Script:
Code:
xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
antwort = xhr.responseText;
// Jetzt alles machen, z.b. Frames laden
// Besser wäre es aber noch die antwort des
// Servers auszuwerten
}
}
function move(linkid) {
xhr.open("GET", "pfad/zu/script.php?id="+linkid, true);
xhr.send();
}
habs jetzt nicht gestestet aber sollte stimmen, auch wenn es quick & dirty ist.
wenn du jetzt ein bild nach folgendem schema hast:
Code:
<img src="" onclick="move(5)">
wird ein asynchroner (also im hintergrund laufender)request an den server geschickt.
sobald dieser erfolgreich war wird die function die wir oben definiert haben ausgeführt. Denn dann ist der readyState = 4 und der Status Code des HTTP Requests ist 200 (alternativen sind z.b. 404 etc....)
in antwort steht dann alles was vom server zurückgeschickt wird.
im beispiel hast du jetzt die variable $_GET['id'] = 5 zur verfügung
Für alles weitere zum XMLHttpRequest würde ich mal google bemühen, wobei ich dennoch zu jQuery raten würde oder einem ähnlichen framework, bei 1~2 requests gehts noch die selber zu machen, aber jQuery erleichtert dir das bei mehreren enorm.
Und die XHR api ist wirklich verdammt kurz, dauert keine 10 minuten sich dort einzuarbeiten
Edit:
du könntest natürlich auch zufällig erzeugte Parameter nutzen und dir diese auf dem Server in einer Session speichern, wobei man das prinzip dahinter auch schnell rauskriegen könnte und wieder schummeln....
das ist auch wirklich das nervige an dieser Web 2.0 kacke. Man muss jede Arbeit mindestens doppelt machen, da man JS einfach manipulieren kann, oder gar aus einem ganz anderen Programm eine Anfrage an den Server schicken.