Pagina 1 van 1

Cel met IP nummer bij maken?

Geplaatst: 14 jan 2005, 17:56
door maico
Hoi ik ben de mod:
Admin User Viewed Posts Tracker

Aan het proberen aan te passen, ik zou daar graag een cel bij hebben die het IP nummer laat zien van de gebruiker.

Nu heb ik de cel aan gemaakt in de user_viewed_posts.tpl zoals je ziet in het rood:
<table border="0" cellpadding="4" cellspacing="1" width="100%" class="forumline">
<tr><th align="center" height="25" class="thCornerL" nowrap="nowrap">{L_TOPICS}</th>
<th align="center" height="25" class="thTop" nowrap="nowrap">{L_FORUM}</th>
<th align="center" height="25" class="thTop" nowrap="nowrap">{L_LAST_VIEWED}</th>
<th align="center" height="25" class="thCornerR" nowrap="nowrap">{L_VIEWS}</th>
<th aligin="center" height="25" class="thCornerR">{L_IP_ADDRESS}</th>
</tr>
<!-- BEGIN viewedrow -->
<tr>
<td align="left" class="row1"><span class="genmed"><a href="viewtopic.{PHPEX}?{TOPIC_URL_CODE}={viewedrow.TOPIC_ID}">{viewedrow.TOPIC_TITLE}</a></span></td>
<td align="center" class="row2"><span class="genmed"><a href="viewforum.{PHPEX}?{FORUM_URL_CODE}={viewedrow.FORUM_ID}">{viewedrow.FORUM_NAME}</a></span></td>
<td align="center" class="row3"><span class="gensmall">{viewedrow.LAST_VIEWED}</span></td>
<td align="center" class="row3"><span class="genmed">{viewedrow.NUM_VIEWS}</span></td>
<td aligin="center" class="{reg_user_row.ROW_CLASS}"><span class="gen"><a href="{reg_user_row.U_WHOIS_IP}" class="gen" target="_phpbbwhois">{reg_user_row.IP_ADDRESS}</a></span></td>
</tr>
<!-- END viewedrow -->
Ik kom aan die gegevens uit de admin\index_body.tpl
Maar nu moet ik nog ergens aan geven natuurlijk dat het ip ook geprint wordt in het user_viewed_posts.tpl

Ik denk, maar dat is ook niets meer dan gissen……. Dat ik dat in de functions_user_viewed_posts.php moet doen!?
Daar heb ik het volgende veranderd maar er moet schijnbaar nog iets gebeuren want ik zie geen ip komen!?
while($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('viewedrow', array(
'TOPIC_TITLE' => $row['topic_title'],
'FORUM_NAME' => $row['forum_name'],
'FORUM_ID' => $row['forum_id'],
'TOPIC_ID' => $row['topic_id'],
'LAST_VIEWED' => create_date($board_config['default_dateformat'], $row['last_viewed'], $board_config['board_timezone']),
'USER_ID' => $row['user_id'],
"IP_ADDRESS" => $reg_ip,
'NUM_VIEWS' => $row['num_views'])
);
}
$template->assign_vars(array(
'PHPEX' => $phpEx,
'USER_ID' => $user_id,
'S_MODE_SELECT' => uvp_make_sort_drop_box($sort),
'S_ORDER_SELECT' => uvp_make_order_drop_box($order),
'FORUM_URL_CODE' => POST_FORUM_URL,
'TOPIC_URL_CODE' => POST_TOPIC_URL,
'L_VIEWS' => $lang['Views'],
'L_TOPICS' => $lang['Topics'],
'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'],
'L_ORDER' => $lang['Order'],
'L_SORT' => $lang['Sort'],
'L_FORUM' => $lang['Forum'],
"L_IP_ADDRESS" => $lang['IP_Address'],
'L_LAST_VIEWED' => $lang['Last_Viewed'])
);
Ook deze gegevens heb ik uit de admin/index.php
Wat doe ik fout of wat moet ik waar veranderen voordat het werkt?

Re: Cel met IP nummer bij maken?

