Funktion include nochmal anpassen?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Funktion include nochmal anpassen?

Beitrag von mgutt »

Code: Alles auswählen

// seo urls v2 - include fix
function include($url)
{
	if ( strpos($_SERVER["HTTP_HOST"], ".htm") !== false )
	{
		$url = str_replace(".htm", "$phpEx", $url);
	}

	return $url;
}
Funkt leider nicht. Darf man bestehende Funktion nicht "überschreiben"?

Ich habe das Problem, dass beim Umschreiben von Urls $url mit einem .htm an include() übergeben wird und da beim includen die .htaccess nicht berücksichtigt wird, habe ich das Problem, dass die Datei nicht gefunden wird.

Daher suche ich eine Problemlösung in dieser Richtung.

Gruß
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Nein, man kann Funktionen nicht überschreiben (zumindest keine globalen - bei Klassen sieht das wieder anders aus).

Aber warum willst du überhaupt nicht existierende Dateien an include() übergeben? Bei einem SEO Mod bringt das doch überhaupt nichts, da include() eine rein Serverseitige Funktion ist. :roll:
KB:knigge
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Das Problem ist, dass der Autor von CH immer mehr bei include() seine Funktion dazwischen quetscht:

Code: Alles auswählen

	function url($basename, $parms=array(), $add_sid=false, $fragments='', $force=false, $external=false)
	{
		global $SID;
		static $script_path;

		$url_parms = '';
		if ( empty($parms) )
		{
			$parms = array();
		}
		if ( $add_sid && empty($parms['sid']) )
		{
			$parms['sid'] = substr($SID, strlen('sid='));
		}
		if ( !empty($parms) )
		{
			foreach ( $parms as $key => $val )
			{
				if ( !empty($key) && (!empty($val) || $force) )
				{
					$url_parms .= (empty($url_parms) ? '?' : '&') . $key . '=' . $val;
				}
			}
		}
		if ( !empty($fragments) )
		{
			$url_parms .= (empty($url_parms) ? '?#' : '#') . $fragments;
		}
		if ( $external && empty($script_path) )
		{
			$script_path = $this->get_script_path();
		}
		return ($external ? $script_path : (trim(substr($this->root, 0, 2) == './') && $add_sid ? substr($this->root, 2) : $this->root)) . $basename . '.' . $this->ext . $url_parms;
	}
Ich denke er wird so dem ./ .// etc. Problem Herr. Aber ich greife mit meinen SEOs genau auf die gleiche Funktion zu... dann schreibe ich um und dann wird die umgeschriebene Datei includet... und das geht in die Hose, weil z.B. include('test.html') nicht auf test.php zugreift :cry:
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Das kann schon alleine deswegen nicht funktionieren, weil include() keine Funktion ist. D.h. auch ein Wrapper der mein_include() oder so heisst würde nur begrenzt funktionieren, da man Probleme mit den Variablen bekommen würde die nicht global sind.
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Ich frag ihn mal warum er auch nur einzelne includes vorher durch seine Funktion jagt. Sonst muss ich echt noch hingehen und alle Stellen für den Mod beschreiben. Dann kann ich das mit dem Veröffentlichen einer neuen Version auch gleich sein lassen :roll:
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „Coding & Technik“