# index.php datei nur über link öffnen lassen



## schmaler73 (3. September 2017)

Ein nettes Hallo erstmal an alle fleißigen Helfer,

ich hoffe hier jemanden zu finden der mir helfen kann. Ich habe Google schon bemüht aber nicht wirklich erfolgreich muss ich gestehen. Ich habe folgendes Problem ich möchte einen Unterordner direktzugriff vermeiden in welchem sich einige Dateien befinden unter anderem die Datei (index.php). Diese allerdings soll bzw. muss von einer meiner Webseiten über einen Link aufgerufen werden. Habe einiges bei Google gelesen von .htaccss über php generierte Links. Jetzt muss ich zugeben wächst mir das ganze über den Kopf. Wäre dankbar über eure Hilfe.

mit freundlichen Grüßen

Schmaler73


----------



## sheel (3. September 2017)

Hi

geht es darum, dass Direkteingabe nicht erlaubt sein soll aber Linkklicken schon (wozu das auch immer gut sein soll)?

Oder ist der Link nur nach Login oder so sichtbar, bedeutet die Datei darf nur nach Login verwendet werden?

Oder...?


----------



## schmaler73 (3. September 2017)

Hi Sheel,

bisher ist auf der Hauptseite ein Bild mit Link Unterlegung<href........> darüber sollen die Besucher auf die im Unterordner befindliche Datei  Index.php zugreifen können. Dieses funktioniert ja auch aber viele umgehen dieses und kopieren sich dann die im Browser angezeigte Seite www.meineseite/unterordner/index.php und legen sich des als drop irgendwo im Browser an. Das mag ich aber nicht haben von daher soll www.meineseite/unterordner/index.php nicht erreichbar sein. Stattdessen eine eigene Fehler Seite mit Text und nach 20 Sek. umleitung zu www.meineseite.de aber von hier aus dann über den Linke muss der zugriff auf www.meineseite/unterordner/index.php erfolgen können. Hoffe so ist es verständlicher sorry wenn ich mich vielleicht etwas falsch ausgedrückt habe.

lg schmaler73


----------



## sheel (3. September 2017)

Naja, verstanden hab ichs, nur frag ich mich was der Sinn ist ... Benutzer ärgern?

Jedenfalls, eine ordentliche, nicht-umgehbare Lösung gibts nicht. Ob Folgendes gut genug für dich ist musst du selbst entscheiden, kenn die Seite usw. ja nicht.

Man könnte entweder auf der Zielseite den HTTP_REFERER prüfen (also "was ist die Seite, von der man per Link hergekommen ist").
Probleme

Fälschen ist trivial.
Es gibt genug Gründe, wo Link-Benutzer trotzdem keinen (richtigen) Referer haben. zB. manche Sicherheitssoftwares (Noscript, Torbrowser, Antivirus, ...) weil es für die Privatsphäre helfen kann
Manche Proxies (die manche User verwenden müssen weil sie sonst nicht ins Internet kommen, speziell bei Internetzugängen die nicht ihnen gehören (Firmen, Uni, usw.)) filtern den Referer auch raus

oder man könnte beim Linklick etwas JS auslösen, das zuerst eine Anweisung zum Server sendet dass der Link geklickt wurde, und erst dann die Seite wechselt. Der Server erlaubt den Aufruf der Zielseite nur, wenn die Erlaubnis-PHP-Datei zB. in den letzten 10 Sekunden aufgerufen wurde. (Oder man verwendet JS um ein Cookie zu setzen, das der Server prüft, und dann gleich weider annuliert, oder...)
Probleme

Fälschen ist trivial, wieder mal.
Wieder gibt es Gründe, warum das bei Linkklickern trotzdem nciht geht. Nämlich, wenn man (wieder aus Sicherheitsgründen usw.) JS nicht einfach so ausführen lasst (Noscript, ...)


----------



## schmaler73 (3. September 2017)

sheel hat gesagt.:


> Naja, verstanden hab ichs, nur frag ich mich was der Sinn ist ... Benutzer ärgern?
> 
> Jedenfalls, eine ordentliche, nicht-umgehbare Lösung gibts nicht. Ob Folgendes gut genug für dich ist musst du selbst entscheiden, kenn die Seite usw. ja nicht.
> 
> ...



Hallo Sheel,

als Benutzer ärgern würde ich das nicht bezeichnen ich möchte einfach die Benutzer dazu bringen, das sie über die Hauptseite gehen mehr eigentlich nicht. Aber ich bin absolut überfragt wie ich das hinbekomme. Ich habe mit folgendes überlegt die aufrufreihenfolge liegt ja wenn ich nur www.hauptseite/unterordner aufrufe bei index.html vor index.php d.h. beide Dateien anzulegen, index.html Inhalt "Text=Seite nicht zu erreichen nur über unsere Hauptseite www.... und nach 15 Sek. Weiterleitung dorthin), in die vorhanden index.php Einbau von abfrage DB mit get $tid (Weiß aber nicht genau wie). Und bei der Seite mit dem Link das so umbauen das bei klick Link Eintrag in DB erfolgt mit ID und tid wobei tid Gültigkeit ca. 2min oder sowas hat. Wenn ich da richtig denke könnte das doch gehen oder ????

LG schmaler73


----------



## sheel (3. September 2017)

schmaler73 hat gesagt.:


> die aufrufreihenfolge liegt ja wenn ich nur www.hauptseite/unterordner aufrufe bei index.html vor index.php


Wenn das beim Server so eingestellt ist...



schmaler73 hat gesagt.:


> d.h. beide Dateien anzulegen, index.html Inhalt "Text=Seite nicht zu erreichen nur über unsere Hauptseite www.... und nach 15 Sek. Weiterleitung dorthin),


