Problem mit Fehlerdokument

Gesperrt
roverman
Beiträge: 10
Registriert: Mi 13. Apr 2005, 11:34
Kontaktdaten:

Problem mit Fehlerdokument

Beitrag von roverman »

Ich habe ein problem mit dem Fehlerdokument:

Wenn ich eine nicht existierende Seite aufrufe (nicht vorhandene idcatart aufrufe) kommt bei mir immer die Fehlerseite die ich bei der Mandanteneinstellung mit login_error_page->idcatart definiert habe.

Diese seite sollte ja aber nur bei Loginprobleme kommen oder?

Ich bei den Mandanteneinstellungen login_error_page->idcatart definiert die auf die korrekte Seite verweist, sowie in der Mandanteneinstellung Fehlerseiten-Kategorie und Fehlerseiten-Artikel definitiert. Dies scheint aber keine funktion zu haben.

Hat jemand das gleiche problem? tips?

Danek
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

Diese seite sollte ja aber nur bei Loginprobleme kommen oder?
ja, sollte sie...

wie sieht die exakte url aus, wenn du falsch weitergeleitet wirst (sprich seite wird nicht gefunden) ?
und wie sieht die url aus bei einem fehlerhaften login ?
(die sind sicher nicht ident)

contenido version ?
*** make your own tools (wishlist :: thx)
wosch

Beitrag von wosch »

emergence,

das Problem kenne und habe ich auch.
Wenn ich bewußt eine idart falsch angebe um auf die Fehlerseite zu kommen (Mustermandant vordefiniert) wird prinzipiell die Login-Error-Seite angezeigt oder die Startseite der Hauptkategorie.

Die eigentliche Fehlerseite habe ich erst 1 oder 2x zu Gesicht bekommen.
(Kann es aber nicht reproduzieren)

Ich meine HerrB hat mal was dazu geschrieben warum es nicht geht.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

was passiert wenn ihr keine

login_error_page->idcatart

definiert habt ? kommt dann ne login ausforderung ?


das andere auf die startseite -> ist meiner meinung nach okay
*** make your own tools (wishlist :: thx)
roverman
Beiträge: 10
Registriert: Mi 13. Apr 2005, 11:34
Kontaktdaten:

Beitrag von roverman »

emergence hat geschrieben: wie sieht die exakte url aus, wenn du falsch weitergeleitet wirst (sprich seite wird nicht gefunden) ?
und wie sieht die url aus bei einem fehlerhaften login ?
Die url sieht in beiden fällen gleich aus:

http://www.meinepage.de/cms/front_conte ... dcatart=23

wobei idcatart 23 meine login Fehler Seite ist

Wenn ich die Fehlerseiteseite direkt angebe (korrekte id) dann kommt die Seite auch.

Richtig sollte doch bei falschaufruf ( ungültige idart von hand angeben) doch ein url in der art wie
http://www.meinepage.de/cms/front_conte ... =1&error=1
zurückkommen oder? so ist es jedenfalls bei anderen contendio installationen die ich habe...


emergence hat geschrieben:was passiert wenn ihr keine

login_error_page->idcatart

definiert habt ? kommt dann ne login ausforderung ?


das andere auf die startseite -> ist meiner meinung nach okay


wenn ich den login_error_page->idcatart schlüssel lösche kommt bei Loginfehler und bei ungültiger Seite beides mal die Startseite.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

verschoben...
der loginmechanismus gehört da etwas entwanzt...
*** make your own tools (wishlist :: thx)
wosch

Beitrag von wosch »

Ich wollte gerade schreiben das ich es morgen mal durchteste,
da habe ich gesehen das du den Beitrag verschoben hast.

Das gefällt mir :wink:


Hiermit bin ich jedoch nicht so ganz einverstanden:

Wenn ich von einer allgemeinen Seite aus einen Fehler mache oder provoziere (durch Eingabe einer ungültigen/nicht vorhandenen ID)
müßte die definierte Fehlerseite (so wie im Mustermandant definiert), aufgerufen werden und nicht die Startseite der Hauptkategorie.
Zumindest würde das dem allgemeinen Standard einer serverseitigen Fehlerseite entsprechen.
roverman
Beiträge: 10
Registriert: Mi 13. Apr 2005, 11:34
Kontaktdaten:

Beitrag von roverman »

wosch hat geschrieben:Ich wollte gerade schreiben das ich es morgen mal durchteste,
da habe ich gesehen das du den Beitrag verschoben hast.

Das gefällt mir :wink:


Hiermit bin ich jedoch nicht so ganz einverstanden:

