Регистрация ip пользователя j1.5

Статус
В этой теме нельзя размещать новые ответы.

slavbase

Постоялец
Регистрация
21 Мар 2008
Сообщения
33
Реакции
34
1. Возник вопрос, как сделать при регистрации пользователя запись в базу (msql) его ip адресса. Это я сделал, вот код.

MYSQL :
HTML:
ALTER TABLE `jos_users` ADD `registerIp` VARCHAR( 15 ) NOT NULL AFTER `gid`;
Модифицируем 3 файла:

libraries/joomla/database/table/user.php
Находим часть кода из файла выше и добавляем registerIp (см. ниже)
HTML:
var $name         = null;
   /**
    * The login name
    *
    * @var string
    */
   var $registerIp      = null;
   var $username      = null;

   /**
    * The email
    *
    * @var string
    */
   var $email         = null;
components/com_user/views/register/tmpl/default.php
Находим часть кода из файла выше и добавляем registerIp: (см. ниже)
HTML:
<tr>
   <td width="30%" height="40">
      <label id="namemsg" for="name"><?php echo JText::_( 'Name' ); ?>:      </label>   </td>
     <td>
        <input type="text" name="name" id="name" size="40" value="<?php echo $this->user->get( 'name' );?>" class="inputbox required" maxlength="50" /> *   
</td>
</tr>
<input type="hidden" name="registerIp" id="registerIp" size="40" value="<? print $_SERVER["REMOTE_ADDR"] ;?>" class="inputbox required" maxlength="15" />
components/com_user/views/user/tmpl/form.php
Находим часть кода из файла выше и добавляем registerIp: (см. ниже)
HTML:
<tr>
   <td width="120">
      <label for="name">
         <?php echo JText::_( 'Your Name' ); ?>:
      </label>
   </td>
   <td>
      <input class="inputbox" type="text" id="name" name="name" value="<?php echo $this->user->get('name');?>" size="40" />
   </td>
</tr>
<tr>
   <td width="120">
      <label for="registerIp">
         <?php echo JText::_( 'registerIp' ); ?>:
      </label>
   </td>
   <td>
      <input class="inputbox" type="text" id="registerIp" name="registerIp" value="<?php echo $this->user->get('registerIp');?>" size="40" />
   </td>
</tr>

Добавляем поля для отображения зарегиного ip в админке User Manager
administrator\components\com_users\views\users\tmpl\default.php
HTML:
<?php defined('_JEXEC') or die('Restricted access'); ?>

<?php  JHTML::_('behavior.tooltip');  ?>

<?php
	JToolBarHelper::title( JText::_( 'User Manager' ), 'user.png' );
	JToolBarHelper::custom( 'logout', 'cancel.png', 'cancel_f2.png', 'Logout' );
	JToolBarHelper::deleteList();
	JToolBarHelper::editListX();
	JToolBarHelper::addNewX();
	JToolBarHelper::help( 'screen.users' );
?>

