anzeige

php page - style aus html - inhalt aus txt


Seite: 1 2 3 4 5 6 7
Autor Beitrag
Achtzig
03.03.10 - 12:22:53 Uhr

Ich würde das in etwa schematisch so machen:

  1. <?php      
  2. $file 'pages/'.( ( ! empty( $_GET['file'] ) && strpos$file'..' ) === false ) ? $_GET['file'] : 'main' ).'.html';      
  3.    
  4. if ( ! file_exists$file ) )      
  5. {          
  6.     header("HTTP/1.0 404 Not Found");      
  7.     // Fehlermeldung mit html-, head- und body-Tags         
  8. } else {  
  9.     // <html> <head> </head> <body>     
  10.     require_once $file;  
  11.     // Alles, was auf allen gültigen Seiten stehen soll.  
  12.     // </body> </html>  
  13. }    
  14. ?>    


Vor der Header-Ausgabe darf nichts ausgegeben werden. Die Prüfung muß also ganz am Anfang erfolgen.
Teegee
03.03.10 - 13:13:00 Uhr

Also Zeile 7 bei dir ist für die Fehlermeldung in komplettem HTML mit Head und Body, richtig?

Zeile 9, 10 und 11 entsprechen dann der Seite, wenn das Dokument vorhanden ist (sprich wenn keine Fehlermeldung erscheint sondern die Seite mit dem Inhalt vom Unterordner pages)
Die Zeile 10 sagt lediglich, wo der Inhalt eingebunden wird, Zeile 9 und 11 haben ganz normalen HTML mit head und body Tags.

Hab ich das richtig verstanden?


Wenn ja dann stimmt aber etwas nicht, denn da kommt bei mir folgende Meldung:
Parse error: syntax error, unexpected '<' in /home/elchalar/www/vmfc/impressum.verdant-meadows.com/index.php on line 7


Zeile 7 beginnt bei mir mit:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

Sprich: mit den ersten Zeilen der Fehlermeldung.
Auch wenn ich das Doctype rausnehme und dadurch alles mit
  1. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">  
  2. <head>  
beginnt erhalte ich die gleiche Fehlermeldung.
SammysHP
03.03.10 - 13:26:18 Uhr

Du gibst den Code aber auch wirklich aus und hast ihn nicht nur in die Datei geschrieben?

_________________
www.sammyshp.de
Teegee
03.03.10 - 13:35:17 Uhr

meine php Datei sieht nun genau so aus:
  1. <?php        
  2. $file 'pages/'.( ( ! empty( $_GET['file'] ) && strpos$file'..' ) === false ) ? $_GET['file'] : 'main' ).'.html';        
  3.      
  4. if ( ! file_exists$file ) )        
  5. {            
  6.     header("HTTP/1.0 404 Not Found");        
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
  8.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  9. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">  
  10. <head>  
  11. // weitere Metadaten  
  12. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />  
  13. <title>Verdant-Meadows Flight Company</title>  
  14.  
  15. <link rel="stylesheet" type="text/css" href="http://impressum.verdant-meadows.com/err/style.css"/>  
  16.           
  17. </head>  
  18.  
  19. <body>  
  20. <div id="content">  
  21. <h3>404 Not Found</h3>  
  22. <p><b>Die angeforderte Seite konnte nicht gefunden werden....</p>  
  23. // weiterer Inhalt  
  24. </div>  
  25. </body>  
  26. </html>       
  27. } else {    
  28.   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
  29.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  30. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">  
  31. <head>  
  32. // weitere Metadaten  
  33. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />  
  34. <title>Verdant-Meadows Flight Company</title>  
  35.  
  36. <link rel="stylesheet" type="text/css" href="http://verdant-meadows.com/style.css"/>  
  37.           
  38. <script type="text/javascript" language="javascript">  
  39. // Script  
  40. </script>  
  41. </head>  
  42.  
  43. <body>  
  44. <div id="content">  
  45.         require_once $file;    
  46. <br /><br /><br />  
  47. </div>  
  48.  
  49. // weitere HTML Elemente  
  50.  
  51. </body>  
  52. </html>  
  53. }      
  54. ?>  
Achtzig
03.03.10 - 13:37:38 Uhr

