Phil Z.: CSS wird nicht mehr angezeigt durch Skript.

Hallo.

Wenn ich z.b. den Link <a href='index.php?show=polls'>Umfragen</a>
aufrufe
dann nimmt sich ein Skript per $_GET das show und ruft eine Klasse auf, die den Link überprüft und anschließend die Datei contents/poll.php includet.
Die CSS Datei wird in index.php oben wie folgt eingebunden:
<link rel='stylesheet' type='text/css' href='style.css'/>

Nun passiert aber folgendes.
Egal welche Datei ich include, die CSS Definitionen gelten nur für index.php, der includete Teil beachtet die Style Datei nicht.
Und ich hab da auch nichts falsch angegeben oder nen rechtschreibfehler drin, denn das gleiche gilt auch für die in index.php includeten Skripte wie z.B. meine sql.inc.php mit den SQL Daten, ich muss sie in jeder Datei die includet wird extra angeben, so das sie 2 mal im Dokument steht.
Wenn ich nämlich dann in der sql.inc.php probeweise mal echo "lalala"; reinschreibe, wird das ganze 2 mal ausgeben.

Woran lieft das???

Das ganze sieht so aus:

  
<?php  
$show=$_GET['show'];  
$secure_navigation_url_handling=new secure_navigation_url_handling($show);  
$secure_navigation_url_handling->url_usen();  
?>  

Das ist die Klasse:

  
<?php  
class secure_navigation_url_handling {  
  # Attribute  
  public $showme;  
  public $parts=array();  
  public $path='contents';  
  # Konstruktor  
  function secure_navigation_url_handling($show){  
   $this->showme=$show;  
   $this->get_filenames();  
   $this->url_check();  
  }  
  
  # Methoden  
  // Alle Dateinamen aus dem >>>> Verzeichnis lesen und in array packen  
  function getFilenamesOfTheDir($path){  
   $filenamesOfTheDir=array();  
   if ($handle = opendir($this->path)) {  
    while (false !== ($file = readdir($handle))) {  
       array_push($filenamesOfTheDir, $file);  
    }  
   }  
   closedir($handle);  
   return $filenamesOfTheDir;  
  }  
  // Url sichern  
  function url_secure($show){  
   $show=htmlspecialchars(strip_tags(trim($_GET['s'])));  
   return $this->showme=$show;  
  }  
  // Alle Filenamen aus bestimmten Ordner herausbekommen und in ein Array packen  
  function get_filenames(){  
   $filenames=$this->getFilenamesOfTheDir($this->path);  
   foreach ($filenames as $filename){  
    array_push($this->parts, $filename);  
   }  
  }  
  // URL checken  
  function url_check(){  
   $this->get_filenames();  
   // Ist die eingegebene URL-Endung in den Verzeichnissen vorhanden?  
   $this->showme=$this->showme.".php";  
   if(!in_array($this->showme, $this->parts)){  
    $this->showme='aktuell.php';  
   }  
   return $this->showme;  
  }  
  // URL includen  
  function url_usen(){  
   include($this->path.'/'.$this->showme);  
  }  
}  
?>  

Hoffe ihr könnt mir helfen.

Liebe Grüße

