PDA

Zobacz pełną wersję : Sonda możliwość głosowania tylko z wybranej sieci



roszpunka
25-02-2011, 20:36
Witam, proszę o pomoc bo szukam już tydzień i nic.
Chodzi mi o to że mam zrobioną sondę i chcę aby glosować mogli tylko goście z adresów ip np. 135.135.0.1 do 135.135.0.255 a inni jak by klikneli na głosuj to otrzymali by komunikat np. taki " Głosować mogą tylko użytkownicy naszej sieci" moja joomla to 1.5.21

PeFik
25-02-2011, 21:02
hmm, to może być trudne ponieważ większość sond np. moje ulubione AcePolls czy Apoll - można ograniczyć głosowanie " Jeden głos na jedno IP "
poza tym widać jakie IP głosowało, ale de facto musiałbyś ręcznie skasować te z innych IP.

Jest jeszcze sposób na edycje ręczną modułu, tak aby pojawił się gdy ktoś ma określone IP, ale to wymaga już ciut wiedzy

roszpunka
25-02-2011, 21:08
Wyniki mogą być dostępne dla wszystkich, tylko żeby sprawdził po kliknięci w głosuj czy spełnia warunek z ip jeśli nie to np. przekierowanie na inną stronę jeśli warunek spełniony to dodaj głos.
Może sam bym coś popisał w php (wątpie abym dał sobię radę :blink:)tylko do jakiego pliku odnosi się przycisk głosuj ??? w standardowej sądzie joomli. Może ktoś już modyfikował taki skrypt

PeFik
25-02-2011, 21:13
a nie lepiej sondę pokazać tylko tym z określonego IP, jak bym się wkurzył jakbym zaznaczył, kliknął a on mówi spadaj :podstep:

roszpunka
26-02-2011, 19:21
A w jaki sposób pokazać sondę tylko tym wybranym ???

---------- Post dodany 26-02-2011 o 09:11 ---------- Poprzedni post był 25-02-2011 o 21:18 ----------

OK, poradziłem sobie, blokuje dostęp do głosowania z innych sieci.:P

---------- Post dodany o 19:21 ---------- Poprzedni post był o 09:11 ----------



<?php
/**
* @version $Id: controller.php 14401 2010-01-26 14:10:00Z louis $
* @package Joomla
* @subpackage Polls
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/



// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport('joomla.application.component.controller') ;

/**
* Static class to hold controller functions for the Poll component
*
* @static
* @package Joomla
* @subpackage Poll
* @since 1.5
*/
class PollController extends JController
{
/**
* Method to show the search view
*
* @access publc
* @since 1.5
*/
function display()
{
JRequest::setVar('view','poll'); // force it to be the polls view
parent::display();
}

/**
* Add a vote to an option
*/
function vote()
{
global $mainframe;

// Check for request forgeries
JRequest::checkToken() or jexit( 'Invalid Token' );

//---------------------------------------dodane---------------------------------------------------------



$targetAddr = "123.123.123.*"; //tutaj podaj adres ip sieci
if (ereg($targetAddr, $_SERVER['REMOTE_ADDR']))

{

//--------------------------------------------------------------------------------------------------------------------

$db =& JFactory::getDBO();
$poll_id = JRequest::getVar( 'id', 0, '', 'int' );
$option_id = JRequest::getVar( 'voteid', 0, 'post', 'int' );

$poll =& JTable::getInstance('poll','Table');
if (!$poll->load( $poll_id ) || $poll->published != 1) {
JError::raiseWarning( 404, JText::_('ALERTNOTAUTH') );
return;
}

$cookieName = JUtility::getHash( $mainframe->getName() . 'poll' . $poll_id );
// ToDo - may be adding those information to the session?
$voted = JRequest::getVar( $cookieName, '0', 'COOKIE', 'INT');

if ($voted || !$option_id )
{
if($voted) {
$msg = JText::_('You already voted for this poll today!');
}

if(!$option_id){
$msg = JText::_('WARNSELECT');
}
}
else
{
setcookie( $cookieName, '1', time() + $poll->lag );

require_once(JPATH_COMPONENT.DS.'models'.DS.'poll. php');
$model = new PollModelPoll();
$model->vote( $poll_id, $option_id );

$msg = JText::_( 'Thanks for your vote!' );
}

// set Itemid id for links
$menu = &JSite::getMenu();
$items = $menu->getItems('link', 'index.php?option=com_poll&view=poll');

$itemid = isset($items[0]) ? '&Itemid='.$items[0]->id : '';

$this->setRedirect( JRoute::_('index.php?option=com_poll&id='. $poll_id.':'.$poll->alias.$itemid, false), $msg );
}

//-----------------------------------------dodane----------------------------------------------
else{
{ header("location: /glos.htm"); exit(); } //przekierowanie na jakąś stronę
}
//------------------------------------------------------------------------------------------------
}
}
?> Modyfikacja pliku /components/com_poll/controller.php może komuś się przyda:up: