Seite 1 von 1

Anmerkung zu neuer front_crcloginform.inc.php

Verfasst: Di 19. Sep 2006, 14:57
von Dodger77
Ich habe mir nochmal den Code für die front_crcloginform.inc.php von hier:

http://www.contenido.org/forum/viewtopi ... 7336#87336

angeschaut. IMO wäre es besser, wenn die so anfängt:

Code: Alles auswählen

<?php

/******************************************
* File      :   front_crcloginform.inc.php
* Project   :   Contenido
* Descr     :   Login form
*
*
* Author    :   Jan Lengowski
* Created   :   21.01.2003
* Modified  :   21.01.2003
* Modified  :   29.09.2005, Andreas Lindner
*
* © four for business AG
******************************************/

global $cfg, $cfgClient, $idcat, $idart, $idcatart, $lang, $client, $username;

$err_catart   = trim(getEffectiveSetting("login_error_page", "idcatart", ""));
$err_cat   = trim(getEffectiveSetting("login_error_page", "idcat", ""));
$err_art   = trim(getEffectiveSetting("login_error_page", "idart", ""));

if ($err_catart!='') {
   header("Location: ".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?idcatart=".$err_catart);
}
if ($err_art!='' && $err_cat!='') {
   header("Location: ".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?idcat=".$err_cat."&idart=".$err_art);
}
if ($err_cat!='') {
   header("Location: ".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?idcat=".$err_cat);
}
if ($err_art!='') {
   header("Location: ".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?idart=".$err_art);
}

if (isset($_GET["return"]) || isset($_POST["return"])){
   $loc = Array();

   if ($idcat > 0) {
      $loc[] = "idcat=$idcat";
   }
   if ($idart > 0) {
      $loc[] = "idart=$idart";
   }

   if (isset($_POST["username"]) || isset($_GET["username"])){
      $loc[]= "wrongpass=1";
   }

   header ("Location: ".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?".implode("&", $loc));
}
?>
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
...
Zum einen wird dadurch immer der absolute Pfad aus den Mandantenpfaden ausgelesen, zum anderen sollte $cfgClient auch zur Verfügung stehen, wenn wir die benutzen möchten.

Verfasst: Di 19. Sep 2006, 17:05
von emergence
ähm, das errinnert mich an einen anderen bug...
weiss jetzt aber nicht mehr ob ich das mal gepostet hab...

ist vermutlich der grund warum ich $cfgClient nicht auf global gesetzt hab... (oder ich wollte es nicht verwenden...)

conlib/local.php
class Contenido_Frontend_Challenge_Crypt_Auth
function auth_loginform

Code: Alles auswählen

global $cfgClient;
ergänzen...

wenn das dort drinnen steht ist es in der front_crcloginform.inc.php nicht nochmals notwendig...

wenn man sich den code ansieht versteht man dann auch warum...

die andere sache
es war an sich meinerseits, wen ich nochmal so nachdenke, nicht beabsichtigt $cfgClient[$client]["path"]["htmlpath"] in der front_crcloginform.inc.php bei den Location: zu belassen...
hab ich vergessen zu entfernen...

verschoben...

Verfasst: Di 19. Sep 2006, 17:26
von Dodger77
emergence hat geschrieben:ähm, das errinnert mich an einen anderen bug...
weiss jetzt aber nicht mehr ob ich das mal gepostet hab...

ist vermutlich der grund warum ich $cfgClient nicht auf global gesetzt hab... (oder ich wollte es nicht verwenden...)

conlib/local.php
class Contenido_Frontend_Challenge_Crypt_Auth
function auth_loginform

Code: Alles auswählen

global $cfgClient;
ergänzen...

wenn das dort drinnen steht ist es in der front_crcloginform.inc.php nicht nochmals notwendig...

wenn man sich den code ansieht versteht man dann auch warum...
Wenn das so ist, ist das natürlich nicht notwendig. Allerdings scheint die front_crcloginform.inc.php im Snapshot schon geändert worden zu sein, die "conlib/local.php" jedoch nicht.
emergence hat geschrieben:die andere sache
es war an sich meinerseits, wen ich nochmal so nachdenke, nicht beabsichtigt $cfgClient[$client]["path"]["htmlpath"] in der front_crcloginform.inc.php bei den Location: zu belassen...
hab ich vergessen zu entfernen...
Gibt es dafür auch einen Grund? Schließlich braucht header(Location: URI) einen absolute URI. Außerdem führt eine Weiterleitung in Form von "front_content.php?idcatart=..." bei mod_rewrite-Umsetzungen zu Schwierigkeiten.
Deswegen bin ich überhaupt erst darauf gestoßen.

Verfasst: Di 19. Sep 2006, 17:38
von emergence
Dodger77 hat geschrieben:Gibt es dafür auch einen Grund? Schließlich braucht header(Location: URI) einen absolute URI. Außerdem führt eine Weiterleitung in Form von "front_content.php?idcatart=..." bei mod_rewrite-Umsetzungen zu Schwierigkeiten.
Deswegen bin ich überhaupt erst darauf gestoßen.
ach so, ihr benötigt das für die mod_rewrite lösung die es da gibt...

der grund ist ganz simpel
für das projekt wo ich das implementiert hab war es einfach nicht notwendig...
die passage aus der doku kenne ich, ignoriere sie aber immer wieder gerne... (mit absicht...)
hätte vorhin auch fragen können warum mit geht doch ohne auch ? ;-)

Verfasst: Di 19. Sep 2006, 17:47
von Dodger77
emergence hat geschrieben:ach so, ihr benötigt das für die mod_rewrite lösung die es da gibt...

der grund ist ganz simpel
für das projekt wo ich das implementiert hab war es einfach nicht notwendig...
die passage aus der doku kenne ich, ignoriere sie aber immer wieder gerne... (mit absicht...)
hätte vorhin auch fragen können warum mit geht doch ohne auch ? ;-)
stese hat für sein Paket eine angepasste "front_crcloginform.inc.php". Aufgefallen ist mir das bei meiner eigenen ModRewrite-Lösung. Die könnte ich natürlich auch nach eigenem Gusto ändern, das reicht für mich dann ja.

Aber mir ging es eigentlich mehr darum, dass normalerweise absolute URIs bei header(Location: ) genutzt werden sollen.

Verfasst: Sa 30. Sep 2006, 20:05
von HerrB
Könnte nochmal jemand ergänzen, welche Änderung nun wo gewünscht/erforderlich ist?

Danke.

Gruß
HerrB

Verfasst: So 1. Okt 2006, 11:44
von emergence
also

conlib/local.php
class Contenido_Frontend_Challenge_Crypt_Auth
function auth_loginform

Code: Alles auswählen

global $cfgClient; 
ergänzen...

front_crcloginform.inc.php (*neuer code mit absoluten webpfad)

Code: Alles auswählen

<?php

/******************************************
* File		:	front_crcloginform.inc.php
* Project	:	Contenido
* Descr 	:	Login form
*
*
* Author	:	Jan Lengowski
* Created	:	21.01.2003
* Modified	:	01.10.2006
*
* © four for business AG
******************************************/

global $cfg, $idcat, $idart, $idcatart, $cfgClient, $lang, $client;

$err_catart = trim(getEffectiveSetting("login_error_page", "idcatart, ""));
$err_cat = trim(getEffectiveSetting("login_error_page","idcat", ""));
$err_art = trim(getEffectiveSetting("login_error_page","idart", ""));

$url = $cfgClient[$client]["path"]["htmlpath"]."front_content.php";

if ($err_catart!='') {
	header("Location: ".$url."?idcatart=".$err_catart);
}
if ($err_art!='' && $err_cat!='') {
	header("Location: ".$url."?idcat=".$err_cat."&idart=".$err_art);
}
if ($err_cat!='') {
	header("Location: ".$url."?idcat=".$err_cat);
}
if ($err_art!='') {
	header("Location: ".$url."?idart=".$err_art);
}

if (isset($_GET["return"]) || isset($_POST["return"])){

	$loc = Array();

	if ($idcat > 0) {
		$loc[] = "idcat=$idcat";
	}
	if ($idart > 0) {
		$loc[] = "idart=$idart";
	}

	if (isset($_GET["username"]) || isset($_POST["username"])){
		$loc[]= "wrongpass=1";
	}

	$loc = implode("&",$loc);

	header ("Location: ".$url."?".$loc);

}

?>

Verfasst: Mo 2. Okt 2006, 13:10
von HerrB
Für checkin vorgesehen.

Gruß
HerrB