Manualai.lt Forumas
PHP ir SQL => PHP ir SQL - Klausimai ir pagalba => Temą pradėjo: iSpark 2013-07-15 22:55:08 pm
-
Sveiki, pasidariau paprastą top sistemėlę. atvaizdavimo metu įmetą atsikra nuorodą pagal savo įd ir sugeneruoja nuorodą tarkim
.php?vote=1
Priemu su kitu failu, su GET ištraukiu, patikrinu ar pagal id atitinka jeigu taip updatinu serverio už kurį balsuoju eilute kurioje skaičiuojasi vote. bet štai atsirado labai daug problemų.
Bandžiau taisyti tai, kad negalima būtų iš vieno ip maigyti non-stop tą vote mygtuką.
Uždėjau "apsaugas" sukūriau votelock lentelę kurioje laukelius ip,data,id
ip įsirašo balsavusio ip adresas,data time() reikšmė , o id įrašoma serverio už kurį balsuota id. pirma bėda, jeigu tikrinu ar yra prabalsuota už tą serverį, nebegaliu balsuoti už kitus. nes iškart blokuoja radus reikšmę pvz id1.
Nuėmus šitą id apsaugą, gavau tai, kad iš 1 ip tik už vieną serverį galiu balsuot. kaip viso to išvegt? kiekvienam serveriui po lentelę nejaugi kurt?? ;/
Atsiprašau, tik dabar pamačiau, kad ne ten parašiau...
-
Na aš nesu specialistas, bet tikrai nebuvo sunku sugalvot.
Siūlyčiau, toje lentelėje, kurioje saugai serverių id, name ir visa kitą, pridėti lauką IP. Ir tarkim visus ip saugoti tokiu pavidalu: 127.0.0.1,78.51.92.74,89.127.86.25 ir t.t. Atskirti juos kableliais, ir tuomet gaudamas balsuojančiojo IP adresą, su explode funkcija atskiri juos kaip ir į masyvą. Ir tarkime toliau tikrini if (!in_array("$vartotojoip", $masyvo_kintamasis)) { echo" Tu jau balsavai už šitą serverį"; }
Ir jeigu tarkim balsavimas kas 24h ar kokios ten pas tau sąlygos, tiesiog automatiškai išvalai (turbūt reikėtų CronJobs ar kažko panašaus) tą lauką reikiamu laiku ir vėl visi galėtų balsuot.
-
O kaip naudotis ta explode funkcija? neteko dar tokios matyt ;o ir naudot.
Ir kaip pridėti reikšmes tokiu formatu?
Aš dar žalias, tad labai nepykit už klausimus ;/
-
http://php.net/manual/en/function.explode.php (http://php.net/manual/en/function.explode.php)
-
Ką man tas jūsų manualas, jeigu aš nesinaudojęs šita funkcija ir nežinau net kaip naudotis, ką tame manuale bus parodyta būtent šitas būdas kurio man reikia???
NE.
Kodo neprašau, tik kaip padaryt paaiškinti...
Edit :
Su explode viskas pavyko, teko pačiam užsijimt, tik vat niekaip nesugalvoju kaip su duombaze sužaist, kaipgi pridėt ip, nepažeidus senos reikšmės.
su explode gaunu :
Warning: in_array() expects parameter 2 to be array, string given in /home/natarai/domains/natarai.lt/public_html/top/profile.php on line 48
-
iSpark, php.net manuale VISADA yra pavyzdžiai. Pasižiūrėk įdėmiau.
Kitas dalykas, tai paimti tą string, nedaryti su juo nieko, tik pvz:
$database_string .= $mano_ip;
Ir turi įrašyti nieko nepakeitus :)
-
Ačiū,Modestai.
Ačiū,Arturai.
Viskas veikia idealiai. Dėkingas ;))
-
Siūlyčiau, toje lentelėje, kurioje saugai serverių id, name ir visa kitą, pridėti lauką IP. Ir tarkim visus ip saugoti tokiu pavidalu: 127.0.0.1,78.51.92.74,89.127.86.25 ir t.t.
Nesąmonė. Kam laikyti duomenis sukišant viską į vieną, kai net negali po to su SQL filtruoti jų?
`balsai`
ip | serverio_id
1.2.3.4 1
Kame bėda?