pcguy
Goto Top

Saubere URL

Hallo zusammen, ich verwende in einer kleinen Webseite folgenden Code um den Seiteninhalt hinzuzufügen

<?php
		
			// if the GET var isn't set, we default the file name to the home file 
			if(!isset($_GET['page'])) {  
				$file = 'home.php';   
				
							
			// otherwise, we set the filename to the GET var value    
			} else {
			
				$file = $_GET['page'] . '.php';  
			}
			
			// Here we set the absolute path to the file so we can check if it exists
			$filepath = dirname(__FILE__) . '/content/' . $file;  
			
			// if the file doesn't exist, echo an error message 
			if(!file_exists($filepath)) {
				
				include("content/error.php");  
			
			// otherwise, include the file & we're done!     
			} else {
			
				include($filepath);
			}
			 
        ?>

Damit die URL besser lesbar für die Suma ist, verwende ich eine .htaccess mit dem Inhalt:

RewriteEngine on
RewriteBase /www

RewriteCond %{REQUEST_URI} !^/+(admin|images)/?
RewriteCond %{REQUEST_URI} !(\..{2,4})$
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)$ index.php?page=$1&%1 [L]


Das funktioniert soweit recht gut ausser das auf der Startseite kein inhalt gefunden wird, also wenn die GET leer ist ...


Kann mir da jemand weiterhelfen?

Content-ID: 299291

Url: https://administrator.de/contentid/299291

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

Arano
Arano 16.03.2016 um 19:52:16 Uhr
Goto Top
Hello pcguy!

Durch deine RewriteRule existiert GET-page immer.
Der einzige Unterschied der bleibt ist ob "page" gefüllt ist oder nicht.

<?php
  if( isset()  && !empty() )
    $file = $_GET['page'].'.php'; // verwende NIEMALS Usereingaben ohne sie validiert und entschärft zu haben !  
  else
    $file ='home.php';  
?>


~Arano
pcguy
pcguy 17.03.2016 um 11:33:26 Uhr
Goto Top
Hallo Arano

Danke, das heisst in meinem Fall folgendes:

  <?php
				
				if( isset($_GET['page'])  && !empty($_GET['page']) )  
				{    $file = $_GET['page'].'.php';   
				
							
			// otherwise, we set the filename to the GET var value    
			} else {
			
				$file = $_GET['page'] . '.php';  
			}
			
			// Here we set the absolute path to the file so we can check if it exists
			$filepath = dirname(__FILE__) . '/content/' . $file;  
			
			// if the file doesn't exist, echo an error message 
			if(!file_exists($filepath)) {
				
				include("content/error.php");  
			
			// otherwise, include the file & we're done!     
			} else {
			
				include($filepath);
			}
			 
        ?>

muss vor das isset nicht noch ein "!" hin?

LG pcguy
Arano
Lösung Arano 17.03.2016 um 19:23:46 Uhr
Goto Top
Hi,

das ist abhängig von deiner Formulierung der Programmlogik, vieles lässt sich auf zwei Wege erreichen.
if( $username=="Arano" ) echo "Hallo Arano"; else echo "Hallo Unbekannter";  
if( $username!="Arano" ) echo "Hallo Unbekannter"; else echo "Hallo Arano";  
Am Ende funktioniert beide, jedoch habe ich eine mit negativer Prüfung und eines mit positiver.

In deinem Fall möchten wir aber empty() verwenden und es nur logisch bevor wir eine Variable auf ihren Inhalt prüfen, zu prüfen ob diese überhaupt existiert !
Also: isset()&&!empty()
Eine Variable die nicht existiert kann keinen Inhalt haben ! !isset() && empty() macht also keinen Sinn bzw. wenn die Variable nicht existiert brauchen wir deren Inhalt nicht überprüfen, das ist also schlicht überflüssig und unlogisch.

Bei dir ist es also ein
  else
    $file = 'home.php';  


~Arano
pcguy
pcguy 18.03.2016 um 08:19:27 Uhr
Goto Top
Super, Vielen Dank für Deine Hilfe!