Seite 3 von 3

RE

Verfasst: 30.01.2004 01:05
von rcbcom
Hallo,
wie ich weis mußt Du das Mod manuel Deinstallieren, alles rückgänig machen was in der Install.txt steht!.Hast Du ein Backup gemacht? Dann spiel das einfach wieder auf.

Verfasst: 01.02.2004 16:24
von Nico Haase
also, auf meinem board lässt sich der fehler nicht reproduzieren. zum test habe ich beispielsweise aus dem titel eines themas im internen forum von http://www.buchtips.net/forum/ verriss eingegeben, genauso Theaterstück aus dem text eines themas. ich setze ein halb-kaputt gemoddetes 2.0.6 mit categories hack 2.0.2 ein - vielleicht ist der nicht betroffen?

Verfasst: 01.02.2004 18:35
von Waagenbauer
Habe das gleiche Problem mit phpBB 2.0.4 und dem Mod v2.0.4.

Meiner Meinung nach steckt der Fehler in der "function get_auth_keys".
Wird in search.php hierfür gebraucht:

Code: Alles auswählen

//-- mod : categories hierarchy --------------------------------------------------------------------
//-- delete
//		if ( $search_forum != -1 )
//		{
//			$is_auth = auth(AUTH_READ, $search_forum, $userdata);
//
//			if ( !$is_auth['auth_read'] )
//			{
//				message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
//			}
//
//			$auth_sql = "f.forum_id = $search_forum";
//		}
//		else
//		{
//			$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); 
//
//			if ( $search_cat != -1 )
//			{
//				$auth_sql = "f.cat_id = $search_cat";
//			}
//
//			$ignore_forum_sql = '';
//			while( list($key, $value) = each($is_auth_ary) )
//			{
//				if ( !$value['auth_read'] )
//				{
//					$ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key;
//				}
//			}
//
//			if ( $ignore_forum_sql != '' )
//			{
//				$auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) ";
//			}
//		}
//-- add
		// get the object list
		$keys = array();
		$keys = get_auth_keys($search_where, true, -1, -1, 'auth_read');
		$s_flist = '';
		for ($i=0; $i < count($keys['id']); $i++)
		{
			if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && $tree['auth'][ $keys['id'][$i] ]['auth_read'] )
			{
				$s_flist .= (($s_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ];
			}
		}
		if ($s_flist != '')
		{
			$auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) ";
		}
//-- fin mod : categories hierarchy ----------------------------------------------------------------
Ich habe schon versucht $auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) "; dem alten Code anzupassen. Ohne Erfolg.