...und dass jemand direkt index.php aufruft wird dadurch natürlich nicht verhindert.



schmaler73 hat gesagt.:


> in die vorhanden index.php Einbau von abfrage DB mit get $tid (Weiß aber nicht genau wie). Und bei der Seite mit dem Link das so umbauen das bei klick Link Eintrag in DB erfolgt mit ID und tid wobei tid Gültigkeit ca. 2min oder sowas hat. Wenn ich da richtig denke könnte das doch gehen oder ????


Das ist Lösung 2 von meinem Post oben, und die Gründe warum das nicht ideal ist stehen dort auch: Einfach umgehbar (vorausgesetzt es gibt einen Anlass, das zu umgehen ... weiß ja nicht, was die Seite eigentlich beinhaltet), und funktioniert nur wenn man keinen Scriptblocker etc. hat.


----------



## schmaler73 (3. September 2017)

sheel hat gesagt.:


> Wenn das beim Server so eingestellt ist...
> 
> 
> ...und dass jemand direkt index.php aufruft wird dadurch natürlich nicht verhindert.
> ...



Hallo Sheel das Ganze beinhaltet ein Webradio ich möchte halt das die Hörer über die Hauptseite zum Chat gehen und nicht einmal auf Chat Link klicken und dann aus dem Browser die Zeile kopieren und die als Lesezeichen speichern. Und ab dann gehen alle nur noch über das Lesezeichen zum Chat, weil dann wird sich Beschwert  das man ja nix mitbekommt obwohl auf der Hauptseite immer alles steht, nutzt aber ja nix wenn man da nicht hingeht, also hilft nur ein wenig druck, man muss dort drüber sonst nix Chat.

lg schmaler73


----------



## schmaler73 (8. September 2017)

Zur Lösung meines Problems das ich eine index.php Datei nur  über einen link von meiner Hauptseite
her öffnen lassen will, habe ich mir folgendes überlegt.

Ich weiß weder ob oder wenn wie das möglich ist. Aber mein Gedanke ist folgender:

Wenn auf der Hauptseite www.meineseite.de  der link plauderecke angeklickt wird dann soll dieser weiterleiten zum unterordner /unterotner/index.php.

Mein Ansatz dazu nun folgender

Platzierung  einer Weiterleitung in unterorner/unterordner zurück zu www.meineseite.de 
in einer html Datei .
Einbau von Datei erlaube.php diese fragt DB mysql erlaube ab –get id  
wenn also id vorhanden dann Weiterleitung an index.php und lösche die ausgelesene id aus DB.

Dazu muss der link auf der Hauptseite <a target="_blank" href="http://unterornder/unterordner/erlaube.php">Plauderecke</a> die Datei erlaube.php öffnen und gleichzeitig eine ID erzeugen und in  die DB eintragen, die ID sollte eine zahl zwischen 100000 und 1000000 sein. Und max. 2 Minuten Gültig sein danach automatisch gelöscht werden für den fall das index.php mal nicht reagiert und die ID nicht abfragt und somit löscht.

Jetzt meine Frage 1. Geht sowas? Und 2. Wie geht sowas?

Bis für jede  Hilfe Dankbar

LG schmaler 73


----------



## sheel (8. September 2017)

schmaler73 hat gesagt.:


> Hallo Sheel das Ganze beinhaltet ein Webradio ich möchte halt das die Hörer über die Hauptseite zum Chat gehen und nicht einmal auf Chat Link klicken und dann aus dem Browser die Zeile kopieren und die als Lesezeichen speichern. Und ab dann gehen alle nur noch über das Lesezeichen zum Chat, weil dann wird sich Beschwert das man ja nix mitbekommt obwohl auf der Hauptseite immer alles steht, nutzt aber ja nix wenn man da nicht hingeht, also hilft nur ein wenig druck, man muss dort drüber sonst nix Chat.



In dem Fall ist es wohl kein Weltuntergang, wenn es wirklich wer umgeht ... und da ein Webradio vermutlich ohne JS nicht funktioniert, ist die angesprochene Lösung durchaus machbar.

Von HTML-Weiterleitungen usw. im neuesten Post würd ich eher abraten.

Auf der Seite, wo der Link ist:
Die Zieladresse nur als "#" anschreiben.
Mit JS bei onload (oder je nach Framework anders) einen click-Listener auf den Link setzen.
Bei Klick einen Ajax-Request zu erlaube.php absetzen, und beim Aufruf einen success-Handler eintragen
Im Success-Handler die von erlaube.php erhaltene Zahl nehmen und zielseite.php?erlaubnis=diezahl aufrufen

DB: EIne Tabelle mit einer IP und einem Timestamp pro Zeile.

Cronjob: Immer wieder mal (zB. stündlich) alle DB-Einträge löschen, deren Timestamp älter als zB. eine Stunde ist.

erlaube.php: Die IP vom Client nehmen. Falls es die in der DB schon gibt, Timestamp auf "jetzt" setzen. Sonst ein neuer EIntrag mit IP, jetztigem Timestamp, und ein zufälligen Zahl. Dann (in beiden Fällen) die Zahl an den Client zurücksenden.

Zielseite:
Wenn keine Nummer übergeben wurde, Weiterleitung per header location zur Linkseite (und exit). Falls für die Zahl kein DB-EIntrag exisitert, oder die eingetragene IP nicht zum aktuellen Client passt, oder der Timestamp älter als ein paar Minuten ist, auch Weiterleitung.
Sonst eben Musik...

...
und nur damit es nochmal gesagt ist, das kann auch guten Benutzern Probleme bereiten, und es ist umgehbar.


----------

