escape
Goto Top

include Seite sperren

Servus @all

Ich habe einige Seiten mit Include gemacht.
Nun ist das Problem, dass wen einer eine Unterseite direkt aufruft, er kein Haeder oder footer hat auch die ganze css fehlen. (normal, da es sich hierbei nur im die Informationsseite handelt, die includet werden)

Der Link sieht in etwa so aus:

http://www.meinhost.de/inline.php?seite=club/vorstand.php

ein ganz schlauer könnte ja (oder auch über goggle) das eingeben:

http://www.meinhost.de/club/vorstand.php

das Problem ist dann eben das oben beschriebene... Wie kann ich das Lösen, dass wenn jemand auf so einer Unterseite zugreift, er automtisch zur Startseite:

http://www.meinhost.de/inline.php umgeleitet wird? Was muss in der vorstand.php stehen?

Besten Dank für jede Hilfe schon im voraus
escape

Content-Key: 32952

Url: https://administrator.de/contentid/32952

Printed on: April 24, 2024 at 20:04 o'clock

Member: Dani
Dani May 21, 2006 at 15:59:01 (UTC)
Goto Top
Legt doch einfach in den Ordner "club" eine .htaccess Datei an. Somit kann direkt nicht drauf zugreifen sondern nu indirekt.

AuthName "test"  
AuthType Basic
require valid-user

Andere Möglichkeit wäre, dass du irgendwie ne Variable setzt und dann auf jeder Seite schaust, ob es diese noch gibt.


Gruß
DAni
Member: filippg
filippg May 21, 2006 at 16:04:39 (UTC)
Goto Top
Hallo,

eine etwas "dreckige" Lösung: setze in der inline.php als erstes eine bestimmte Variable. In jeder include-Datei fragst du als erstes ab, ob diese Variable gesetzt ist, wenn nicht leitest du halt um an die inline.php.
Sauber wäre eine Lösung über den Dateispeicherort: Dateien, die aus dem Internet nicht direkt abrufbar sein sollen, solltest du auch so ablegen, dass das nicht geht. Also nicht in einen Unterordner von htdocs legen (sofern du auf dem Server die Möglichkeit dazu hast) oder eben Lesezugriff nur für PHP-Interpreter erlauben, nicht für Webserver (was aber auch nicht immer möglich ist).

Filipp

EDIT: Ups, da hätte ich zwischendurch nochmal nue laden sollen, hat sich meine Antwort mit Danis überschnitten.
Member: Dani
Dani May 21, 2006 at 16:08:23 (UTC)
Goto Top
Du könnest auch den $URL auslesen, die der Benutzer aufgerufen hat, und wenn dort z.b. club/ vorkommt, eine weiterleitung.


Gruß
Dani
Member: escape
escape May 21, 2006 at 16:36:15 (UTC)
Goto Top
Danke allen für die schnelle Antwort

Ich versteh was ihr meint, jedoch haperts bei mir mit der Umsetzung.

Vorschlag1
Mit .htaccess möchte ich nicht arbeiten, denn somit ist eine Weiterleitung nicht möglich, der User der z.b via Suchmaschine kommt ist dann aufgeschmissen.

Vorschlag2
1. kann leider nicht ausserhalb von htdocs speichern

Wie geht das:
2. Lesezugriff nur für PHP-Interpreter erlauben, nicht für Webserver
3. Könntest du mir nicht den Code für die "dreckige" Lösung geben. Wo muss ich was einbinden?


Vorschlag3
Das Auslesen mit $URL nützt nichts, denn das Verzeichnsi Club ist ja auch bei einer direkten eingabe immer vorhaden:
http://www.meinhost.de/club/vorstand.php

Gruss
Member: Dani
Dani May 21, 2006 at 16:47:51 (UTC)
Goto Top
Hi,
Vorschlag3
Das Auslesen mit $URL nützt nichts,
denn das Verzeichnsi Club ist ja auch bei
einer direkten eingabe immer vorhaden:
http://www.meinhost.de/club/vorstand.php
Das schon, aber wenn du immer nach einem "/" aufteilst, steht club immer in einem anderen Feld.


Gruß
DAni
Member: Guenni
Guenni May 23, 2006 at 10:14:45 (UTC)
Goto Top
@escape

Hi,

du hast doch in die Datei inline.php sicherlich noch andere
Dateien per include oder z.B. deine *.css ? Datei mittels
<link rel="stylesheet" type="text/css" href="inc/style.css"> eingebunden.

Dann prüfe in den Dateien, die eingebunden werden, doch einfach, ob z.B.
die Datei style.css(oder wie sie bei dir heißt) existiert.

if(!file_exists("inc/style.css")){
header("location: ../index.php");
}

Gruß
Günni
Member: escape
escape May 23, 2006 at 10:36:06 (UTC)
Goto Top

back-to-topGünni is the best !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Danke viel mals genau dass brauchte ich!
Member: escape
escape Jul 31, 2006 at 21:17:17 (UTC)
Goto Top
Servus alle
Wie bereits am 23.05.2006 geschrieben, geht alles. Nun bin ich auf einem neuen Server umgezogen und schon kommen die Problemen.

Ich erhalte nun diese Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/meinserver.ch/httpdocs/inline.php:9) in /home/httpd/vhosts/meinserver.ch/httpdocs/club/vorstand.php on line 3

der Eintrag in der Vorstand.php lautet so:


1. <?PHP
2. if(!file_exists("/css/style.css")){
3. header("location: /inline.php?includ=index.php");
4. }
5. ?>


muss hier echt noch eine else oder so Abfrage rein ? und wenn ja wie muss das ganze aussehen. Komischerweise ging das aber auf dem alten Server...
Besten Dank für die Hilfe
escape

Nachtrag:

Ich habe nun das zum Test so gemacht:

<?php
$filename = '/css/style.css';

if (file_exists($filename)) {
print "ok";
} else {
print "no";
}
?>

das Problem ist nun, es kommt immer o.k denn das File ist ja dort gelagert, aber eben es wird ja nicht geladen wenn man die vorstand.php direkt aufruft, und das sollte doch überprüft werden.
Kurzum er überprüft nur ob das File vorhanden ist, nicht ob es geladen wurde und das will ich ja