anzeige

Fragen zu php funktionen


Seite: 1 2 3 4
Autor Beitrag
quassy
08.03.10 - 15:36:56 Uhr

  1. <?php    
  2. $file$_GET['file'];    
  3. if (empty($file)) {    
  4.     echo 'LEER';    
  5. } else if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/pages/' $file'.html')) {       
  6.     echo 'VORHANDEN';    
  7. } else {      
  8.     echo 'NICHT vorhanden';    
  9. }     
So müsste der Code bei einer großen Anzahl an Dateien schneller sein. Desweiteren bringt es nichts, dass if nochmal zu verschachteln.
Einmal "$file = $_GET['file'];" habe ich entfernt. $file ist ganz allgmein auch ein besserer Bezeichner als $var.

  1. <?php  
  2. $ausgabe file_exists($_SERVER['DOCUMENT_ROOT'].'/pages/'.$_GET['file'].'.html') ? 'VORHANDEN' 'NICHT vorhanden';  
  3. echo $ausgabe;  
So könnte man es zusammenfassen, wobei es dann natürlich keine Ausgabe 'LEER' gibt (aber vielleicht will ja auch jemand die Datei '.html' sehen..)
SammysHP
08.03.10 - 15:40:09 Uhr

@quassy
Einen kleinen Schönheitsfehler hat das.
  1. <?php  
  2. $ausgabe file_exists($_SERVER['DOCUMENT_ROOT'] . '/pages/' basename($_GET['file']) . '.html') ? 'VORHANDEN' 'NICHT vorhanden'  

Man beachte die Funktion basename() , so kann man das Verzeichnis nicht wechseln, weil nur der Dateiname selbst extrahiert wird (auch ohne Dateierweiterung).

_________________
www.sammyshp.de
quassy
08.03.10 - 15:41:46 Uhr

Kann so machen, wenn man's für nötig hält. In ein Verzeichnis höher kommt man so oder so aber nicht.

Den wirklichen Schönheitsfehler haste aber nicht gefixt: $GET... edit: Jetzt schon.
SammysHP
08.03.10 - 15:42:47 Uhr

Jetzt aber schon

Warum sollte man nicht in ein Verzeichnis höher kommen?

$_GET['file'] = '../../zwei_verzeichnisse_hoher'

_________________
www.sammyshp.de
quassy
08.03.10 - 15:47:01 Uhr

Stimmt :$
Teegee
10.03.10 - 12:10:34 Uhr

else if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/pages/' . basename($_GET['file']) . '.html'))

Ich kann immernoch in das Höherliegende Verzeichnis wechseln.
http://verdant-meadows.com/index.php?file=main

http://verdant-meadows.com/index.php?...../t2/main
Wenn da "Verdant-Meadows Flightschool" erscheint dann funktioniert es immernoch.

Und hier komischerweise auch:
  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('../verdant-meadows.com/err/error404.html');  
  8. } else {    
  9. // Inhalt  
  10. }   
  11. ?>   



Was müsst ich ändern?
SammysHP
10.03.10 - 12:51:49 Uhr

basename() funktioniert. Du musst irgendwo einen Fehler beim Einbauen gemacht haben.

_________________
www.sammyshp.de
Teegee
10.03.10 - 14:44:59 Uhr

so sieht das ganze aus.

und über den Link oben kannst du testen wie es rauskommt.
  1. <?php      
  2. $file$_GET['file'];      
  3. if (empty($file)) {      
  4.     include('../verdant-meadows.com/pages/intro/startup.html');  
  5. } else if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/pages/' basename($_GET['file']) . '.html'))  
  6. {    
  7.  
  8.     include('../verdant-meadows.com/head.php');  
  9.  
  10.     include('pages/' $file '.html');    
  11. ?>  
  12. //HTML  
  13. <?php    
  14.     include('../verdant-meadows.com/navigation.php');  
  15.     include('../verdant-meadows.com/left.php');  
  16.     include('../verdant-meadows.com/footer.php');  
  17.  } else  {         
  18.     header("HTTP/1.0 404 Not Found");    
  19.     include('../verdant-meadows.com/err/error404.html');  
  20. }  
  21. ?>  
  22.  
SammysHP
10.03.10 - 15:04:51 Uhr

Schau dir mal Zeile 2 und 10 an - was fällt dir auf?

_________________
www.sammyshp.de
Teegee
10.03.10 - 15:09:39 Uhr

aaaha, bei zweile 10 nimm er die Info aus Zeile 2, sprich ich muss ihm sagen dass er die info aus zeile X nehmen muss.

Wie mach ich das jetz (ich überleg selbst aber helf mir trotzdem etwas auf die sprünge)


-edit:-
Zeile 2 ändern zu:
$file= basename($_GET['file']); 
Seite: 1 2 3 4

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