Geplaatst: 14 jan 2005, 22:44
door Eminemzdogz
maico schreef:
<table border="0" cellpadding="4" cellspacing="1" width="100%" class="forumline">
<tr><th align="center" height="25" class="thCornerL" nowrap="nowrap">{L_TOPICS}</th>
<th align="center" height="25" class="thTop" nowrap="nowrap">{L_FORUM}</th>
<th align="center" height="25" class="thTop" nowrap="nowrap">{L_LAST_VIEWED}</th>
<th align="center" height="25" class="thCornerR" nowrap="nowrap">{L_VIEWS}</th>
<th aligin="center" height="25" class="thCornerR">{L_IP_ADDRESS}</th>
</tr>
bovenste rode thCornerR zou ik thTop van maken en aligin klopt niet ;) Het ziet er voor zover ik weet compleet uit wat je gedaan hebt.. wat voor foutmelding krijg je?

Geplaatst: 14 jan 2005, 23:51
door maico
Die bovenste zoals je aan geeft is een orginele daar ben ik niet aan geweest voor de uitbreiding.

Ik krijg geen fout melding maar ik zie geen ip nummers verschijnen.
Dus ik vermoed dat ik nog ergens iest mis, maar heb geen idee wat!

Geplaatst: 15 jan 2005, 09:59
door Luuk
$reg_ip is een variabele, heb je de plaats waar hij wordt 'aangemaakt' ook meegekopieerd?

Geplaatst: 15 jan 2005, 10:11
door maico
Nee ik heb niet meer gedaan als hier boven staat.

wel heb ik nog ff zitten klojen met dit erbij in te werken maar dat lukt helemaal niet, want alles wat ik doe is proberen en geen kennis :lol:

Code: Selecteer alles

$sql = "SELECT s.session_ip HIER STONDEN ER NOG VEEL MEER
FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s

AND u.user_id = s.session_user_id 
Maar helaas het lukt niet alhoewel ik heel dicht in de buurt ben denk ik :D

Geplaatst: 15 jan 2005, 10:13
door Luuk
Zo te zien moet je dan

Code: Selecteer alles

	$sql = "SELECT u.user_id, u.username, u.user_session_time, u.user_session_page, s.session_logged_in, s.session_ip, s.session_start 
		FROM " . USERS_TABLE . " u, " . SESSIONS_TABLE . " s
		WHERE s.session_logged_in = " . TRUE . " 
			AND u.user_id = s.session_user_id 
			AND u.user_id <> " . ANONYMOUS . " 
			AND s.session_time >= " . ( time() - 300 ) . " 
		ORDER BY u.user_session_time DESC";
	if(!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, "Couldn't obtain regd user/online information.", "", __LINE__, __FILE__, $sql);
	}
	$onlinerow_reg = $db->sql_fetchrowset($result);
en

Code: Selecteer alles

$reg_ip = decode_ip($onlinerow_reg[$i]['session_ip']);
hebben. Moet je het er wel op de goede plaats neerzetten.

Geplaatst: 15 jan 2005, 10:33
door maico
Je bovenste is waar ik het stukje wat ik dacht nodig te hebben uit gehaald heb maar de onderste heb ik niet gebruikt.

En wat is de goed plaats? :lol:

Hier heb ik even het bestandje staan met wat ik heb aangepast in het rood.

Zou je me even willen aangeven waar ik het kan of moet plaatsen?