index.php

  1. <?php        
  2. $file 'pages/'.( ( ! empty( $_GET['file'] ) && strpos$file'..' ) === false ) ? $_GET['file'] : 'main' ).'.html';        
  3.      
  4. if (  !file_exists$file ) )        
  5. {            
  6.     header("HTTP/1.0 404 Not Found");  
  7.     include('error.html');        
  8. } else {  
  9.     echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';  
  10.     echo '<html xmlns="http://www.w3.org/1999/xhtml">';  
  11.     echo '<head>';  
  12.     echo '<title>Titel</title>';  
  13.     echo '</head>';  
  14.     echo '<body>';  
  15.     require_once $file;  
  16.     echo '</body>';  
  17.     echo '</html>';  
  18. }      
  19. ?>  


error.html

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <title>Titel</title>  
  5. </head>  
  6. <body>  
  7. Sie haben versucht, eine nicht existierende Seite aufzurufen.  
  8. </body>  
  9. </html>  


pages/main.html

  1. <i>Gratulation, die Seite wurde gefunden</i>  
  2.  


Aufruf von /?file=xyz

ergibt "Sie haben versucht, eine nicht existierende Seite aufzurufen."

Aufruf von /?file=main

ergibt "Gratulation, die Seite wurde gefunden"

Nachtrag: Das mit den ganzen echos in der index.php ist, glaube ich, besser zu lösen. Bin nur ein Pascal-Programmierer und vergesse oft die Feinheiten von PHP.

... So

  1. <?php        
  2. $file 'pages/'.( ( ! empty( $_GET['file'] ) && strpos$file'..' ) === false ) ? $_GET['file'] : 'main' ).'.html';        
  3.      
  4. if (  !file_exists$file ) )        
  5. {            
  6.     header("HTTP/1.0 404 Not Found");  
  7.     include('error.html');        
  8. } else {  
  9.  
  10. ?>  
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  12. <html xmlns="http://www.w3.org/1999/xhtml">  
  13. <head>  
  14. <title>Titel</title>  
  15. </head>  
  16. <body><?php  
  17.     require_once $file;  
  18. ?>  
  19. </body>  
  20. </html>  
  21. <?php  
  22. }      
  23. ?>  
Teegee
03.03.10 - 14:37:14 Uhr

okey funktioniert besten dank
Achtzig
03.03.10 - 14:44:02 Uhr

Das freut mich. Bei der Fehlermeldung solltest Du noch darauf achten, daß sie länger als 512 Byte ist (oder waren das 1024 Byte?), da der IE sonst seine eigene Fehlermeldung ausgibt. Jedenfalls war das mal so.
Teegee
03.03.10 - 15:25:26 Uhr

Wenn du willst kannst du gleich testen:
http://verdant-meadows.com/mainpage.php

Ich nehme auch gerne Kritik entgegen betreffend Design
Achtzig
03.03.10 - 15:34:07 Uhr

Ein sehr schönes Layout. Gefällt mir.

Einen 404er habe ich schon bekommen aber richtig testen kann ich das mit der Länge nicht (falls Du das meinst), da es keinen IE für Debian gibt und ich diesen auch nicht installieren würde. Soll aber wirklich jeder selbst entscheiden, mit welchen Browser er sich in die große weite Welt wagt.

Die einzige Kritik wäre, daß die schöne Sonnenuntergangsstimmung im unterem Teil komplett verschwindet. Bin kein Grafiker aber könnte man ganz unten nicht noch eine Pfütze einbauen, in der sich der Sonnenuntergang spiegelt?
Teegee
03.03.10 - 15:53:33 Uhr

Das mit der Pfütze wäre eine gute idee, allerdings hab ich das gefühl dass der Blickwinkel im zusammenhang mit dem hintergrundbild etwas komisch wird.

Ich werde dies aber sicherlich mal ausprobieren.


Die Fehlerseite ist kein Problem im IE, den benutz ich ab und zu zum testen.

Das einzige was mich noch stört ist der Header/Logo.
Vorallem Rechts sieht es sehr leer aus...
Seite: 1 2 3 4 5 6 7

- Obige Beiträge stellen keine Äußerung oder Meinung von Pytal oder dessen Betreiber dar -