Bei mir funzt außerdem die Forum-Auswahl nicht. Es werden immer alle Beiträge aus allen Foren angezeigt. :(

NACHTRAG:
Ich habe private Unterforen in Unterkategorien, wobei hier Ansicht für 'Alle' erlaubt ist, aber lesen (auth_read) nicht erlaubt.
Wenn ich in allen Foren oder in anderen Foren aus anderen Kategorien Suchen lassen, werden keine Beiträge aus dem privaten Subforum in den Ergebnissen angezeigt. Was richtig ist.

Wenn ich aber das private auswähle, spuckt er mir als 'Gast' die privaten Posts aus.
Das heisst ich müsste alle privaten Foren verstecken, also 'Ansicht' (auth_view) nur für 'Privat' einstellen.

Das habe ich nun gemacht:
Jetzt werden die privaten bei Beitrags-Suche in allen Foren ignoriert -> wieder Richtig.
Suche ich in der Kategorie über dem 'verstecktem, privatem' Forum (alle auth auf 'Privat'), bekomme ich immer noch die Beitrags-'Vorschau'.

Vielleicht ist das eine Hilfe für andere, die auch auf der Suche nach diesem Bug sind. Ich weis immo nicht weiter.

Habe bis der Fehler gefunden wird, die Forumauswahl im Such-Formular rausgenommen.

Verfasst: 04.02.2004 17:54
von Bluepower
Also ich scheine dieses Sicherheitsloch nicht zu haben obwohl ich phpbbplus 1.3 einsetzte habe auch gesperrte Foren diese sind jedoch nicht per suche zu finden. Habe auf Beiträge geschalten beim suchen auch mal meinen eigenen Nick genommen und nach dem gesucht da dieser auch in einem Privatem Forum sachen rein schreibt. Nur die Suche hat davon nichts angezeigt weder beiträge noch themen.

Entweder liegt es daran weil ich von einem phpbb 2.0.6 auf ein phpbb plus 1.3 upgedatet habe.

Verfasst: 14.02.2004 00:53
von Waagenbauer
Habe jetzt auf Mod v.204 geupt. Aber ohne Erfolg.

Liegt es denn an dem phpBB v2.0.4 liegen ? Aber an was ?

Verfasst: 16.03.2004 21:21
von Sujao
Ich hab den ersten Beitrag nicht ganz verstanden. Tritt der Bug auf wenn man beide Mods hat oder einen davon ? Ich hab nämlich 2.0.6. und den Cat-Hierarchy 2.0.4 und bei mir Tritt der Fehler nicht auf. Hab es zwei mal getestet.

mini kalender

Verfasst: 31.03.2004 18:19
von Matzecken
Hallo,

also ich hab auch diese 1.3 plus und wenn ich bei dem mini Kalender links auf dem Portal als Gast ein Datum klicke wo ein Beitrag in einem geschüztem Forum geschrieben worden ist, dann kann ich den als Gast auch lesen. Hat das Problem noch einer?


Gruß
Matthias

Fehler gefunden!!

Verfasst: 22.04.2004 17:30
von Waagenbauer
Ich habe die Ursache des Problems gefunden!!

Wie von mir vermutet (siehe oberen Post) liegt der Fehler in einem modifiziertem Code-Abschnitt in search.php.

Ursprunglich wird bei "get the object list" im modifiziertem Teil eine Liste Foren-IDs erzeugt, die vom User (Gast) gelesen werden dürfen. Sie wird dem $auth_sql hinzugefügt.

Bei der Ausgabe der Suchergebnisse werden aber so die Privaten Foren, die für Gäste gesperrt sind, mit ausgegeben.

Folgende Änderung habe ich vorgenommen:

$auth_sql wird zusätzlich eine Liste von Foren-IDs hinzugefügt, die NICHT gelesen werden dürfen.

In der SQL-Anweisung steht dann:
WHERE f.forum_id IN (zu durchsuchende Foren) AND f.forum_id NOT IN (zu ignorierende Foren)

Wenn es keine zu durchsuchenden Foren gibt, wird "No_searchable_forums" ausgegeben.

In search.php diesen Abschnitt ersetzen:

Code: Alles auswählen

//-- mod : categories hierarchy -------------------------------------------------------------------- 
//-- delete 
//      if ( $search_forum != -1 ) 
//      { 
//         $is_auth = auth(AUTH_READ, $search_forum, $userdata); 
// 
//         if ( !$is_auth['auth_read'] ) 
//         { 
//            message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']); 
//         } 
// 
//         $auth_sql = "f.forum_id = $search_forum"; 
//      } 
//      else 
//      { 
//         $is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); 
// 
//         if ( $search_cat != -1 ) 
//         { 
//            $auth_sql = "f.cat_id = $search_cat"; 
//         } 
// 
//         $ignore_forum_sql = ''; 
//         while( list($key, $value) = each($is_auth_ary) ) 
//         { 
//            if ( !$value['auth_read'] ) 
//            { 
//               $ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key; 
//            } 
//         } 
// 
//         if ( $ignore_forum_sql != '' ) 
//         { 
//            $auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) "; 
//         } 
//      } 
//-- add 
      // get the object list 
      $keys = array(); 
      $keys = get_auth_keys($search_where, true, -1, -1, 'auth_read'); 
      $s_flist = ''; 
      for ($i=0; $i < count($keys['id']); $i++) 
      { 
         if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && $tree['auth'][ $keys['id'][$i] ]['auth_read'] ) 
         { 
            $s_flist .= (($s_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ]; 
         } 
      } 
      if ($s_flist != '') 
      { 
         $auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) "; 
      } 
//-- fin mod : categories hierarchy ----------------------------------------------------------------
Durch:

Code: Alles auswählen

//-- mod : categories hierarchy --------------------------------------------------------------------
//-- delete
//		if ( $search_forum != -1 )
//		{
//			$is_auth = auth(AUTH_READ, $search_forum, $userdata);
//
//			if ( !$is_auth['auth_read'] )
//			{
//				message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
//			}
//
//			$auth_sql = "f.forum_id = $search_forum";
//		}
//		else
//		{
//			$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata);
//
//			if ( $search_cat != -1 )
//			{
//				$auth_sql = "f.cat_id = $search_cat";
//			}
//
//			$ignore_forum_sql = '';
//			while( list($key, $value) = each($is_auth_ary) )
//			{
//				if ( !$value['auth_read'] )
//				{
//					$ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key;
//				}
//			}
//
//			if ( $ignore_forum_sql != '' )
//			{
//				$auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) ";
//			}
//		}
//-- add

		// get the object list
		$keys = array();
		$keys = get_auth_keys($search_where, true, -1, -1, 'auth_read');
		$s_flist = '';
		$i_flist = '';
		for ($i=0; $i < count($keys['id']); $i++)
		{	
			if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && $tree['auth'][ $keys['id'][$i] ]['auth_read'] )
			{
				$s_flist .= (($s_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ];
			}
			
			if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && !$tree['auth'][ $keys['id'][$i] ]['auth_read'] )
			{
				$i_flist .= (($i_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ];
			}
		}
		
		if ($s_flist != '')
		{
			$auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) ";
		}
		else
		{
				message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
		}
		
		if ($i_flist != '')
		{
			$auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id NOT IN ($i_flist) ";
		}
			
//-- fin mod : categories hierarchy ----------------------------------------------------------------

Verfasst: 22.04.2004 21:59
von Waagenbauer
Öhm, könnte ein Moderator meinen Patch nicht zu den "Wichtigen Patches für phpBB" oder so legen, bevor das hier wieder versickert ?

Verfasst: 04.07.2004 20:01
von DiveMan
Hm, ich hab nach der Änderung das Problem, dass dann immer folgende Meldung kommt:
Du hast nicht die Berechtigung, dieses Forum zu durchsuchen.
Kommt auch, wenn ich als Admin eingeloggt bin...

Nutze Modversion 2.04 vom Category Mod