Seite 1 von 2
bug: nicht flexible aufrufe mit idarea, idaction
Verfasst: So 9. Nov 2003, 17:14
von emergence
bin gerade beim durchforsten von absoluten adressierung
in conlib/local.php
findet man folgendes
Code: Alles auswählen
$idaction = 330;
$sql = "INSERT INTO
". $cfg["tab"]["actionlog"]."
SET
idlog = $lastentry,
user_id = '" . $uid . "',
idclient = $client,
idlang = $lang,
idaction = $idaction,
idcatart = $idcatart,
logtimestamp = '$timestamp'";
man sollte die idaction nummer aus der db auslesen lassen - (auf grund der flexibilität) - mittels $idaction = getIDForAction("login");
ich habs jetzt aber nicht getestet, also weiss ich nicht ob diese function zur verfügung steht, bzw wie genau der aufruf aussehen muss.
ich werd diesen thread für mich als interne checkliste verwenden ->
[intern - ok]
Verfasst: So 9. Nov 2003, 18:17
von emergence
weiters
aufrufe die sich auf die function showareas beziehen findet man reihenweise so an
zB:
showareas(6); etc. (die ziffern varieren. gefunden habe ich bis jetzt 8,10,6,12)
zeitweise findet man dazu noch
$poss_area="'".implode("','",$area_tree["6"])."'"; (hier gilt das selbe mit den ziffern)
ähm ja...
[intern: ok] siehe weiter unten...
Verfasst: So 9. Nov 2003, 18:51
von emergence
weiters in
include.upl_files_overview.php
findet man am beginn
$tmp_area = 7;
dies sollte jedoch
$tmp_area = "upl";
sein.
weiters in
include.tplcfg_edit_form.php
findet man
$tmp_area = "tplcfg";
ich glaub das stimmt nicht sollte das nicht
$tmp_area = "tpl_cfg";
heissen ?
[intern: ok]
Verfasst: So 9. Nov 2003, 19:32
von emergence
weiters in
include.lang_left_top.php
findet sich am ende der datei folgendes:
if ($perm->have_perm_area_action($area, 35)) {
sollte
if ($perm->have_perm_area_action($area, "lang_newlanguage")) {
sein.
zusätzlich typo in user_md5.php bei zeile 185
if (!$perm->have_perm_area_action("user","10")&&!$perm->have_perm_area_action("user_rihgts","10")) {
user_rihgts -> user_rights
[intern: ok]
Verfasst: So 9. Nov 2003, 19:41
von emergence
weiters was bedeutet bitte:
have_perm_area_action_item("con_editcontent","15", $idcat)
eine action mit 15 gibts ja nicht
sollte dies nicht
have_perm_area_action_item("con_editcontent", "con_editart", $idcat)
sein ?
[intern: ok]
Verfasst: Mo 10. Nov 2003, 10:17
von emergence
weiters nur so weils mir aufgefallen ist (für die lesbarkeit des quellcodes besser):
in inludes/include_upl_files_overview.php
findet man
Code: Alles auswählen
//Beschreibung
if ($action == 50 && $file == $edit) {
$html_description = "<form method=\"post\" action=\"".$sess->url("main.php?frame=$frame")."\">\n
<input type=\"hidden\" name=\"action\" value=\"51\">\n
<input type=\"hidden\" name=\"path\" value=\"$path\">\n
<input type=\"hidden\" name=\"edit\" value=\"$edit\">\n
<input type=\"text\" name=\"newfile\" value=\"".$descript."\"> \n
<a href=\"".$sess->url("main.php?area=upl&frame=$frame&path=$path")."\"><img src=\"".$cfg['path']['images']."but_cancel.gif\" border=\"0\" alt=\"".$lngUpl["gen_break"]."\" title=\"".$lngUpl["gen_break"]."\"></a> <input type=\"image\" src=\"".$cfg['path']['images']."but_ok.gif\" alt=\"".$lngUpl["renamefile"]."\" title=\"".$lngUpl["renamefile"]."\">\n
</form>\n";
} else {
$html_description = $descript;
}
//Edit Button
$html_editbutton = "<a class=\"action\" href=\"".$sess->url("main.php?area=upl&action=50&frame=$frame&path=$path&edit=$file")."#edit\"><img src=\"".$cfg['path']['images']."but_rename.gif\" border=\"0\" alt=\"".i18n("Rename file")."\" title=\"".i18n("Rename file")."\" ></a> ";
das diese konstruktion funktioniert ist mir klar, nur sauber umgesetzt finde ich sie nicht.
action 51 sollte man in upl_rename umbenennen die entsprechende änderung in con_actions bei idaction 320 ebenso bei name auf upl_rename
bei action 50 könnte man auch einen aussagekräftigeren namen wählen..
witzig finde ich eigentlich nur, das die action 50 zwar einen code hat, aber ihn vermutlich nicht ausführt weil relevant auf 0 steht... (idarea 29 hmm..)
egal hier meine änderungen dazu:
Code: Alles auswählen
//Beschreibung
if ($show == "description" && $file == $edit) {
$html_description = "<form method=\"post\" action=\"".$sess->url("main.php?frame=$frame")."\">\n
<input type=\"hidden\" name=\"action\" value=\"upl_rename\">\n
<input type=\"hidden\" name=\"path\" value=\"$path\">\n
<input type=\"hidden\" name=\"edit\" value=\"$edit\">\n
<input type=\"text\" name=\"newfile\" value=\"".$descript."\"> \n
<a href=\"".$sess->url("main.php?area=upl&frame=$frame&path=$path")."\"><img src=\"".$cfg['path']['images']."but_cancel.gif\" border=\"0\" alt=\"".i18n("Cancel")."\" title=\"".i18n("Cancel")."\"></a> <input type=\"image\" src=\"".$cfg['path']['images']."but_ok.gif\" alt=\"".i18n("Rename file")."\" title=\"".i18n("Rename file")."\">\n
</form>\n";
} else {
$html_description = $descript;
}
//Edit Button
$html_editbutton = "<a class=\"action\" href=\"".$sess->url("main.php?area=upl&show=description&frame=$frame&path=$path&edit=$file")."#edit\"><img src=\"".$cfg['path']['images']."but_rename.gif\" border=\"0\" alt=\"".i18n("Rename file")."\" title=\"".i18n("Rename file")."\" ></a> ";
als feature erweiterung
bei weiterer durchsicht der datei ist mir noch aufgefallen, die unterscheidung bei den dateien zB bei bilder nur zwischen
.jpg|.png|.gif unterscheidet -> vorschlag änderung auf .jpg|.jpeg|.png|.gif
weiters könnte man eine unterscheidung einbauen für
.doc|.rtf - worddokumente
.xls - excel dokumente
.zip - zipfiles
[intern: ok]
Re: bug: nicht flexible aufrufe mit idarea, idaction
Verfasst: Mo 10. Nov 2003, 11:09
von timo
emergence hat geschrieben:
man sollte die idaction nummer aus der db auslesen lassen - (auf grund der flexibilität) - mittels $idaction = getIDForAction("login");
Ist drin. Warum die Funktion getIDForAction in der Klasse perm steckt weiß ich nicht - ist aber an dieser Stelle kein Problem.
aufrufe die sich auf die function showareas beziehen findet man reihenweise so an
showareas(6);
Was es mit dem showareas auf sich hat weiß wohl keiner der am Projekt beteiligten mehr
Scheint wohl irgendwas mit dem Rechtemanagement zu tun zu haben.
include.upl_files_overview.php
findet man am beginn
$tmp_area = 7;
Habe ich mal geändert, kann aber die Verwendung der Variable nicht finden -> altes Gerümpel?
include.tplcfg_edit_form.php
findet man
$tmp_area = "tplcfg";
Wird dort wohl auch nicht mehr benutzt.
if ($perm->have_perm_area_action($area, 35)) {
Ist geändert.
zusätzlich typo in user_md5.php bei zeile 185
Das File wird definitiv nirgendwo mehr benutzt. Ich entferne es mal
have_perm_area_action_item("con_editcontent","15", $idcat)
Habe ich geändert.
das diese konstruktion funktioniert ist mir klar, nur sauber umgesetzt finde ich sie nicht.
Meiner Meinung nach sollte im Editor deiner Wahl ein schwarzer Balken mit weißer Schrift "Zensiert" drüber - denn der Code ist echt gruselig.
witzig finde ich eigentlich nur, das die action 50 zwar einen code hat, aber ihn vermutlich nicht ausführt weil relevant auf 0 steht...
Relevant bedeutet nur, daß dieser Eintrag im Rechteeditor erscheint -> die Aktion wird aber trotzdem ausgeführt (bzw sollte so sein).
Re: bug: nicht flexible aufrufe mit idarea, idaction
Verfasst: Mo 10. Nov 2003, 11:58
von emergence
timo hat geschrieben:Ist drin. Warum die Funktion getIDForAction in der Klasse perm steckt weiß ich nicht - ist aber an dieser Stelle kein Problem.
ähm wie sieht denn der aufruf dort aus ? weil $idaction = getIDForAction("login"); geht nicht
Was es mit dem showareas auf sich hat weiß wohl keiner der am Projekt beteiligten mehr

Scheint wohl irgendwas mit dem Rechtemanagement zu tun zu haben.
sehe ich mir noch genauer an... scheinbar wird area_tree dort definiert und erzeugt falls dies nirgendwo anders bereits passiert ist...
>> include.upl_files_overview.php findet man am beginn $tmp_area = 7;
Habe ich mal geändert, kann aber die Verwendung der Variable nicht finden -> altes Gerümpel?
ich habs komplett rausgeschmissen und alle $tmp_area durch "upl" ersetzt.
>> include.tplcfg_edit_form.php findet man $tmp_area = "tplcfg";
Wird dort wohl auch nicht mehr benutzt.
ich habs komplett rausgeschmissen
>>zusätzlich typo in user_md5.php bei zeile 185
Das File wird definitiv nirgendwo mehr benutzt. Ich entferne es mal
stimmt keinerlei verweise mehr auf die datei zu finden...
Meiner Meinung nach sollte im Editor deiner Wahl ein schwarzer Balken mit weißer Schrift "Zensiert" drüber - denn der Code ist echt gruselig.
bughunting ist besser wie unreal zu spielen
Relevant bedeutet nur, daß dieser Eintrag im Rechteeditor erscheint -> die Aktion wird aber trotzdem ausgeführt (bzw sollte so sein).
nachtrag: scheinbar wird die aktion nur ausgeführt wenn die idarea korrekt zugewiesen wurde... sonst würds bei action 50 ne fehlermeldung geben ->
langfileExpand ($expbereich,$expanded);
die funktion ist nirgends definiert, hmm...
Re: bug: nicht flexible aufrufe mit idarea, idaction
Verfasst: Mo 10. Nov 2003, 11:59
von timo
emergence hat geschrieben:timo hat geschrieben:Ist drin. Warum die Funktion getIDForAction in der Klasse perm steckt weiß ich nicht - ist aber an dieser Stelle kein Problem.
ähm wie sieht denn der aufruf dort aus ? weil $idaction = getIDForAction("login"); geht nicht
$perm->getIDForAction("login")

Verfasst: Mo 10. Nov 2003, 13:32
von emergence
ja beim checken der dateien wiedermal was gefunden
im prinzip gehts nur darum das aufrufe mit
have_perm_item ("con");
showareas ("con");
funktionieren...
für starre konstrukte wie zB.: $area_tree ("6"); kommt auch noch was weiter unten...
die änderungen sind minimal
in perm.inc - function have_perm_item
eine ergänzung nach der global definierung
(das geht)
in functions_general.php
kommt ne neue funktion dazu (vor der function getParentAreaId)
Code: Alles auswählen
function getIDForArea($area) {
global $client, $lang, $cfg, $sess;
$db = new DB_Contenido;
if (!is_numeric($area))
{
$sql = "SELECT
idarea
FROM
".$cfg["tab"]["area"]."
WHERE
name = '".$area."'";
$db->query($sql);
if ($db->next_record()) {
$area = $db->f(0);
}
}
return $area;
}
noch was bei function getParentAreaId
findet man bei beiden querys folgendes
Code: Alles auswählen
".$cfg["tab"]["area"]." AS a,
".$cfg["tab"]["area"]." AS b
ähm bringts das ?
- function showareas
eine ergänzung nach der global definierung
(das geht jetzt... ansonsten -> Call to a member function on a non-object )
am ende der funktion bevor sie geschlossen wird eine ergänzung
anmerkung zu $area_tree
im normalfall sollte jetzt ja ein
$area_tree[showareas("con")] möglich sein... (das geht auch)
okay so weit so gut... nach dem tests läuft dies bis jetzt ohne fehlermeldung...
vergebene rechte in con_rights werden auch korrekt wieder entfernt wenn ein modul layout template etc gelöscht wird, eintragungen stimmen auch...
[intern: ok]
Verfasst: Mo 10. Nov 2003, 14:59
von emergence
weiters in verbindung mit den vorgehenden änderungen...
änderungen in functions.lay.php
showareas("8"); komplett raus (2x)
$poss_area="'".implode("','",$area_tree["8")])."'";
ersetzen durch
$poss_area="'".implode("','",$area_tree[showareas("lay")])."'";
änderungen in functions.mod.php
showareas("10"); komplett raus (2x)
$poss_area="'".implode("','",$area_tree["10")])."'";
ersetzen durch
$poss_area="'".implode("','",$area_tree[showareas("lay")])."'";
änderungen in functions.tpl.php
showareas("12"); komplett raus (2x)
$poss_area="'".implode("','",$area_tree["12")])."'";
ersetzen durch
$poss_area="'".implode("','",$area_tree[showareas("tpl")])."'";
änderungen in functions.str.php
ca bei zeile 105 showareas("6"); komplett raus
gleich darunter
$poss_area="'".implode("','",$area_tree[6])."'";
ersetzen durch
$poss_area="'".implode("','",$area_tree[showareas("str")])."'";
die gleiche ersetzung ca bei zeile 205, 586 vornehmen
verbleiben 2x showareas("6"); diese durch showareas("str"); ersetzen...
somit wäre dieser teil auch komplett fertig...
[intern: ok]
Verfasst: Mo 10. Nov 2003, 15:20
von emergence
irgendwie errinnert mich das an hornbach -> es gibt immer was zu tun...
weiters in
include.str_overview.php
zeile: 206
$perm->have_perm_item("6", $value->id) ){
ersetzen durch
$perm->have_perm_item($tmp_area, $value->id) ){
in
include.con_art_overview.php
zeile: 47
Code: Alles auswählen
$perm->have_perm_area_action(1)) && $perm->have_perm_item(6, $idcat)) ||
ersetzen durch
Code: Alles auswählen
$perm->have_perm_area_action("con")) && $perm->have_perm_item("str", $idcat)) ||
das müsste es mal ganz grob gewesen sein...
[intern: ok]
Verfasst: Di 11. Nov 2003, 11:21
von emergence
weiters
hat jetzt zwar nichts mit absoluter adressierung zu tun:
in include.str_overview.php
zeile 445
($action==="str_newtree")
ähm sollte das nicht
($action=="str_newtree")
sein.
Verfasst: Di 11. Nov 2003, 11:23
von timo
Ich weiß, daß ich das mal mit absicht reingebaut habe, da irgendein PHP-Bug da mitgespielt hat (3 Gleichheitszeichen vergleicht auch den Typ, und durch einen dummen Zufall war ($action == "str_newtree") true, obwohl $action leer war).
Verfasst: Di 11. Nov 2003, 12:45
von emergence
okay die letzten beiden ersetzungen wo noch absolut adressiert wird, jedoch hängen die vermutlich noch direkt mit den con_actions numerischen namen zusammen.
dies findet sich unter
include.con_editcontent.php ($action == 20) , ($action == 10)
und in rights.php ($action == 10)
sind anscheinend fake actions
ich belasse die mal so wie sie momentan sind $action == 20 wird aber anscheinen nirgendwo mehr aufgerufen (könnte man entfernen)