Geplaatst: 15 jan 2005, 11:55
door maico
Ik heb de (') weer terug veranderd in (")
Want ik kreeg daar deze error op:

Code: Selecteer alles

Parse error: parse error, unexpected T_STRING, expecting ')' in /xx/xx/xx/xx/includes/functions_user_viewed_posts.php on line 201

Nu heb ik het na veel op en neer geschuif zo staan de blauwe code heb ik mee zitten schuiven

Zoals het nu is

en zo ziet het eruit
Afbeelding

Geplaatst: 15 jan 2005, 12:17
door Luuk
Ik heb even de mod bekeken, ik ben bang dat het zo niet gat werken. Je kan beter in de database ene veld bij maken waar het ip wordt opgeslagen.

Code: Selecteer alles

ALTER TABLE `phpbb_topics_viewdata` ADD `user_ip` CHAR( 8 ) NOT NULL;
ALTER TABLE `phpbb_topics_viewdata` ADD KEY `user_ip` (`user_ip`);
Dat even uitvoeren in je database.

Zoek in functions_user_viewed_posts.php

Code: Selecteer alles

function update_user_viewed($user_id, $topic_id)
{
	global $db, $lang;
	
	/* See if our topic already exists */
	$sql = 'SELECT viewed_id, num_views FROM ' . TOPICS_VIEWDATA_TABLE . "
	   WHERE user_id = $user_id
	   AND topic_id = $topic_id";
	
	if (!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, $lang['Topic_Viewdata_Error'], '', __LINE__, __FILE__, $sql);
	}
	$row = $db->sql_fetchrow($result);
	
	/* If it exists, we update the info */
	if (isset($row['viewed_id']))
	{
		$views = $row['num_views'] + 1;
		
		$sql = 'UPDATE ' . TOPICS_VIEWDATA_TABLE . "
		   SET num_views = $views,
		   last_viewed = " . time() . '
		   WHERE viewed_id = ' . $row['viewed_id'];
	}
	/* Else, we just insert the new default values */
	else
	{
		$sql = 'INSERT INTO ' . TOPICS_VIEWDATA_TABLE . "
		   (user_id, topic_id, num_views, last_viewed)
		   VALUES
		   ($user_id, $topic_id, 1, " . time() . ')';	
	}
	if (!$db->sql_query($sql))
	{
		print $sql;
		message_die(GENERAL_ERROR, $lang['Topic_Viewdata_Error'], '', __LINE__, __FILE__, $sql);
	}
}
Wijzig in

Code: Selecteer alles

function update_user_viewed($user_id, $topic_id, $user_ip)
{
	global $db, $lang;
	
	/* See if our topic already exists */
	$sql = 'SELECT viewed_id, num_views FROM ' . TOPICS_VIEWDATA_TABLE . "
	   WHERE user_id = $user_id
	   AND topic_id = $topic_id";
	
	if (!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, $lang['Topic_Viewdata_Error'], '', __LINE__, __FILE__, $sql);
	}
	$row = $db->sql_fetchrow($result);
	
	/* If it exists, we update the info */
	if (isset($row['viewed_id']))
	{
		$views = $row['num_views'] + 1;
		
		$sql = 'UPDATE ' . TOPICS_VIEWDATA_TABLE . "
		   SET num_views = $views,
		   last_viewed = " . time() . '
		   WHERE viewed_id = ' . $row['viewed_id'];
	}
	/* Else, we just insert the new default values */
	else
	{
		$sql = "INSERT INTO " . TOPICS_VIEWDATA_TABLE . "
		   (user_id, topic_id, num_views, last_viewed, user_ip)
		   VALUES
		   ($user_id, $topic_id, 1, ' . time() . ', '$user_ip')";	
	}
	if (!$db->sql_query($sql))
	{
		print $sql;
		message_die(GENERAL_ERROR, $lang['Topic_Viewdata_Error'], '', __LINE__, __FILE__, $sql);
	}
}
Zoek in viewtopic.php

Code: Selecteer alles

update_user_viewed($userdata['user_id'], $topic_id);
Wijzig dat in

Code: Selecteer alles

update_user_viewed($userdata['user_id'], $topic_id, $user_ip);
Nu moet je als het goed is het ip via decode_ip($row['user_ip']), uit de database kunnen halen.

Geplaatst: 15 jan 2005, 12:46
door maico
Al het oude verwijderd en het nieuwe erop.

Maar krijg deze melding:

Code: Selecteer alles

Parse error: parse error, unexpected T_VARIABLE in c:\program files\apache group\apache\htdocs\beagleforum\includes\functions_user_viewed_posts.php on line 77
$sql = 'INSERT INTO ' . TOPICS_VIEWDATA_TABLE . "
(user_id, topic_id, num_views, last_viewed, user_ip)
VALUES
($user_id, $topic_id, 1, " . time() . ", "$user_ip')'; rood is 77
}
if (!$db->sql_query($sql))

Geplaatst: 15 jan 2005, 13:10
door Luuk
Doe het eens opnieuw, ik heb het namelijk mij post gewijzigt (na 2 minuten) en je hebt nog de 'oude' code.

Geplaatst: 15 jan 2005, 13:32
door maico
Ok foutmelding is weg.


Zo was het bij mij
Afbeelding

en nu is het zo
Afbeelding

Niets veranderd

Geplaatst: 15 jan 2005, 15:39
door Luuk
Heb je in het php bestand ook 'IP_ADDRESS' => decode_ip($row['user_ip']), staan?