Phil

  1. Hi,

    Wenn ich z.b. den Link <a href='index.php?show=polls'>Umfragen</a>
    aufrufe
    dann nimmt sich ein Skript per $_GET das show und ruft eine Klasse auf, die den Link überprüft und anschließend die Datei contents/poll.php includet.

    Das interessiert einen Browser natuerlich einen feuchten Furz - ob PHP die Seite zusammengebastelt, oder ob deine Oma sie gestrickt hat, ist ihm voellig wurscht.

    Nun passiert aber folgendes.
    Egal welche Datei ich include, die CSS Definitionen gelten nur für index.php, der includete Teil beachtet die Style Datei nicht.

    Dann betrachte den HTML-Code, den der Browser erhaelt - und ueberpreufe dabei insb. die Pfadangaben.

    Und ich hab da auch nichts falsch angegeben

    Doch, hoechstvermutlich schon.

    oder nen rechtschreibfehler drin, denn das gleiche gilt auch für die in index.php includeten Skripte wie z.B. meine sql.inc.php mit den SQL Daten, ich muss sie in jeder Datei die includet wird extra angeben, so das sie 2 mal im Dokument steht.

    Klingt fragwuerdig.

    Das error_reporting von PHP hast du ja wohl hoffentlich auf E_ALL stehen?

    Wenn ich nämlich dann in der sql.inc.php probeweise mal echo "lalala"; reinschreibe, wird das ganze 2 mal ausgeben.

    Also wird sie auch zwei mal eingebunden - ein mal zu viel.

    MfG ChrisB

    1. Hi.

      Das interessiert einen Browser natuerlich einen feuchten Furz - ob PHP die Seite zusammengebastelt, oder ob deine Oma sie gestrickt hat, ist ihm voellig wurscht.

      Ich weiß, eigendl ja schon aber hier irgendwie nicht.

      Nun passiert aber folgendes.
      Egal welche Datei ich include, die CSS Definitionen gelten nur für index.php, der includete Teil beachtet die Style Datei nicht.

      Tut er mittlerweile.

      Dann betrachte den HTML-Code, den der Browser erhaelt - und ueberpreufe dabei insb. die Pfadangaben.

      Hab ich getan.

      oder nen rechtschreibfehler drin, denn das gleiche gilt auch für die in index.php includeten Skripte wie z.B. meine sql.inc.php mit den SQL Daten, ich muss sie in jeder Datei die includet wird extra angeben, so das sie 2 mal im Dokument steht.

      Klingt fragwuerdig.

      Ist aber so, ich weiß nicht woran das liegt...

      Das error_reporting von PHP hast du ja wohl hoffentlich auf E_ALL stehen?

      Ist an.

      Wenn ich nämlich dann in der sql.inc.php probeweise mal echo "lalala"; reinschreibe, wird das ganze 2 mal ausgeben.

      Also wird sie auch zwei mal eingebunden - ein mal zu viel.

      Ja richtig. Aber warum wird die erste einbindun gnicht ins include übernommen?

      LG

      Phil

      1. Hi

        Ja richtig. Aber warum wird die erste einbindun gnicht ins include übernommen?

        Schnall ich grad nicht richtig.

        Du meinst:
        <include datei die 'Hallo' schreibt>
        ergibt ''

        und
        <include datei die 'Hallo' schreibt>
        <include datei die 'Hallo' schreibt>
        ergibt 'Hallo Hallo'?

        Darf ich das so verstehen?

        1. Hi.
          Passt auf:
          ##########################
          settings/main.inc.php:
          #########################

            
          $guestbooktable='gaestebuch';  
          echo "warum?";  
          ?>  
          
          

          #########################

          index.php?s=guestbook:
          ########################

            
          <?php  
          include('settings/main.inc.php');  
          include('classes/secure_navigation_url_handling.php');  
          ?>  
          
          
            
          <html>  
          <head>  
          </head>  
          <body>  
          
          
            
          <?php  
          $show=$_GET['s'];  
          $secure_navigation_url_handling=new secure_navigation_url_handling($show);  
          $secure_navigation_url_handling->url_usen();  
          ?>  
          
          
            
          </body>  
          </html>  
          
          

          ########################

          contents/guestbook.php:
          ########################

            
          <p><a href='/buysocial.de/writeComment'>Geben sie <strong>hier</strong> Ihre Meinung ab!</a></p>  
          
          
            
          <?php  
          # include('settings/main.inc.php'); # Wenn ich das nicht angebe, kommt ne Fehlermeldung  
          // Voreinstellungen  
          if(isset($_GET['cfrom'])&&isset($_GET['cto'])){  
          $c_position=$_GET['cfrom'];$c_anzahl=$_GET['cto'];  
          }  
          if(!isset($_GET['cto'])||!isset($_GET['cfrom'])){$c_position=0;$c_anzahl=10;}  
          // Daten aus der Datenbank holen  
          $q="SELECT xx  
          FROM ".$guestbooktable." WHERE titel!='' ORDER BY zeit LIMIT ".$c_position.",".$c_anzahl;  
          $r=mysql_query($q) or die("Fehler: ".mysql_error());  
          // Ergebnise ausgeben  
          while($tmp=mysql_fetch_array($r)) {  
          echo "  
          <div class='beitrag'>  
          <span class='date'>".$tmp['Datum']."  
          <span class='time'>Um: ".$tmp['Uhrzeit']."</span></span>  
          <h2 class='title'>".$tmp['titel']."</h2>  
          <div class='artikel'><br/>".$tmp['beitrag']."<p></p></div>  
          <div class='under'><br/>Author: <a href='mailto:".$tmp['email']."'>".$tmp['autor']."</a></div>";  
          }  
          $anzA=mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS anz FROM $guestbooktable"));  
          // Fußleiste der Beiträge(ganz unten / insgesamt) - Falls es mehr als einen Eintrag auf dieser Seite gibt  
          if($anzA['anz']>($c_anzahl+10))echo"<a href='index.php?s=guestbook&cfrom=".$c_anzahl."&cto=".($c_anzahl+10)."' class='naechstenArtikel'>N&auml;chsten 10 Danksagungen ( ".($c_anzahl)." - ".($c_anzahl+10)." )</a>";  
          ?>  
          
          

          ##########################

          classes/secure_navigation_url_handling.php:
          #########################################

            
          <?php  
          # Klasse secure_navigation_url_handling  
            
          class secure_navigation_url_handling {  
            # Attribute  
            public $showme;  
            public $parts=array();  
            public $path='contents';  
            # Konstruktor  
            function secure_navigation_url_handling($show){  
             $this->showme=$show;  
             $this->get_filenames();  
             $this->url_check();  
            }  
            
            # Methoden  
            // Alle Dateinamen aus dem >>>> Verzeichnis lesen und in array packen  
            function getFilenamesOfTheDir($path){  
             $filenamesOfTheDir=array();  
             if ($handle = opendir($this->path)) {  
              while (false !== ($file = readdir($handle))) {  
                 array_push($filenamesOfTheDir, $file);  
              }  
             }  
             closedir($handle);  
             return $filenamesOfTheDir;  
            }  
            // Url sichern  
            function url_secure($show){  
             $show=htmlspecialchars(strip_tags(trim($_GET['s'])));  
             return $this->showme=$show;  
            }  
            // Alle Filenamen aus bestimmten Ordner herausbekommen und in ein Array packen  
            function get_filenames(){  
             $filenames=$this->getFilenamesOfTheDir($this->path);  
             foreach ($filenames as $filename){  
              array_push($this->parts, $filename);  
             }  
            }  
            // URL checken  
            function url_check(){  
             $this->get_filenames();  
             // Ist die eingegebene URL-Endung in den Verzeichnissen vorhanden?  
             $this->showme=$this->showme.".php";  
             if(!in_array($this->showme, $this->parts)){  
              $this->showme='aktuell.php';  
             }  
             return $this->showme;  
            }  
            // URL includen  
            function url_usen(){  
             include($this->path.'/'.$this->showme);  
            }  
          }  
          ?>  
          
          

          Die Fehlermeldung:
          Notice: Undefined variable: guestbooktable in C:\pfad\content\guestbook.php on line 12

          Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE titel!='' ORDER BY zeit LIMIT 0,10' at line 3

          Besser kann ichs nicht angeben, ihr habt den kompletten Code. Ich vermute das irgendwas mit der Klasse secure_navigation_url_handling nicht stimmt, aber irgendwie kann das ja auch nicht sein, includet ist includet...

          Liebe Grüße, ich _hoffe_ ihr könnt mir helfen.

          Phil

          1. Hallo!

            Du gehst nicht auf die Frage von Steel ein. Das wäre aber sehr interessant, weil ich dein Problem so aufgefasst habe, wie Steel es tut. Aber ich weiss ja jetzt nicht, ob er Recht hat, oder nicht...

            Passt auf: [...]

            Warum kannst du nicht einfach ein Online-Beispiel zeigen? Das würde die Bereitschaft, dir zu helfen, sicher steigern da man so viel Zeit einspart. ->Webhoster mit PHP und MySQL gibt es schon umsonst.

            [...] Liebe Grüße, ich _hoffe_ ihr könnt mir helfen.

            Darf ich fragen, wofür du die Klasse secure_navigation_url_handling brauchst? Natürlich ist es hypercool, für soetwas eine Klasse zu benutzen, aber ich bin bis jetzt immer mit switch ausgekommen (kann evtl. bei größeren Projekten blöd werden).
            Egal ob du sie brauchst oder nicht: Lass sie doch weg und schau ob dann der Fehler weg ist. Damit lässt sich schon mal das hier überprüfen...

            Ich vermute das irgendwas mit der Klasse secure_navigation_url_handling nicht stimmt

            Generell kannst du bei einem solchen Problem immer gleich vorgehen: Den Code auf ein Minimum runterschrauben. Alles stückchenweise raushauen. Damit finde ich meine Fehler bei PHP immer.

            Viele Grüße, Lukas

            --
            We looked into the crystal and we felt the fear
            but its already here, its already too late.
            Were learning to love the things that we hate, were learning to love the things that we hate.
          2. Hi,

            <?php

            include('settings/main.inc.php'); # Wenn ich das nicht angebe, kommt ne Fehlermeldung

            Und *weil* du es "angibst", damit also die include-Anweisung auskommentierst und deaktivierst, kommen im folgenden die Fehler:

            Notice: Undefined variable: guestbooktable in C:\pfad\content\guestbook.php on line 12

            Natuerlich, die stand ja im include-File. Bindest du das nicht ein, ist die Variable auch nicht bekannt.

            Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE titel!='' ORDER BY zeit LIMIT 0,10' at line 3

            Und ohne diese Variable steht in deiner Queru auch kein Tabellenname drin.

            MfG ChrisB

          3. Yerf!

            Hm, ich kenn mich zwar nicht mit PHP aus und bin nur wegen dem CSS im Titel hier, aber:

            ##########################
            settings/main.inc.php:
            #########################

            $guestbooktable='gaestebuch';
            echo "warum?";
            ?>

              
            Hm, eine 'normale' Variablendeklaration.  
              
            
            > #########################  
            > index.php?s=guestbook:  
            > ########################  
            > ~~~php
              
            
            > <?php  
            > include('settings/main.inc.php');  
              
            Hier eingebunden müsste das eine globale Variable ergeben  
              
            
            > $secure_navigation_url_handling=new secure_navigation_url_handling($show);  
            > $secure_navigation_url_handling->url_usen();  
            > 
            
            

            Hier wird ein Objekt gebaut und eine Methode daran aufgerufen.

            ########################
            contents/guestbook.php:
            ########################

            <?php

            include('settings/main.inc.php'); # Wenn ich das nicht angebe, kommt ne Fehlermeldung

            Dazu komme ich gleich...

            
            > ##########################  
            > classes/secure\_navigation\_url\_handling.php:  
            > #########################################  
            > ~~~php
              
            
            > <?php  
            > # Klasse secure_navigation_url_handling  
            >   
            > class secure_navigation_url_handling {  
              
            Hier wird die Klasse deklariert  
              
            
            >   [...]  
            >   // URL includen  
            >   function url_usen(){  
            >    include($this->path.'/'.$this->showme);  
            >   }  
            > 
            
            

            und hier die Methode. Das interessante ist jetzt, dass die guestbook.php innerhalb der Methode includiert wird. Möglicherweise ist hier die "global" definierte Variable nicht erreichbar (Gültigkeitsbereich passt nicht). Wenn nun innerhalb von guestbook.php die main.inc.php includiert wird, so wird die Variable auch innerhalb der Methode deklariert ist dann vorhanden.

            Liebe Grüße, ich _hoffe_ ihr könnt mir helfen.

            Das ganze ist natürlich nur eine Vermutung...

            Gruß,

            Harlequin

            --
            <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->