Code in derselben Datei beim klicken auf Link ausführen
-
Wie der Titel bereits aussagt möchte ich gerne Code der in Datei 1 steht ausfuehren nachdem ein Link der ebenfalls in Datei 1 steht angeklickt wurde.
.... ... ... Link *klick*----------- ... | ... | Auszuführender Code <-- ...
Nun meine Frage ist das möglich und wenn ja wie (am besten mit Beispielcode oder so)
Danke
greetz Silent
-
Ja, du könntest die OnClick-Eigenschaft des Links definieren, so daß sie die entsprechende Funktion aufruft:
<html> <head> <!-- auszuführender Code: --> <script type="text/javascript"> function test() { alert("Link klicked"); } </script> </head> <body> <!-- Link zur Ausführung --> <div onclick="test()">Hier klicken</div> </body> </html>
-
@Silentstorm: Meintest du überhaupt JavaScript?
-
Nunja die Datei in der die genannte Sache ablaufen soll ist ein Mixtur aus HTML und PHP Code Wenn man irgendwie auch PHP Code ausführen kann noch besser aber wenns nur wie oben beschrieben mit Java geht dann muss ich mir mal überlegen wie ich damit klar komme.
Der eigentliche Sinn der Aktion soll sein sicherzustellen das die Datei auf die der Link verweist nur über diese Datei aufgerufen werden kann nachdem man auf den Link geklickt hat und nicht per Direktlink auf die 2. Datei.
greetz SIlent
-
Uiuiui ... Da müssen wir erst einmal ein paar Dinge klar stellen:
HTML - Clientseitig
PHP - ServerseitivPHP kann nicht auf benutzerangaben reagieren, weil diese beim Client auftreten.
JavaScript != Java
JavaScript ist Clientseitig, kann aber abgeschaltet, blockiert und als gefährlich validiert werden. Da ein Dateizugriffsschutz Serverseitig erfolgen musst, kannst du JavaScript vergessen (ansonsten übrigens auch).
Bleiben also nur noch include-guards. Was das ist und wie du es benutzt kannst du mal bei Google o.ä. suchen, aber ich habe den Eindruck, dass dir ganz andere Grundlagen fehlen ...
-
Wenn Du PHP verwendest, kannst du in einer <form> via POST die gleiche Datei wieder laden. Allerdings musst du dann (z.B. via <input type="hidden">) irgendwas übergeben, um beim Aufruf der Seite dann den jeweiligen Kontext zu kennen, aus dem sie angefordert wurde. Ich mache das öfter.
Freu dich nicht zu früh über Java\1: der Server ist viel leichter zu kontrollieren als alle Clients.
-
cheopz schrieb:
Wenn Du PHP verwendest, kannst du in einer <form> via POST die gleiche Datei wieder laden. Allerdings musst du dann (z.B. via <input type="hidden">) irgendwas übergeben, um beim Aufruf der Seite dann den jeweiligen Kontext zu kennen, aus dem sie angefordert wurde. Ich mache das öfter.
Diese Methode ist Spielerei und hat mit Sicherheits nichts mehr zu tun. hidden-Felder sind ganz normale Daten der GET oder POST-Anfrage, und um die zu fälschen braucht man nicht einmal suchen, weil das hidden-Feld durch einen einfachen Blick in den Quellcode seine Magie bereits verspielt hat.
-
Auf die Daten in dem hidden-Feld hat der Benutzer natürlich Schreibzugriff. Aber in vielen Fällen stellen die übertragenen Daten kein Sicherheitsrisiko dar, beispielsweise wenn die Datei gar keine andere Eingabe mehr auswertet, sondern nur auf Basis dieser Optionen die Ausgabe ermittelt. Dass Eingaben auf Plausibilität überprüft werden müssen und auch eine fehlerhafte Eingabe korrekt verarbeitet werden soll, ist eine überlieferte Weisheit.
Man kann die Datei auch via GET aufrufen, das Sicherheitsrisiko bei der Übertragung ist genauso gross, wie sie bei der Übertragung im Rahmen der Anforderung irgendeiner anderen Datei wäre.
z.B. folgender Link:
http://www.google.at/search?hl=de&q=snafu&btnG=Google-Suche&meta=
Selbstverständlich kann der Benutzer die Parameter ändern. Sonst hätte das Ganze ja gar keinen Sinn.Die Reaktion auf das "Klicken auf einen Link" ist von der Seite des Servers gesehen jedenfalls die Anforderung einer Datei an den lokalen Webserver. Dieser Schritt ist nicht zu vermeiden, HTTP ist statuslos.
Auf dieses Problem weise ich hiemit hin, eine Spielerei würde ich das nicht nennen.
-
Als Spielerei habe ich es lediglich bezeichnet, eine Datei anhand einer POST- oder GET-Value vor Zugriffen zu schützen. Und das ist und bleibt eine Spielerei, denn es verdeckt, aber eine wirkliche Präventivmaßnahme würde ich es nicht nennen. Das es für manche Zwecke reicht mag ja sein, aber wenn man hier schon auf eine Frage nach Sicherheit, dann sollte man wenigstens nebenbei noch erwähnen, wenn man keinen Schutz einbaut, sondern nur einen Wollmantel nimmt und die Datei damit einwickelt.
-
Ich hatte folgendes überlesen:
Der eigentliche Sinn der Aktion soll sein sicherzustellen das die Datei auf die der Link verweist nur über diese Datei aufgerufen werden kann nachdem man auf den Link geklickt hat und nicht per Direktlink auf die 2. Datei.
Dazu hat Reyx sehr richtig bemerkt, dass dies ohne weiteres eine eher spielerische Art der Sicherung ist. Man müsste sich Gedanken über die übertragenen Daten machen: z.B. kann man Sie mit md5sum(crc32(X)-3) verschandeln, um ein wenig Verschleierung zu betreiben. Tatsächlich ist, wie gesagt, HTTP ein statusloses Protokoll und man kann nicht wissen, welche Seite der Client zuletzt angefordert hat, ohne tiefer in den Webserver einzugreifen (Zend bietet solche Möglichkeiten mit dem Apache, glaube ich, habe dies aber noch nie versucht).
@SilentStorm: Fazit: Reyx hatte Recht, Du solltest prüfen, wie gefährlich es sein kann, dass der Client die Parameter modifiziert. Wenn Du zum Schluss kommst, dass es kein Problem ist, wenn die Paramter verändert werden (z.B. bei Google der Fall) steht meiner "Spielerei" kein Problem im Weg und wir können uns über Beispielcode unterhalten. Wenn Du aber Bedenken mit der Sicherheit hast, wird die Sache schnell kompliziert. Wir bräuchten dann aber mehr Information zu deinem Projekt, um Dir helfen zu können.
-
In einer HTML Datei steht ein Link. <a href=... Normalerweise wird bei href ja auf die Datei verwiesen die geladen werden soll. Nun möchte ich dort aber keine Datei aufrufen sondern PHP-Code ausführen und danach nach dem der PHP Code ausgeführt worden ist die nächste Datei laden.
Die Sicherheit... hm nunja eigentlich ist es egal ob der User die übergebenen Parameter sieht denn wenn der erste Absatz so klappt dann bekommt er unter normalen Umständen nicht die Möglichkeit diese zu ändern und selbst wenn bringt es ihm nichts bzw. führt zu keiner "Gefahr"