<form action="index.php?option=com_users" method="post" name="adminForm">
	<table>
		<tr>
			<td width="100%">
				<?php echo JText::_( 'Filter' ); ?>:
				<input type="text" name="search" id="search" value="<?php echo $this->lists['search'];?>" class="text_area" onchange="document.adminForm.submit();" />
				<button onclick="this.form.submit();"><?php echo JText::_( 'Go' ); ?></button>
				<button onclick="document.getElementById('search').value='';this.form.getElementById('filter_type').value='0';this.form.getElementById('filter_logged').value='0';this.form.submit();"><?php echo JText::_( 'Reset' ); ?></button>
			</td>
			<td nowrap="nowrap">
				<?php echo $this->lists['type'];?>
				<?php echo $this->lists['logged'];?>
			</td>
		</tr>
	</table>

	<table class="adminlist" cellpadding="1">
		<thead>
			<tr>
				<th width="2%" class="title">
					<?php echo JText::_( 'NUM' ); ?>				</th>
				<th width="3%" class="title">
					<input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count($this->items); ?>);" />				</th>
				<th class="title">
					<?php echo JHTML::_('grid.sort',   'Name', 'a.name', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>				</th>
				<th width="15%" class="title" >
					<?php echo JHTML::_('grid.sort',   'Username', 'a.username', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>				</th>
				<th width="5%" class="title" nowrap="nowrap">
					<?php echo JText::_( 'Logged In' ); ?>				</th>
				<th width="5%" class="title" nowrap="nowrap">
					<?php echo JHTML::_('grid.sort',   'Enabled', 'a.block', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>				</th>
				<th width="15%" class="title">
					<?php echo JHTML::_('grid.sort',   'Group', 'groupname', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>				</th>
				<th width="15%" class="title">
					<?php echo JHTML::_('grid.sort',   'E-Mail', 'a.email', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>				</th>
				<th width="5%" class="title"> <?php echo JHTML::_('grid.sort',   'Reg ip', 'a.lastvisitDate', @$this->lists['order_Dir'], @$this->lists['order'] ); ?> </th>
				<th width="10%" class="title">
					<?php echo JHTML::_('grid.sort',   'Last Visit', 'a.lastvisitDate', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>				</th>
				<th width="1%" class="title" nowrap="nowrap">
					<?php echo JHTML::_('grid.sort',   'ID', 'a.id', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>				</th>
			</tr>
		</thead>
		<tfoot>
			<tr>
				<td colspan="11">
					<?php echo $this->pagination->getListFooter(); ?>				</td>
			</tr>
		</tfoot>
		<tbody>
		<?php
			$k = 0;
			for ($i=0, $n=count( $this->items ); $i < $n; $i++)
			{
				$row 	=& $this->items[$i];

				$img 	= $row->block ? 'publish_x.png' : 'tick.png';
				$task 	= $row->block ? 'unblock' : 'block';
				$alt 	= $row->block ? JText::_( 'Enabled' ) : JText::_( 'Blocked' );
				$link 	= 'index.php?option=com_users&amp;view=user&amp;task=edit&amp;cid[]='. $row->id. '';

				if ($row->lastvisitDate == "0000-00-00 00:00:00") {
					$lvisit = JText::_( 'Never' );
				} else {
					$lvisit	= JHTML::_('date', $row->lastvisitDate, '%Y-%m-%d %H:%M:%S');
				}
			?>
			<tr class="<?php echo "row$k"; ?>">
				<td>
					<?php echo $i+1+$this->pagination->limitstart;?>				</td>
				<td>
					<?php echo JHTML::_('grid.id', $i, $row->id ); ?>				</td>
				<td>
					<a href="<?php echo $link; ?>">
						<?php echo $row->name; ?></a>				</td>
				<td>
					<?php echo $row->username; ?>				</td>
				<td align="center">
					<?php echo $row->loggedin ? '<img src="images/tick.png" width="16" height="16" border="0" alt="" />': ''; ?>				</td>
				<td align="center">
					<a href="javascript:void(0);" onclick="return listItemTask('cb<?php echo $i;?>','<?php echo $task;?>')">
						<img src="images/<?php echo $img;?>" width="16" height="16" border="0" alt="<?php echo $alt; ?>" /></a>				</td>
				<td>
					<?php echo JText::_( $row->groupname ); ?>				</td>
				<td>
					<a href="mailto:<?php echo $row->email; ?>">
						<?php echo $row->email; ?></a>				</td>
				<td nowrap="nowrap"><?php echo $row->registerIp; ?> </td>
				<td nowrap="nowrap">
					<?php echo $lvisit; ?>				</td>
				<td>
					<?php echo $row->id; ?>				</td>
			</tr>
			<?php
				$k = 1 - $k;
				}
			?>
		</tbody>
	</table>

<input type="hidden" name="option" value="com_users" />
	<input type="hidden" name="task" value="" />
	<input type="hidden" name="boxchecked" value="0" />
	<input type="hidden" name="filter_order" value="<?php echo $this->lists['order']; ?>" />
	<input type="hidden" name="filter_order_Dir" value="<?php echo $this->lists['order_Dir']; ?>" />
	<?php echo JHTML::_( 'form.token' ); ?>
</form>



2. При входе на сайт нужно зафиксировать в базу ip пользователя. Вроде все просто, но хочется сделать как это реализовано с lastvisitDate.
 
Как мне представляется - дабы не делать лишнего запроса, можно просто дописатть обновление ip в функцию setLastVisit (которая прячется в libraries\joomla\database\table\user.php (строка 292))
 
Удалось ли реализовать регистрацию ip пользователя? поделитесь кодом плс, буду очень благодарен:)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху