Siis tartten neuvoo "yleisö äänestys" vai mikä oikeelta nimeltään lieneekään.
Eli miten sen saisi niin, että kun tulee esimmäisen kerran sivuille niin siinä lukee vaihto ehdot, ja kun on valinnut omansa niin tulee näkyviin prosentti määrät äänestys tuloksesta, joka näkyy myös kun tulee seuraavan kerran. Eli miten saisin siihen eston äänestää monta kertaa samaa juttua?
https://www.ohjelmointiputka.net/koodivinkit/
Tossa osote. Sitä saat sitten muokkailla ihan vapaasti.
Ei kuitenkaan mun tekemä.
yksinkertaista, kekseillä, sessioneilla...
Onko sivustolla rekisteröityminen? joka tapauksessa tekisin seuraavat estot (olettaen että on sisäänkirjautuminen):
1. Vain kerran per sisäänkirjautunut (helppoa poimia esimerkiksi nick tai käyttäjän id)
2. Kerran per DNS-osoite (löytyy gethostbyaddr($_SERVER['REMOTE_ADDR']);)
3. Kerran per istunto (saa selville esimerkiksi session_id();)
4. Kerran kymmenessä minuutissa per IP-osoite (löytyy esimerkiksi $_SERVER['REMOTE_ADDR'];)
En edes lähtisi miettimään tekstipohjaisia viritelmiä, suoraan tietokantaan vaan tyylillä:
CREATE TABLE aanestajat ( id MEDIUMINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, aanestysaika DATETIME NOT NULL, polliID MEDIUMINT UNSIGNED NOT NULL, kayttajaID MEDIUMINT UNSIGNED, DNS TINYTEXT, istuntoID TINYTEXT NOT NULL, IP TINYTEXT NOT NULL );
ja kysely jolla saisi selville onko käyttäjä äänestänyt menisi jotenkin näin:
SELECT id FROM aanestajat WHERE polliID = '{$polliID}' AND ( ( kayttajaID IS NOT NULL AND kayttajaID = '{$kayttajaID}' ) OR ( DNS IS NOT NULL AND DNS = '{$DNS}' ) OR istuntoID = '{$istuntoID}' OR ( IP = '{$IP}' AND ( (aanestysaika + INTERVAL 10 MINUTE) > NOW() ) ) ) LIMIT 1
Ja jos löytyi osuma, oli heppu äänestänyt n. 99% varmuudella aikaisemmin. Tämä ratkaisu ei ihan tyystin estäisi esimerkiksi saman proxyn takaa tulevia äänestäjiä, mutta se että joku spooffaisi polliasi vaatisi ainakin hieman vaivaa (piparit pois, urleista sessioID:t pois ja kerran kymmenessä minuutissa pollissa äänestäminen tai proxyn vaihto).
Aihe on jo aika vanha, joten et voi enää vastata siihen.