Ostatní témata (Off Topic témata) : phpRS Fórum
Máte problém s konfigurací počítače? Hledáte nejlepší webhosting pro vaši aplikaci? Nevíte si rady s nějakým zajímavým programátorským oříškem? Týká se dotaz fóra? ... Pokud ano, tak je toto diskuzní fórum určeno právě vám.
phpRS - redakční a informační systém
Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: gord007 (IP adresa zaznamenána)
Datum: 2007-02-16, 21:50

Zdravím..
Chci udělat, aby mohly v některé anketě hlasovat jen občané. Už jsem upravil readres.php, kde jsem přidal proměnnou obcan, tak jak info. To funguje. Upravil jsem i ankety tak abych mohl vybrat jestli budou moci hlasovat všeci nebo jenom občan. To mi taky funguje, ale teď nevím jak by měla vypadat podmínka v ankety.php, aby mohl hlasovat jen občan, který má v rs_ctenari obcan=1, když je anketa pro občany.
Nakopne někdo? Díky

[http://www.rozsec.cz] - [http://www.czechppm.cz]



Celkem upraveno 1×. Poslední úprava gord007 v 26.02.2007 17:09.

Re: Zobrazení ankety jen pro občany
Zaslán uživatelem/kou: gord007 (IP adresa zaznamenána)
Datum: 2007-02-18, 11:43

Díky za pomoc. Už jsem na to přišel.

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: gord007 (IP adresa zaznamenána)
Datum: 2007-02-26, 17:14

Takže mně napadl další vylepšovák. Aby byla anketa opravdu objektivní, tak bych chtěl udělat aby každý občan mohl hlasovat pouze jednou. Ale opravdu pouze jednou v anketě.
Přemýšlel jsem že by se udělala nová tabulka kde by bylo id čtenáře, id ankety a jestli už v dané anketě hlasoval nebo ne (1,0). A pak, že by si to z té tabulky ověřilo jestli už čtenář hlasoval nebo ne. Ale nevím jestli by to takhle šlo.
Myslíte, že by to šlo nějak udělat? Třeba i jinak...

[http://www.rozsec.cz] - [http://www.czechppm.cz]

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: gord007 (IP adresa zaznamenána)
Datum: 2007-02-26, 19:26

Neví někdo jak to udělat???

[http://www.rozsec.cz] - [http://www.czechppm.cz]

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-02-26, 19:37

Šlo by to presne ako popisuješ, princíp je OK. Lenže podľa mňa je to márna snaha - žiadna anonymná anketa nebude nikdy objektívna ;-)

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-02-26, 19:43

niečo staršie na tému objektivita výsledkov ankiet:
[http://www.phprs.net/forum/read.php?2,17365]
[http://www.phprs.net/forum/read.php?2,5632]

PS: ak nastavíš hlasovanie len pre registrovaných, už to je dostatočná ochrana pred zneužítím, pomocou zákazu cookies. Ak si totiť čitateľ cookies vypne, systém ho eviduje ako neregistrovaného a teda mu neumožní viacnásobné hlasovanie. Musel by to byť už skúsený užívateľ aby to obišiel.



Celkem upraveno 1×. Poslední úprava pa3k v 26.02.2007 19:53.

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: gord007 (IP adresa zaznamenána)
Datum: 2007-02-26, 20:38

Díky něco jsem pochopil.
Takže by se to dalo udělat jak je psáno v tom jednom topicu( [http://www.phprs.net/forum/read.php?2,5632#msg-5653] ). Že se bude evidovat jestli už čtenář pro danou anketu hlasoval. Ale jak to přesně udělat? Moc se v php nevyznám takže netuším jak by to mělo vypadat.

Já vím, že hlasování jen pro registrované je dostatečná ochrana, ale přesto může čtenář(občan v mém případě) za nějaký čas hlasovat znovu. Nebo snad ne?
Proto chci aby, se to evidovalo jestli už hlasoval a už nemohl nikdy hlasovat. Ale nevím jak na to přesně..

EDIT: Respektive nevím jak by měla vypadat ta tabulka u anket, kde by se zapisovaly id čtenářů, kteří již v anketě hlasovaly. Jak by to jako vypadalo? Např.: 5,6,7,15,18,20?? A jak by se to do té tabulky teda ukládalo..

[http://www.rozsec.cz] - [http://www.czechppm.cz]



Celkem upraveno 1×. Poslední úprava gord007 v 26.02.2007 22:28.

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-02-27, 10:02

Jedna možnosť:
CREATE TABLE `rs_ankety_guard` (
  `ida` int(10) unsigned NOT NULL,
  `idc` int(10) unsigned NOT NULL,
  KEY `ida` (`ida`),
  KEY `idc` (`idc`)
) ENGINE=MyISAM;

pred hlasovaním testneš či existuje záznam id ida = číslo ankety A idc = číslo prihláseného čitateľa
ak neexistuje ťiadny záznam, povolíš hlasovanie a vložíš hodnoty do db.

Druhá možnosť:
CREATE TABLE `rs_ankety_guard` (
  `ida` int(10) unsigned NOT NULL,
  `idc` int(10) unsigned NOT NULL,
  UNIQUE KEY `ida_idc` (`ida`,`idc`)
) ENGINE=MyISAM;

Unikátny kľúč je kombináciou polí ida a idc. Pred hlasovaním spravíš pokus o vloženie, ak bude dotaz úspešný povolíš vykonanie hlasovania, ak nebude úspešný daný čitateľ v danej ankete už hlasoval.


Ak na tom ttrváš prav si to. Toto celé je ale podľa nňa nezmysel robiť. Ktokoľvek bude chcieť, obíde to založením nového účtu a zahlasuje toľkokrát koľko bude chcieť. Dá sa na to dokonca spraviť script a robiť to automaticky (fuj), takže "ochrana" týmto spôsobom bude neúčinná a zastaví to len ochrana nastavená v config.php. To som myslel tými odkazmi. Fakt nemá zmysel snažiť sa o objektivitu *anonymnej* ankety. Je to celé o type položenej otázky.


Určenie ankety vidím skôr pre veci informačného charakteru, kde nie je predpoklad, že bude záujem o zámerné skreslenie údajov. 100% bezpečné riešenie neexistuje, jedine že by sa použilo hlasovanie na základe autentifikácie nejakou certifikačnou autoritou - t.j. overenie mailom s elektronickým podpisom a pod. To je myslím v obyčajnej ankete nereálne. Význam ankety vidím skôr v štatistickom výskume pre užívateľa naoko nepodstatných maličkostí, ktoré však pre autora majú zaujímavú informačno-marketingovú hodnotu. Myslím, že je vhodné venovať sa viac správnemu výberu otázky ako zabezpečeniu ankety proti zneužitiu.

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: Michalek (IP adresa zaznamenána)
Datum: 2007-02-27, 13:06

Nee, neee, nee :-) V phpRS je nějaká funkce která to hlídá sama, nač zdvojovat tabulky.

Nemám tu teď phpRS u sebe, ale je to nějaká funkce v specfce.php, parametry se jí posílají jako "hodnota" "platnost", dělá to samé co navrhuje pa3k, ale dělá to lépe :-)

Tpiju že se jmenuje nějak KontrolaIP...

Vstup se dá třeba anketa-ID-CTENARID

--
[ SAFUS.EU | OFFLINE | FOREVER ]

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-02-27, 13:58

áno je to rs_kontrola_ip, štruktúra vyzerá takto:

`idk` int(10) unsigned NOT NULL auto_increment,
`ip_adresa` varchar(20) collate cp1250_czech_cs NOT NULL,
`cas` datetime default NULL,
`pocet` smallint(5) unsigned NOT NULL default '0',
`typ` varchar(30) collate cp1250_czech_cs NOT NULL,
PRIMARY KEY (`idk`)

skôr ako by som tú funkciu našiel a pochopil ako funguje + ako to do nej implementovať tak, aby to neporušilo funkcie v RS, budem mať hotovú novú tabuľku aj kontrolu ;) ...ale opakujem je to celé nezmysel takto strážiť niečo, čo sa aj tak ustrážiť nedá ;)

PS: tá funkcia nie je rozhodne lepšia, je len všeobecnejšia ;) db riešenie, ktoré som navrhol je odhadujem niekoľkonásobne výkonnejšie. Nejde ani tak o kontrolu pri samotnom hlasovaní... tam zdržanie až tak nevadí - horšie je to už napríklad pri view kde počet záznamov v tabuľke má určite vplyv na odozvu systému pri zobrazovaní článkov. Zvášť ak je PRIMARY KEY číslo, ktoré sa vôbec nepoužíva pri získavaní dát.



Celkem upraveno 1×. Poslední úprava pa3k v 27.02.2007 14:08.

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: gord007 (IP adresa zaznamenána)
Datum: 2007-02-27, 17:52

Díky moc..tak už to mám tak jak jsem chtěl.

Ještě bych potřeboval poradit jak udělat u zobrazení anket, aby nebylo "Hlasovat" ale "Anketa je jen pro občany" nebo něco takovýho...
Ale udělat to tak, aby občan, který hlasovat může tam měl zase "Hlasovat"..
Poradí někdo??

Teď je to tam takhle:
for ($pom=0;$pom<$pocetankety;$pom++):
  $pole_data=phprs_sql_fetch_assoc($dotazankety);
  echo "<p>".$pole_data["otazka"]." (".MyDatetimeToDate($pole_data["datum"]).")";
  if ($pole_data["uzavrena"]==0):
    // moznost hlasovani
    echo " -> <b><a href=\"ankety.php?akce=view&amp;anketa=".$pole_data["ida"]."\">".RS_AN_HLASUJ."</a></b>";
  else:
    // anketa je uzavrena
    echo " -> <b><a href=\"ankety.php?akce=vysledek&amp;anketa=".$pole_data["ida"]."\">".RS_AN_BLOKACE."</a></b>";
  endif;
  echo "</p>\n";
endfor;


[http://www.rozsec.cz] - [http://www.czechppm.cz]

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-02-27, 23:42

Michalek:
tá tabuľka z RSka + funkcia na IP, by sa dala použiť aj inteligentne :) v kombinacii s mazaním neaktualnych zaznamov (pri uzatvorenií ankety). Potom by to vôbec nemusel byť problém ani pri veľkom počte ankiet a reg. čitateľov. Akurát názov funckie a db štruktúr mi vôbec nekorešpoduje s funkciou ktorú to má.

gord007:
v princípe nejak takto: cez $dotazankety ti SQL vracia nejaké pole. Do toho poľa treba úpravou SQL dotazu pridať hodnotu, ktorá v tabuľke vyjadruje, že ide o "občiansku anketu". Túto hodnotu len pred výpisom treba testnúť v podmienke a máš hotovo.

Na záver niečo k ankete z hľadiska použiteľnosti. IMHO je vhodná funknosť nezobrazovať aktuálny stav ankety pred hlasovaním + zobrazovať len tie ankety, v ktorých môže daný čitateľ hlasovať. Ostatné ankety jednoducho pre neho v systéme neexistujú. Toto by podľa mňa mohlo zvýšiť objektivitu :)

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: (IP adresa zaznamenána)
Datum: 2011-07-05, 21:06

Chci se zeptat jestli někdo nevíte ja udělat v phprs, aby nebylo možné díky např. IE privacy keeper hlasovat i 20x za minutu. Jestli to nemí možné např. omezit časem apod.
Děkuji za odpověď.

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2011-07-05, 21:13

Obmedziť na IP a UA, ale dá sa to obísť veľmi jednoducho, takže by som sa tým asi vôbec nezapodieval.

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: (IP adresa zaznamenána)
Datum: 2011-07-05, 21:19

To ano, ale pokud by to bylo na IP určitě by to bylo těžší než přes cokies. Poradíte mi? Stačilo by to omezit časem. Když hlasuji někde jinde tak to přes smazání cokies i tak nejde, ale u mojí verze to fakt de podle toho jak to stihnu, ale i 20x za minutu.

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2011-07-07, 01:48

Písal som o možnom riešení vyššie. V phpRS už JE funkcia, ktorá presne tento typ kontroly toto robí. Jej nastavenie je v config.php.

PS: Akákoľvek podobná ochrana je naprd, stačí nainštalovať jeden plugin do FF a si tam, kde si aj bol. Odradíš len lamy, ten kto bude chcieť anketu zmanipulovať, spraví to aj cez túto ochranu.

veľmi podnetné čítanie:
[http://blackhole.sk/cvicenie-manipulacia-webovych-ankiet]

a ukážky:
[http://blackhole.sk/manipulacia-webovych-ankiet-vysledky]



Celkem upraveno 3×. Poslední úprava pa3k v 07.07.2011 02:07.

Re: Zobrazení ankety jen pro občany - pouze jedno hlasování
Zaslán uživatelem/kou: (IP adresa zaznamenána)
Datum: 2011-07-07, 16:41

JJ děkuji. Už jsem to nastavil. Je mi naprosto jasné, že když budu chtít tak to "oblafnu", ale tak jak to bylo nastavené stačilo jen mazat cokies. Ja lama se nepodival do config.php, ale furt sem ziral do anekty.php.
Jinak děkuji.



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.