• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

CSS einbinden

  • Ersteller TheRealDarklord
  • Erstellt am

TheRealDarklord

Gast
Ich stehe vor einem Rätsel.

Ich binde meine CSS-Datein immer mit
PHP:
<link href="<?php echo $root ?>include/style.css" type="text/css" rel="STYLESHEET">
in mein HTML innerhalb der index.php ein
$root wird am Anfang als leer definiert (also $root="")
auf meinem lokalen PC zu Hause klappt das auch

nach dem Upload auf meinen Server wird die css-Datei nicht mehr geladen
ich sehe nur noch grafischen Quark
im generierten Quelltext steht alles so, wie ich es wünsche
auch die css-Datei liegt im Unter-Ordner "include" des root-Verzeichnisses

ich weiß nicht weiter, wieso sie nicht geladen wird
das kuriose an der Sache:
wenn ich
PHP:
include($root."include/style.css");
mache, dann wird mir der gesamte Inhalt der Datei angezeigt
also ist der Pfad zur Datei richtig, die Datei vorhanden

gebe ich den absoluten Pfad zur css-Datei an, wird sie geladen, aber dann müsste ich immer die scripte umscheiben wenn sie auf den server sollen...

kann mir jemand helfen?
 

Toddy

Wohlschmecker aus Vierlanden
Registriert
10.05.04
Beiträge
242
kannst du den Link zu der Seite im Internet hier veröffentlichen?
 

slartibartfast

Schöner von Nordhausen
Registriert
10.05.05
Beiträge
323
koennte es vielleicht an den Rechten liegen?

vielleicht hat der Ordner "include" oder die css-Datei besondere Datei-Rechte? Mit einem FTP-Programm würd ich das mal überprüfen.
Andere Möglichkeit: eine .htaccess in /include, die Web-Zugriffe verhindert (was für so ein Verzeichnis ja durchaus Sinn macht)

Was passiert denn, wenn du das css direkt in den root legst?


Grüße
slartibartfast
 

TheRealDarklord

Gast
hm, stimmt
im include-Ordner liegt eine .htaccess
das würde das Phänomen erklären...

man hab ich ein Brett vorm Kopf :-D
 

slartibartfast

Schöner von Nordhausen
Registriert
10.05.05
Beiträge
323
tja, manchmal hat man so ein Problem, und sieht nicht die Lösung, die einem vor den Füßen liegt...

Geht nicht nur dir so.

Hier zu fragen war eine gute Idee, nur so kann man manche Probleme lösen.
Indem man jemanden bittet, ihn mit der Nase draufzustoßen.
Sonst hat man die Lösung nach 2 Tagen und 2 Nächten immer noch nicht...


Grüße
slartibartfast
 

stk

Grünapfel
Registriert
05.01.04
Beiträge
7.141
Moin,
TheRealDarklord schrieb:
hm, stimmt
im include-Ordner liegt eine .htaccess
das würde das Phänomen erklären...
man hab ich ein Brett vorm Kopf :-D

Nein, würde es nicht, weil PHP sich nicht um die .htaccess schert. Der Zugriff eines includes erfolgt über Dateiebene, nicht über HTTP und nur dafür ist die .htaccess zuständig.

Du solltest viel mehr $root als "/" definieren und nicht als "", ansonsten hast Du relative Pfade. Wenn Die zugreifende Datei dann in einem Unterverzeichnis (sagen wir /download) liegt, würde sie auch in /download/include/ die CSS-Datei suchen, aber nicht finden.

Gruß Stefan
 

slartibartfast

Schöner von Nordhausen
Registriert
10.05.05
Beiträge
323
sorry, stk, aber genau das ist das Problem.

PHP includet die Datei, obwohl die .htaccess da ist, weil es lokale Rechte hat.
Das hat ja auch funktioniert.

Aufgerufen werden durch den Browser kann sie aber nicht (mit dem <link...>). .htaccess blockt die Web-Zugriffe.

nix für ungut :)

Grüße
slartibartfast
 

supermario

Gast
mal ne andere frage:
weshalb die css-datei so umständlich verlinken? wegen raubkopierern?
 

slartibartfast

Schöner von Nordhausen
Registriert
10.05.05
Beiträge
323
nee, das ist eigentlich das normale Vorgehen. Viel CSS direkt in die Seite reinzuschreiben ist unsauber und erhöht den Traffic/Die Ladezeit für die Seite
 

supermario

Gast
slartibartfast schrieb:
nee, das ist eigentlich das normale Vorgehen. Viel CSS direkt in die Seite reinzuschreiben ist unsauber und erhöht den Traffic/Die Ladezeit für die Seite
da hast du mich falsch verstanden...
ich rede nicht von externen stylesheets, sondern vom verlinken mit php include...
ich mach das mit
Code:
<style type="text/css">
<!--
	@import url("stylesheet.css");

