Stringsuche

In der Variable $_GET['path'] steht vermutlich nur „content/overview.php“, da nur dies der Wert des GET-Arguments ist.
 
Also ich bin jetzt so weit:

PHP:
$array = array(
    '/'                             => 'sitename',								// OK
    '/start.php' 					=> 'sitename',								// OK
    '/forum/main.php' 				=> 'Forum',									// OK
    '/forum/showcat.php' 			=> $forumcat['forumcat_name'],
    '/forum/showthread.php' 		=> str_replace('re:', '', $post_title),
    '/guestbook/viewgb.php' 		=> 'Gaestebuch',							// OK
    '/content/overview.php&type=2' 	=> 'News-Archiv',
    'contentid' 					=> $contentinfo['content_title']
);

$suche = array('/include.php/', '/path=/', '/\?/');

$requestPath = preg_replace($suche, '', $_SERVER['REQUEST_URI']);
if( isset($array[$requestPath]) ) {
 echo $array[$requestPath];
 echo "<br>Pfad: ".$requestPath; //tmp Ausgabe
}
else {
 echo "<br>ELSEpfad: ".$requestPath; //tmp Ausgabe
}

Die Stellen, die bisher gehen, sind kommentiert.

Aber jetzt mal ein Beispiel was nicht geht:
Ich suche nach: /forum/showcat.php
Die Variable requestPath beinhaltet folgendes: /forum/showcat.php&catid=30
Es wird aber in das else-Konstrukt gesprungen!

Jetzt, wieso? In der Variable ist doch das was ich suche vorhanden?! Wie krieg ich das noch hin, bitte?
 
PHP:
<?php
$array = array(
    '/'                             => 'sitename',                                // OK
    '/start.php'                     => 'sitename',                                // OK
    '/forum/main.php'                 => 'Forum',                                    // OK
    '/forum/showcat.php'             => $forumcat['forumcat_name'],
    '/forum/showthread.php'         => str_replace('re:', '', $post_title),
    '/guestbook/viewgb.php'         => 'Gaestebuch',                            // OK
    '/content/overview.php&type=2'     => 'News-Archiv',
    'contentid'                     => $contentinfo['content_title']
);

$suche = array('/include.php/', '/path=/', '/\?/');

$requestPath = preg_replace($suche, '', $_SERVER['REQUEST_URI']);
if(strpos($requestPath, '&') === false) {
  $path[0] = $requestPath;
} else {
  $path = explode("&", $requestPath);
}
if( isset($array[$path[0]]) ) {
 echo $array[$path[0]];
 echo "<br>Pfad: ".$path[0] . $path[1]; //tmp Ausgabe
} else {
 echo "<br>ELSEpfad: ".$path[0] . $path[1]; //tmp Ausgabe
}
?>

Nach langem Hin und Her bin ich bei dieser Version angekommen.
Auf meinem Webspace und meinem TestServer funktioniert es:
http://flexmex.net/include.php

Auf msychos Website nicht.

Jemand noch eine Idee? ;)
 
Zuletzt bearbeitet:
Ich hab nochmal etwas rumgeschraubt, aber es will nicht so ganz:

PHP:
$array = array(
    '/'                             => 'sitename',                                
    '/start.php'                    => 'sitename',                                
    '/forum/main.php'               => 'Forum',                                    
    '/forum/showcat.php'            => $forumcat['forumcat_name'],
    '/forum/showthread.php'         => str_replace('re:', '', $post_title),
    '/guestbook/viewgb.php'         => 'Gaestebuch',                            
    '/content/overview.php&type=2'  => 'News-Archiv',
    'contentid'                     => $contentinfo['content_title']
);

$suche = array('/include.php/', '/path=/', '/\?/');
$requestPath = $_SERVER['REQUEST_URI'];
echo "Orig. Pfad: ".$requestPath;
$requestPath = preg_replace($suche, '', $_SERVER['REQUEST_URI']);
echo "<br>bearbeiteter Pfad: ".$requestPath;
if(strpos($requestPath, '&') === false) {
  $path = $requestPath;
  echo "<br>1: ".$path;
}
else {
  $path = explode("&", $requestPath);
  echo "<br>2: ".$path[0].$path[1];
}

if( isset($array[$path]) ) {
 echo "<br>if: ".$array[$requestPath];
} 
elseif ( isset($array[$path[0]]) || isset($array[$path[1]]) ) {
 echo "<br>else: ".$array[$path[0]].$array[$path[1]];
} 
else {
 echo "else sitename";
}

Rufe ich xy.de auf, klappts! Ausgabe:

Orig. Pfad: /
bearbeiteter Pfad: /
1: /
if: sitename

Rufe ich das Forum xy.de/include.php?path=forum/main.php auf, klappts auch! Ausgabe:

Orig. Pfad: /include.php?path=forum/main.php
bearbeiteter Pfad: /forum/main.php
1: /forum/main.php
if: Forum

Rufe ich eine Forenkategorie auf xy.de/include.php?path=forum/showcat.php&catid=35 klappts auch, aber mit einer Meldung! Augabe:

Orig. Pfad: /include.php?path=forum/showcat.php&catid=35
bearbeiteter Pfad: /forum/showcat.php&catid=35
2: /forum/showcat.phpcatid=35
Warning: Illegal offset type in ... on line 138

else: 2.1 | Off-Topic

Zeile 138 ist die

PHP:
if( isset($array[$path]) ) {

Rufe ich jetzt aber das Newsarchiv xy.de/include.php?path=content/overview.php&type=2 auf, dann klappts nicht. Ausgabe:

Orig. Pfad: /include.php?path=content/overview.php&type=2
bearbeiteter Pfad: /content/overview.php&type=2
2: /content/overview.phptype=2
Warning: Illegal offset type in ... on line 138
else sitename

Zeile 138, gleich wie oben.


Was ist das Problem, bitte?
Habt Ihr eine Idee?
 
//EDIT:

Jetz geht eigentlich fast alles:

PHP:
if(isset($array[$requestPath])) {
  $path = $requestPath;
  echo "<br>1: ".$path;
  echo "<br>".$array[$path];
}
else { echo "<br>bla"; }

Das Problem ist jetzt nur noch das:
Wenn ich nach eindeutigen Sachen suche wie z.B.
/content/overview.php&type=4 oder
/login/member.php
dann klappt alles.

Wenn ich jetzt aber bei bestimmten Sachen nur nach Teilen gehen möchte, dann klappt nix.
Also ich möchte, dass sobald das /forum/showthread.php vorkommt, auch was bestimmtest ausgegeben wird. Das Problem ist nur, dass das so nie vorkommt. Es kommt wenn dann zB so vor: forum/showthread.php&threadid=40
Wie bekomm ich das jetzt, dass das auch berücksichtigt wird, bitte?
 
Zuletzt bearbeitet:
Zurück