Geplaatst: 15 jan 2005, 16:25
door maico
uhhhhhhhh........ nee dat had je ook niet gezegd he dat dat moest :lol: :lol:

Maar ik krijg het ook niet op de goed plaats schijnbaar want als ik het er wel inzet veranderd er niets.

ik heb hem voor mij op de meest logiche plaats gezet ik weet natuurlijk niet als dat goed is.
$template->assign_block_vars('viewedrow', array(
'TOPIC_TITLE' => $row['topic_title'],
'FORUM_NAME' => $row['forum_name'],
'FORUM_ID' => $row['forum_id'],
'TOPIC_ID' => $row['topic_id'],
'LAST_VIEWED' => create_date($board_config['default_dateformat'], $row['last_viewed'], $board_config['board_timezone']),
'IP_ADDRESS' => decode_ip($row['user_ip']),
'USER_ID' => $row['user_id'],
'NUM_VIEWS' => $row['num_views'])
);

Wel valt me nu net pas op dat de datum weg is:
Afbeelding

Geplaatst: 15 jan 2005, 17:16
door Luuk
In de tpl moet je ook

Code: Selecteer alles

<td align="center" class="row3"><span class="genmed">{viewedrow.IP_ADDRESS}</span></td>
Gebruiken! Je ziet trouwens ook alleen maar het ip bij iemand die een topic heeft bekeken nadat je de wijziging in het php bestand hebt doorgevoerd.

Geplaatst: 15 jan 2005, 18:13
door maico
Luuk,

Als je een meid was en je zou het willen kwam ik je Afbeelding Afbeelding Afbeelding

Afbeelding
Helemaal geweldig hij doet het Afbeelding



Ps als je vandaag of morgen wilt en tijd heb wil je me met dit probleempje dan ook helpen?
LINKJE
of
LINKJE

Dat zou echt geweldig zijn ik wil niet inhalig zijn maar daar heb ik al wat tiid in zitten en kom echt niet verder

Geplaatst: 16 jan 2005, 11:21
door maico
Te vlug geroepen :roll:
Soms registreerd hij het wel maar veel ook niet?

Voorbeeld van een gebruiker

Code: Selecteer alles

Zo, 16 Jan 2005 10:32   2  81.11.170.162
Zo, 16 Jan 2005 10:31   8  0.0.0.0
Zo, 16 Jan 2005 09:30  16  0.0.0.0
Za, 15 Jan 2005 23:23  11  0.0.0.0
Za, 15 Jan 2005 19:39  24  0.0.0.0
Za, 15 Jan 2005 19:38   8  0.0.0.0
Za, 15 Jan 2005 19:38   3  0.0.0.0
Za, 15 Jan 2005 19:37   2  81.11.170.162

Voorbeeld andere gebruiker helemaal geen IP

Code: Selecteer alles

Zo, 16 Jan 2005 09:27   6   0.0.0.0
Za, 15 Jan 2005 22:19   3   0.0.0.0
En zo is het bij allemaal anders soms wel registratie van IP, en vervolgens weer niets.
De ene gebruiker wel de andere niet.
Probleem van update van de gegevens?
Heb je enig idee hoe ik dit nog kan oplossen?

BVD

Geplaatst: 16 jan 2005, 13:58
door Luuk
Verander

Code: Selecteer alles

$sql = 'UPDATE ' . TOPICS_VIEWDATA_TABLE . "
         SET num_views = $views,
         last_viewed = " . time() . '
         WHERE viewed_id = ' . $row['viewed_id']; 
Dan eens in

Code: Selecteer alles

$sql = "UPDATE " . TOPICS_VIEWDATA_TABLE . "
         SET num_views = $views,
         last_viewed = " . time() . ",
         user_ip = '$user_ip'
         WHERE viewed_id = " . $row['viewed_id']; 

Geplaatst: 16 jan 2005, 15:36
door maico
Hoi,

Net veranderd en zoals ik nu kan zien doet hij het nu wel goed :thumb:
Mocht het toch niet zo zijn hoor je het wel maar ik denk dat het goed is.

Bedankt maar weer.

Geplaatst: 17 jan 2005, 21:28
door maico
Hoi,

Tis nog niet zoals het moet zijn, 90% is goed zover ik kan zien maar vreemd genoeg pakt hij niet alle gebruikers mee met de update van de datum lijkt het wel?

Voorbeeldje