Wenn ich von einer allgemeinen Seite aus einen Fehler mache oder provoziere (durch Eingabe einer ungültigen/nicht vorhandenen ID)
müßte die definierte Fehlerseite (so wie im Mustermandant definiert), aufgerufen werden und nicht die Startseite der Hauptkategorie.
Zumindest würde das dem allgemeinen Standard einer serverseitigen Fehlerseite entsprechen.

Ich sehe das auch so:
Das Fehlerdokument muss immer dann kommen wenn eine Seite mit nicht gültigem id kommt. Als ungültige ID sehe ich auch ein Aufruf der "ungültig" erklärt wird weil eine Berechtigung zu der Seite Fehlt (Geschütze Seite und nicht eingeloggt).
Die Login Fehlerseite sollte wirklich nur bei einem missglückten Loginversuch erscheinen.

Oder verstehe ich das ganze falsch?

Gruss
Remco
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

der code aus der front_content.php der überarbeitet werden müsste...

Code: Alles auswählen

/* 1... */
if (isset ($username))
{
	$auth->login_if(true);
}

/* 2... */

if (isset ($logout))
{
	$auth->logout(true);
	$auth->unauth(true);
	$auth->auth["uname"] = "nobody";
}

/* 3... */

//  Fehlerseite
$errsite = "Location: front_content.php?client=$client&idcat=".$errsite_idcat[$client]."&idart=".$errsite_idart[$client]."&lang=$lang&error=1";

/* 4... */

	/* Check if category is public */
	$sql = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$idcat."' AND idlang='".$lang."'";

	$db->query($sql);
	$db->next_record();

	$public = $db->f("public");

	if ($public == 0)
	{

		if ($auth->auth["uid"] == "nobody")
		{
			$sql = "SELECT user_id, value FROM ".$cfg["tab"]["user_prop"]." WHERE type='frontend' and name='allowed_ip'";
			$db->query($sql);

			while ($db->next_record())
			{
				$user_id = $db->f("user_id");

				$range = urldecode($db->f("value"));
				$slash = strpos($range, "/");

				if ($slash == false)
				{
					$netmask = "255.255.255.255";
					$network = $range;
				}
				else
				{
					$network = substr($range, 0, $slash);
					$netmask = substr($range, $slash +1, strlen($range) - $slash -1);
				}

				if (IP_match($network, $netmask, $_SERVER["REMOTE_ADDR"]))
				{
					$sql = "SELECT idright 
							FROM ".$cfg["tab"]["rights"]." AS A,
								 ".$cfg["tab"]["actions"]." AS B,
								 ".$cfg["tab"]["area"]." AS C
							WHERE B.name = 'front_allow' AND C.name = 'str' AND A.user_id = '".$user_id."' AND A.idcat = '$idcat'
							AND A.idarea = C.idarea AND B.idaction = A.idaction";

					$db2 = new DB_Contenido;
					$db2->query($sql);

					if ($db2->num_rows() > 0)
					{
						$auth->auth["uid"] = $user_id;
						$validated = 1;

					}
				}
			}
			if ($validated != 1)
			{
				$allow = false;

				$iterator = $_cecRegistry->getIterator("Contenido.Frontend.CategoryAccess");

				while ($chainEntry = $iterator->next())
				{
					$value = $chainEntry->execute($lang, $idcat, $auth->auth["uid"]);

					if ($value === true)
					{
						$allow = true;
						break;
					}
				}

				$auth->login_if(!$allow);

			}
		}
		else
		{
			$allow = false;

			$iterator = $_cecRegistry->getIterator("Contenido.Frontend.CategoryAccess");

			while ($chainEntry = $iterator->next())
			{
				$value = $chainEntry->execute($lang, $idcat, $auth->auth["uid"]);

				if ($value === true)
				{
					$allow = true;
					break;
				}
			}

			if (!$allow)
			{
				header($errsite);
			}
		}
	}

/* 5... */

function IP_match($network, $mask, $ip)
{

	bcscale(3);
	$ip_long = ip2long($ip);
	$mask_long = ip2long($network);

	#
	# Convert mask to divider
	#
	if (ereg("^[0-9]+$", $mask))
	{
		/// 212.50.13.0/27 style mask (Cisco style)
		$divider = bcpow(2, (32 - $mask));
	}
	else
	{
		/// 212.50.13.0/255.255.255.0 style mask
		$xmask = ip2long($mask);
		if ($xmask < 0)
			$xmask = bcadd(bcpow(2, 32), $xmask);
		$divider = bcsub(bcpow(2, 32), $xmask);
	}
	#
	# Test is IP within specified mask
	#
	if (floor(bcdiv($ip_long, $divider)) == floor(bcdiv($mask_long, $divider)))
	{
		# match - this IP is within specified mask
		return true;
	}
	else
	{
		# fail - this IP is NOT within specified mask
		return false;
	}
}

*** make your own tools (wishlist :: thx)
Gesperrt