Seite 1 von 1

Fehler in Profile C. P. - Pers. Info nur "für Freunde&q

Verfasst: 20.12.2004 04:38
von Sir Drink a lot
Hi!

Ich bin recht neu und habe keinerlei Ahnung von PHP. Aber die manuelle Installation dieses Mods hat funktioniert :)
*Wusste bis vorhin gar nicht, dass es EasyMod gibt :oops: *

Aber nun zu dem Problem, was ich anscheindend auch gelöst habe, aber gerne validiert hätte.

1. "persönliche Informationen" wurden von den jeweiligen Benutzern auf "für Freunde" gesetzt
2. Die Freunde wurden jeweils zur Buddyliste hinzugefügt.
3. Trotzdem wurden dem "Freund" die Daten einfach nicht angezeigt.

Jetzt habe ich im Code einfach in der \profilcp\profilcp_public_base.php

folgendes geändert:

--von---

Code: Alles auswählen

//----------------------------------------
//
// inits
//
//----------------------------------------

// ids
$user_id = $userdata['user_id'];
$view_user_id = $view_userdata['user_id'];

// get buddy infos
$sql = "SELECT * FROM " . BUDDYS_TABLE . " 
		WHERE (user_id=$user_id AND buddy_id=$view_user_id) OR (user_id=$view_user_id AND buddy_id=$user_id)";
if ( !$result = $db->sql_query($sql) )
{
	message_die(GENERAL_ERROR, 'Could not get buddy information', '', __LINE__, __FILE__, $sql);	
}
while ( $row = $db->sql_fetchrow($result) )
{
	if ( $row['user_id'] = $user_id )
	{
		$view_userdata['user_my_friend'] = !$row['buddy_ignore'];
		$view_userdata['user_my_ignore'] = $row['buddy_ignore'];
		$view_userdata['user_my_visible'] = $row['buddy_visible'];
	}
	else
	{
		$view_userdata['user_friend'] = !$row['buddy_ignore'];
		$view_userdata['user_ignore'] = $row['buddy_ignore'];
		$view_userdata['user_visible'] = $row['buddy_visible'];
	}
}
--zu--

Code: Alles auswählen

//----------------------------------------
//
// inits
//
//----------------------------------------

// ids
$user_id = $userdata['user_id'];
$view_user_id = $view_userdata['user_id'];

// get buddy infos
$sql = "SELECT * FROM " . BUDDYS_TABLE . " 
		WHERE (user_id=$user_id AND buddy_id=$view_user_id) OR (user_id=$view_user_id AND buddy_id=$user_id)";
if ( !$result = $db->sql_query($sql) )
{
	message_die(GENERAL_ERROR, 'Could not get buddy information', '', __LINE__, __FILE__, $sql);	
}

//Ich verstehe es nicht, aber es scheint zu funktionieren

while ( $row = $db->sql_fetchrow($result) )
{
	if ( $row['user_id'] != $user_id )
	{
		$view_userdata['user_friend'] = !$row['buddy_ignore'];
		$view_userdata['user_ignore'] = $row['buddy_ignore'];
		$view_userdata['user_visible'] = $row['buddy_visible'];
	}
	else
	{
		$view_userdata['user_my_friend'] = !$row['buddy_ignore'];
		$view_userdata['user_my_ignore'] = $row['buddy_ignore'];
		$view_userdata['user_my_visible'] = $row['buddy_visible'];
	}
}
Also einfach alles rumgedreht und if ( $row['user_id'] != $user_id ) gesetzt. Vorher hat der if - Satz einfach nicht funktioniert.

Habe ich da jetzt eventuell großen Blödsinn veranstaltet? Ich meine ok, es funktioniert jetzt. Aber auf Grund der Sicherheit frage ich lieber nochmal nach. Es ist doch eigentlich das selbe in Grün...

Über Antworten/Tipps würde ich mich freuen.

P.S.:
Benutze phpbb 2.0.11

lol

Verfasst: 20.12.2004 15:13
von Sir Drink a lot
Tja, da sieht man, was passiert, wenn man keine Ahnung von PHP hat.

Im Original-Code vom Download-Packet ist ein Fehler. Es fehlt = im if -Satz.

Es muss natürlich if ( $row['user_id'] == $user_id ) heissen.

Deswegen hat es dann natürlich mit != und Code rumgedreht funktioniert.

Naja...

Aber neues Thema: Wie bekomme ich den ganzen Block "Persönliche Information" weg? Mit Block meine ich den "Persönliche Information" - Rahmen. Säh viel besser aus, als einfach nur die Daten nicht anzuzeigen, wenn es nicht mein Freund ist.