Yadgar: Stylesheet wird nicht inkludiert

problematische Seite

Hi(gh)!

Auf einem lokal installierten Apache wird die Startseite (start-d.php) meines Homepageprojekts zwar angezeigt, allerdings ohne, dass die Stylesheet-Datei (format_start.css) mit inkludiert werden würde. Alle von start-d.php sind im Verzeichnis enthalten, die Rechte für alle Dateien auf 777 gesetzt - trotzdem wird start-d.php völlig unformatiert angezeigt!

Die relevanten Code-Zeilen:

start-d.php:

<?php
  require("head.php");
  require("navdata-d.php");
  require("nav.php");
  head("Willkommen im Khyberspace!", "format_start.css");
?>

head.php:

<?php
  function head($title, $stylesheet)
	{
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"';
	  echo '  "http://www.w3.org/TR/html4/loose.dtd">';
    echo '<html>';
    echo '  <head>';
		echo '    <title>'.$title.'</title>';		
	  echo '    <meta http-equiv="Content-Type" content="text/html; charset=utf8">';
	  echo '<link rel="stylesheet" href="'.$stylesheet.'" type="text/css"></link>';
    echo '  </head>';
	}	
?>

Wie ist das möglich?

Bis bald im Khyberspace!

Yadgar

  1. problematische Seite

    hallo

    <?php
      function head($title, $stylesheet)
    	{
        echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"';
    	  echo '  "http://www.w3.org/TR/html4/loose.dtd">';
        echo '<html>';
        echo '  <head>';
    		echo '    <title>'.$title.'</title>';		
    	  echo '    <meta http-equiv="Content-Type" content="text/html; charset=utf8">';
    	  echo '<link rel="stylesheet" href="'.$stylesheet.'" type="text/css"></link>';
        echo '  </head>';
    	}	
    ?>
    

    Das sagt dir das Netzwerkpanel deiner Browser-Tools. Du verwendest einen relativen Pfad. Die aufgelöste Url ist also abhängig vom Pfad der einbindenden Datei.

    link Elemente haben übrigens kein Endtag.

  2. problematische Seite

    @@Yadgar

    problematische Seite: 403 Forbidden.

    So wird das nichts.

    Alle von start-d.php sind im Verzeichnis enthalten, die Rechte für alle Dateien auf 777 gesetzt

    Ein deutliches Zeichen, dass du nicht weißt, was du tust.

    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"';
    

    Ernsthaft jetzt. Jetzt‽

    Wie alt ist das Projekt? 10 Jahre? 15 Jahre?

    echo '<link rel="stylesheet" href="'.$stylesheet.'" type="text/css"></link>';
    

    Dass ich es generell für eine Sch nicht so gute Idee halte, HTML-Tags mit PHP echo zu generieren, kann ich nicht oft genug wiederholen.

    Das </link>-End-Tag ist falsch.

    Wie sieht das generierte HTML aus?

    LLAP 🖖

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    1. problematische Seite

      Hi(gh)!

      Alle von start-d.php sind im Verzeichnis enthalten, die Rechte für alle Dateien auf 777 gesetzt

      Ein deutliches Zeichen, dass du nicht weißt, was du tust.

      Es geht nicht anders - lasse ich sie auf 700, 740 oder 744, kann ich mit dem Browser nicht drauf zugreifen und bekomme immer nur den 404er!

      echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"';
      

      Ernsthaft jetzt. Jetzt‽

      Wie alt ist das Projekt? 10 Jahre? 15 Jahre?

      echo '<link rel="stylesheet" href="'.$stylesheet.'" type="text/css"></link>';
      

      Dass ich es generell für eine Sch nicht so gute Idee halte, HTML-Tags mit PHP echo zu generieren, kann ich nicht oft genug wiederholen.

      Und warum bitte? Oder kann ich das mit meinem DAU-Hirnchen sowieso nicht erfassen, oh erhabener Hüter der Webprogrammierer-Orthodoxie?

      Das </link>-End-Tag ist falsch.

      Meinetwegen...

      Wie sieht das generierte HTML aus?

      Zwischenzeitlich habe ich die bisherige aptosid-Linux-Installation (das hier ist nicht mein eigener Rechner, sondern der meines Freundes in Alkena-Bunkenhagen, Märkisch-Afghanistan) durch eine Debian-oldstable ersetzt... folglich setze ich die Seite noch mal neu auf! Wartet noch eine Viertelstunde...

      Bis bald im Khyberspace!

      Yadgar

      P.S. Warum sind Programmier-Gurus eigentlich immer so arrogant? Scheint ein deutsches Phänomen zu sein - in der POV-Ray-Szene kenne ich das gar nicht!

      1. problematische Seite

        Hallo Yadgar,

        P.S. Warum sind Programmier-Gurus eigentlich immer so arrogant?

        Das mag für Gunnar gelegentlich bis manchmal zutreffend sein, mindestens jedoch mehr als diesem Forum gut tut. Immmer jedoch teilt er sein Wissen. Ausführliche, fachlich kompetente und adressatengerechte Antworten zeugen davon. Außerdem ist Gunnar kein Programmierguru. Die beiden Personen in diesem Forum, die ich als Programmierguru bezeichnen würde, habe ich in keiner Weise als arrogant kennen und schätzen gelernt.

        Bis demnächst
        Matthias

        --
        Pantoffeltierchen haben keine Hobbys.
      2. problematische Seite

        @@Yadgar

        Alle von start-d.php sind im Verzeichnis enthalten, die Rechte für alle Dateien auf 777 gesetzt

        Ein deutliches Zeichen, dass du nicht weißt, was du tust.

        Es geht nicht anders - lasse ich sie auf 700, 740 oder 744, kann ich mit dem Browser nicht drauf zugreifen und bekomme immer nur den 404er!

        Das sieht für mich so aus, als ob die Dateien nicht dem „Nutzer“ gehören, unter dem der Webserver läuft. Das wäre die Stellschraube; nicht alle Dateien für alle lesbar, änderbar und ausführbar zu machen. (I.d.R. müssen Dateien fürs Web auch nur lesbar, nicht ausführbar sein.)

        Hier bedenkenlos das Rechtesystem auszuhebeln nenne ich nicht zu wissen, was man tut. Das ist keine Arroganz, sondern die Beschreibung des aktuellen Ist-Zustands. Wenn dir das nicht passt: es liegt in deiner Hand, den Ist-Zustand zu ändern.

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
      3. problematische Seite

        @@Yadgar

        echo '<link rel="stylesheet" href="'.$stylesheet.'" type="text/css"></link>';
        

        Dass ich es generell für eine Sch nicht so gute Idee halte, HTML-Tags mit PHP echo zu generieren, kann ich nicht oft genug wiederholen.

        Und warum bitte?

        • <link rel="stylesheet" href="<?= $stylesheet ?>" type="text/css"> ist besser lesbar als
          echo '<link rel="stylesheet" href="'.$stylesheet.'" type="text/css">'

          (Nicht zuletzt, weil keine Strings mit . aneinandergehängt werden. Auch lässt sich der Quelltext besser einrücken.)

        • Man spart sich das Hantieren mit einfachen und doppelten Anführungszeichen und das ggfs. notwendige Escapen mit \.

        • Man kommt nicht in die Versuchung, bei der Ausgabe Dinge zu tun, die man längst vorher getan haben sollte – im V-Teil der EVA.

          PHP dient im A-Teil als Template-Sprache. Das darf sich durchaus im Code wiederspiegeln. (In Smarty wäre das Obige
          <link rel="stylesheet" href="{ $stylesheet }" type="text/css">)

          Wenn man keine Tags mit echo ausgibt, ist man zu sauberem Programmierstil (EVA) gezwungen. Und das kann ja nicht schaden.

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    2. problematische Seite

      Hi(gh)!

      Wie sieht das generierte HTML aus?

      So:

      	<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"><html>  <head>    <title>Willkommen im Khyberspace!</title>    <meta http-equiv="Content-Type" content="text/html; charset=utf8"><link rel="stylesheet" href="format_start.css" type="text/css"></link>  </head>  <body>
          <div>
            <p>
      	<a href="start-e.php" target="_top">[ English version ]</a>
            </p>
      <p style="text-align:center"><a href="impressum.php" target="_top"> Impressum </a>|<a href="bikeblog.php" target="_top"> Fahrrad-Blog </a>|<a href="#" target="_top"> Khyberspace </a>|<a href="#" target="_top"> POVEarth </a>|<a href="schwingungen-d.php" target="_top"> Schwingungen </a>|<a href="#" target="_top"> Rock-o-Data </a>|<a href="flagmaker_einfuehrung.php" target="_top"> Flagmaker </a>|<a href="musicalbox.php" target="_top"> Musical Box </a>|<a href="greenbook-d.php" target="_top"> GREENBOOK </a>|<a href="retrocomputing.php" target="_top"> Retrocomputing </a></p>      <h1>Willkommen im Khyberspace!</h1>
            <p>
      	<span class="i">Khyberspace? Das heißt doch Cyberspace! Oder?</span>
            </p>
            <p>
      	Nein, richtig gelesen: <span class="b">Khyberspace!</span>
            </p>
            <p>
      	<span class="i">Was ist Khyberspace?</span> 
            </p>
            <p>
      	Khyberspace ist ein <span class="b">virtuelles Afghanistan</span>.
            </p>
            <p>
      	<span class="i">Ein virtuelles Afghanistan? Also so ein Egoshooter mit Hindukusch-Kulisse? Wo man wahlweise die Amerikaner oder die Taliban spielen kann?</span>
            </p>
            <p>
              Nein, definitiv kein Egoshooter! Wer die diversen afghanischen Kriege und Bürgerkriege der letzten Jahrzehnte nachspielen will, ist hier völlig falsch! Khyberspace will vielmehr Afghanistan zeigen, wie es vor 1978 war - und wie es heute aussehen könnte, wenn die Geschichte günstiger verlaufen wäre!
            </p>
            <p>
              <span class="i">Aha, ich verstehe... aber soll das wirklich ganz Afghanistan werden? Mit allen Städten und Dörfern? Das ist doch ein Riesenland... wie lange willst du denn daran arbeiten?</span>
            </p>
            <p>
              Hmmm, wenn ich jeden Tag 8 Stunden am Geländerelief pixele, bin ich bei einem Maßstab von 1:100000 im Jahr 2098 mit ganz Afghanistan fertig... dann noch Gewässer, Bodentypen, Vegetation, Tiere, Gebäude und Menschen... mit etwas Glück ist das in diesem Jahrtausend noch zu schaffen!<br>
              Nein, ernsthaft: natürlich will ich Khyberspace nicht im Alleingang konstruieren, sondern mit möglichst vielen anderen zusammen - zumal das Projekt in ein noch viel größeres Projekt eingebettet sein soll: <span class="b">POVEarth</span>!
            </p>
            <p>
              <span class="i">POVEarth?</span>
            </p>
            <p>
              Ja, eine möglichst hochauflösende, realistische Darstellung der gesamten Erde - so etwas wie Google Earth, aber komplett frei verwendbar, sozusagen Open Source!
            </p>
            <p>
              <span class="i">Und was bedeutet POV?</span>
            </p>
            <p>
              POV steht für den <span class="b">Persistence of Vision Raytracer</span> oder kurz <a href="http://www.povray.org" target="_blank"><span class="b">POV-Ray</span></a> - eine absolut geniale Skriptsprache zur Berechnung fotorealistischer 3D-Grafiken!
            </p>
            <p>
              <span class="i">Aber bleibt da nicht die Interaktivität auf der Strecke?</span>
            </p>
            <p>
              Es stimmt, POV-Ray ist gegenwärtig nicht zu Echtzeit-Raytracing in der Lage - aber es gibt mittlerweile auch 3D-Systeme, die in Echtzeit navigierbare und interaktive (allerdings zu Lasten der realistischen Darstellung!) virtuelle Welten erlauben, allen voran <span class="b">X3D</span>. Eventuell wird es in Zukunft auch eine X3D-Version des Khyberspace (oder sogar von POVEarth) geben, meine Priorität liegt jedoch bis auf Weiteres bei der POV-Ray-Version.
            </p>
            <p>
              Ach ja, ich finde, es ist an der Zeit, dass ich mich vorstelle:
            </p>
            <p>
              <img src="2011_Yadgar.jpg" alt="Langhaariger bärtiger Nerd" width="386" height="454">
            </p>
            <p>
              Jörg "Yadgar" Bleimann<br>
              geboren 1969 in Köln<br>
            </p>  
            <p>
              <span class="i">Ach, du bist ja gar kein Afghane! Ich dachte schon...</span>
            </p>
            <p>
              ...wegen meiner Beschäftigung mit Afghanistan? Das ist eine ziemlich lange Geschichte, die ich jetzt nicht unbedingt erzählen will - schließlich geht es hier in der Hauptsache um Khyberspace und POVEarth!
            </p>
            <p>
              <span class="i">Und was bedeutet dein "Künstlername" Yadgar? Ist das afghanisch?</span>
            </p>
            <p>
              Im weitesten Sinne ja, eigentlich ist es persisch, aber diese Sprache wird auch in Afghanistan gesprochen und verstanden. "Yadgar" bedeutet übersetzt soviel wie "Denkmal" oder auch "Souvenir"... ich wählte diesen Namen, weil mir einfach das Schriftbild so gut gefiel!
            </p>
            <p>
              Was gibt es sonst noch über mich zu erzählen? Außer für Afghanistan und 3D-Grafik begeistere ich mich für <a href="http://www.astronews.com" target="_blank">Astronomie und Raumfahrt</a>, elektronische Musik, <a href="http://www.babyblaue-seiten.de" target="_blank">Progressive Rock</a> und subantarktische Inseln...
            </p>
            <p>
              <span class="i">Subantarktische Inseln?!?</span>
            </p>
            <p>
              Wo sich Pinguin und Albatros gute Nacht sagen! Sozusagen das Kontrastprogramm zu Afghanistan... und auch interessant zu rendern! Ich kann mir gut vorstellen, im Rahmen von POVEarth auf diese Region besonderes Augenmerk zu legen.
            </p>
            <p>
              Und wenn ich mal nicht vorm Computer (oder Synthesizer oder Heimorgel) hänge (und das Wetter einigermaßen mitspielt), bin ich auch gerne mit dem <a href="bikeblog.php" target="_top">Fahrrad</a> unterwegs... am liebsten irgendwann auch mal bis nach Afghanistan, aber ich habe so meine Zweifel, ob das nochmal was wird!
            </p>
      <p style="text-align:center"><a href="impressum.php" target="_top"> Impressum </a>|<a href="bikeblog.php" target="_top"> Fahrrad-Blog </a>|<a href="#" target="_top"> Khyberspace </a>|<a href="#" target="_top"> POVEarth </a>|<a href="schwingungen-d.php" target="_top"> Schwingungen </a>|<a href="#" target="_top"> Rock-o-Data </a>|<a href="flagmaker_einfuehrung.php" target="_top"> Flagmaker </a>|<a href="musicalbox.php" target="_top"> Musical Box </a>|<a href="greenbook-d.php" target="_top"> GREENBOOK </a>|<a href="retrocomputing.php" target="_top"> Retrocomputing </a></p>      <p>
              <a href="start-e.php" target="_top">[ English version ]</a>
          </div>  
        </body>
      </html>
      

      ...aber es funktioniert alles nur, weil für sämtliche Dateien in ./khyberspace die Rechte auf 777 stehen!

      Bis bald im Khyberspace!

      Yadgar

      1. problematische Seite

        Hallo Yadgar,

        ich habe ein paar Frage zu deinem Code:

        • Wenn die Seite neu ist, warum nutzt du nicht konsequent die Bordmittel von HTML5?
        • Welchen Sinn hat das div, das alles innerhalb des body umschließt?
        • Wenn du unbedingt HTML 4 verwenden möchtest, warum nutzt die nicht wenigstens die Bordmittel von HTML 4 und CSS?
        • span hat keine semantische Bedeutung, mir scheint allerdings, dass deine spans eigentlich Inhalte mit Bedeutung auszeichen: strong, em, abbr, dt und dd sehe ich da sofort.

        Viele Grüße
        Robert

        1. problematische Seite

          Hallo Yadgar,

          ich habe ein paar Frage zu deinem Code:

          • Wenn die Seite neu ist, warum nutzt du nicht konsequent die Bordmittel von HTML5?
          • Welchen Sinn hat das div, das alles innerhalb des body umschließt?
          • Wenn du unbedingt HTML 4 verwenden möchtest, warum nutzt die nicht wenigstens die Bordmittel von HTML 4 und CSS?

          Die Seite ist nicht neu, sondern geht auf das Jahr 2013 zurück...

          • span hat keine semantische Bedeutung, mir scheint allerdings, dass deine spans eigentlich Inhalte mit Bedeutung auszeichen: strong, em, abbr, dt und dd sehe ich da sofort.

          Um solche Feinheiten kann ich mich später sicherlich immer noch kümmern... jetzt möchte ich erst mal den Content ins Netz bringen!

          Bis bald im Khyberspace!

          Yadgar

          1. problematische Seite

            Hallo Yadgar,

            Um solche Feinheiten kann ich mich später sicherlich immer noch kümmern...

            Was man nicht gleich macht, macht man nie.

            Bis demnächst
            Matthias

            --
            Pantoffeltierchen haben keine Hobbys.
          2. problematische Seite

            Moin Yadgar,

            • Wenn die Seite neu ist, warum nutzt du nicht konsequent die Bordmittel von HTML5?
            • Welchen Sinn hat das div, das alles innerhalb des body umschließt?
            • Wenn du unbedingt HTML 4 verwenden möchtest, warum nutzt die nicht wenigstens die Bordmittel von HTML 4 und CSS?

            Die Seite ist nicht neu, sondern geht auf das Jahr 2013 zurück...

            Falls damals nicht schon HTML5 in der Diskussion war, dann waren zumindest XHTML und CSS2 aktuell. HTML4 (und XHTML) müssten von 1999 sein, CSS2 unwesentlich jünger.

            • span hat keine semantische Bedeutung, mir scheint allerdings, dass deine spans eigentlich Inhalte mit Bedeutung auszeichen: strong, em, abbr, dt und dd sehe ich da sofort.

            Um solche Feinheiten kann ich mich später sicherlich immer noch kümmern... jetzt möchte ich erst mal den Content ins Netz bringen!

            Meiner Erfahrung nach mittlerweile gut 20 Jahren Software-Entwicklung sagt dir, dass es besser ist, gleich mit vernünftigem Code zu starten, weil der Wartungsaufwand für „Pfusch“ später überproportional steigt.

            Viele Grüße
            Robert