-->
        </style>
 

MACRASSI

Gelbe Schleswiger Reinette
Registriert
21.11.04
Beiträge
1.754
Außerdem wenn man dann mal was in den CSS ändern möchte muss man das ja dann in allen Dateien machen und wenn man die CSS in einer externen Datei hat dann ändert man einfach da und hat alles geändert....

Gruß Rasmus
 

TheRealDarklord

Gast
@mario

Wieso ist die css-Datei umständlich verlinkt? Habe es doch simpel mit <link href="" ...> gemacht. Das ist noch kürzer als deine Variante ;)

Und imho kann man css-Dateien nicht effektiv schützen, da diese spätestens nach einem Seitenaufruf im Browsercache liegen und von dort kopiert werden können.
 

supermario

Gast
TheRealDarklord schrieb:
@mario

Wieso ist die css-Datei umständlich verlinkt? Habe es doch simpel mit <link href="" ...> gemacht. Das ist noch kürzer als deine Variante ;)

Und imho kann man css-Dateien nicht effektiv schützen, da diese spätestens nach einem Seitenaufruf im Browsercache liegen und von dort kopiert werden können.
na um die länge der buchstaben will ich mich jetzt nicht streiten ;)
für mich ist es nur umständlich .php dateien zu erstellen um eine cssdatei zuverlinken... und ich wollte nur wissen, weshalb in php?
 

stk

Grünapfel
Registriert
05.01.04
Beiträge
7.141
Moin,

wer lesen kann ist klar im Vorteil :oops:. Das ist ja gar kein PHP-include, der da gedacht ist, sondern ein schlichter <link>. @Supermario: Das dürfte auch deine Nachfrage auslösen. Um stets den korrekten Pfad zu haben wird per einfacher PHP-Routine der Präfix im Pfad - hier eben "" (obwohl ich nach wie vor "/" richtiger fände) gesetzt.

BTW: ob mit <link> oder @import ist dann von belang, wenn man damit bestimmten Browsern die CSS-Anweisung bewußt vorenthalten will. Die beiden Konstrukte werden nämlich je nach Schreibweise höchst unterschiedlich bis gar nicht interpretiert. Fällt in die Rubrik CSS-Hacks.

Gruß Stefan
 

supermario

Gast
stk schrieb:
Moin,

wer lesen kann ist klar im Vorteil :oops:. Das ist ja gar kein PHP-include, der da gedacht ist, sondern ein schlichter <link>. @Supermario: Das dürfte auch deine Nachfrage auslösen. Um stets den korrekten Pfad zu haben wird per einfacher PHP-Routine der Präfix im Pfad - hier eben "" (obwohl ich nach wie vor "/" richtiger fände) gesetzt.
is nicht? is doch php in html eingebunden...!? o_O
verstehe es trotzdem nicht... :eek:
 

stk

Grünapfel
Registriert
05.01.04
Beiträge
7.141
Moin,

nimm einfach mal alles raus, was PHP ist, dann bleibt über:

Code:
<link href="include/style.css" type="text/css" rel="STYLESHEET">

Also ganz schlicht eine HTML-Anweisung mit der Stylesheets im Headerbereich verlinkt werden.

Der PHP-Teil

Code:
<?php echo $root ?>

bewirkt lediglich das dem Pfad vorne der Inhalt der Variablen $root angefügt wird. Das ist dann von nöten, wenn auch Dateien, die in einem Unterverzeichnis liegen, zuverlässig das Stylesheet finden sollen, bzw. wenn die Pfade z.B. in Entwicklungsumgebung und echter Webpräsenz unterschiedlich sind.

Der HTML-Link schlug wegen der .htaccess Beschränkung fehl. Das würde er tun, unabhängig davon ob der PHP-Teil dazu kommt oder nicht. Da PHP per "echo" nur eine Ausgabe liefert, die den HTML-Teil erweitert ist PHP an der Ecke unerheblich. Was mich schlicht aus dem Tritt gebracht hat, war das "include" im Pfadnamen zum Stylesheet. Grob hingesehen fängt's mit "<?php" an und geht mit "include" weiter. Iss aber nicht :p.

Anders bei der zweiten Variante wo wirklich ein PHP include vorliegt, das aber nur zum Debuggen gedacht war. Dort wird auf Dateiebene, nicht über HTTP auf das Stylesheet zugegriffen und daher funktionierts.

Gruß Stefan
 

supermario

Gast
danke :)
du gibts bestimmt einen guten lehrer ab...
 

stk

Grünapfel
Registriert
05.01.04
Beiträge
7.141
Moin,

sogar 'nen Missionar ;)

Gruß Stefan