Pereiti prie turinio

Svetainių top'ų "Balsuok už taškus" sistemos kūrimas


Rekomenduojami pranešimai

Sveiki, karts nuo karto prisiimu kokį iššūkį iš pažįstamų, tad štai ir vėl turiu tokį vieną.

 

Yra žaidimų serverių TOP'ai, kuriuose reikia balsuoti už svetainę/serverį, kad šis pakiltų aukščiau top'e. Tačiau tie topai nesuteikia galimybės duoti balsuotojams (žaidėjams) kažkokį atlygį už balsą. Štai čia ir visa esmė - reikia suteikti tą atlygį, kai žaidėjas prabalsuoja.

 

Kaip taikinį šiam konkrečiam atvejui pasirinkau http://mc-servers.lt (tikiuosi savininkas nesupyks, nors tai iš tiesų tik padidintų lankomumą).

 

Taigi, jei būtų įmanoma, aišku, būtų geriausia sukurti kokį iframe (pavyzdžiui src="http://mc-servers.lt/balsuoti.php?id=471"), tada kai paspaudžia "Balsuoti", tikrinti, ar yra tekstas "Ačiū už Jūsų balsą.", tačiau kiek teko domėtis, saugumo sumetimais tokie dalykai neįmanomi.

 

Tad sekantis variantas - rodyti balsuotojui kodo paveikslėlį:

<img src="http://mc-servers.lt/image.php" />

http://new.tinygrab.com/1be313cfefc0d42fc2274e56b3990744f97af54973.png

Paspaudus "GO" pirmiausia nuskaitytų esamą balsų skaičių. Tada tą įrašytą kodą siunčia tiesiai į mc-servers.lt ir jei kodas teisingas, balsas būna užskaitomas. Iškart po formos submittinimo reikia vėl patikrinti balsų kiekį, jei padidėjo - kodas teisingas, balsas užskaitytas - atlygis suteiktas.

 

Nesugalvojau jokio kitokio galimo varianto arba jis buvo neįmanomas. Su šiuo katik minėtu variantu dar nesusitvarkiau, vis dar aiškinuosi kaip javascript'e eiliškumas veikia. Nes sakykim jei padarau

var balsai = $.ajax({type: "GET", url: "balsai.php", async: false}).responseText;
$("#vote").submit();
var balsai2 = $.ajax({type: "GET", url: "balsai.php", async: false}).responseText;

alert('1: '+balsai+' 2:'+balsai2);

Nesvarbu, kad be sleep'ų po formos submittinimo ir t.t. ir kad logiškai mastant nespėtų per tiek laiko gal net pasikeisti tas balsų skaičius (kol užkraus naršyklėj puslapį), tačiau esmė tame, kad pirma pateikiamas alert'as, tada tik pati forma nusiunčiama (kuri turi _blank target'ą, tad niekam netrukdo).

 

Gal turit minčių, idėjų, kaip "damušti" šitą konkretų atvejį, o gal teko kažką panašaus daryti ir turit geresnių idėjų ? Norisi, kad balsuoti būtų PRIVALOMA. Nes kai buvo sistema, kai užtenka paspausti ant baneriuko, kuris nukelia į balsavimo puslapį, tai nesąžiningi vartotojai tiesiog paspausdavo ir neprabalsuodavo.

 

Dėkui iš anksto :)

Redagavo DeSigneR
Nuoroda į pranešimą
Dalintis kituose puslapiuose

tl;dr; pakako paskaityti iki vietos su paveikslėliu - kodas įrašomas į sesiją, patalpinus pas save svetainėje jų paveiksliuką kažin ar suveiks. Pataisykit?

 

Taip, kodas įrašomas į sesiją, bet juk atvaizduoju tiesiai į mc-servers.lt, viskas veikia, išmėginta.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tu tipo nori padaryt sistema, kurioje mokiklinukai balsuotu uz tam tikra atliginima?

 

Galima ir taip pasakyti. Tik kad atlyginimas būtų žaidimo serveryje.

 

EDIT: žaidėjas ateina į serverio tinklalapį, nueina prie balsavimo. Ten sakykim jo prašo įvesti tą kodą (kaip 1 poste), įvedęs paspaudžia GO. Tada, kadangi forma yra su target="_blank" naujam tab'e atsidaro top'as su jau submitinta forma, joje rašo "Ačiū už jūsų balsą" (arba "neteisingas kodas"). Galbūt būtų įmanoma dar ir išjungti tą atsidariusį naują tab'ą po visiško užloadinimo, nežinau.

Redagavo DeSigneR
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Galima ir taip pasakyti. Tik kad atlyginimas būtų žaidimo serveryje.

ateina pas tave adminas, ideda savo sserva i topa, tada ateina sio servo vartotojai uz serva balsuoti ir uz balsa gauna kazka serveryje? Tesiog nelabai pagaunu prie ko ten ta captha is kito psl? Jei tu nori prisukti balsu uz piniga, tai daroma visai kitaip ir daug paprasciau.

Redagavo apieviska
Nuoroda į pranešimą
Dalintis kituose puslapiuose

ateina pas tave adminas, ideda savo sserva i topa, tada ateina sio servo vartotojai uz serva balsuoti ir uz balsa gauna kazka serveryje? Tesiog nelabai pagaunu prie ko ten ta captha is kito psl? Jei tu nori prisukti balsu uz piniga, tai daroma visai kitaip ir daug paprasciau.

jam reik tokios nesąmonės: jis patalpina "vote" langelį pas save svetainėj (iš tos kitos svetainės), kad vartotojai galėtų balsuoti neidami į tą svetainę (serverių topą), o tiesiai iš jo svetainės, ir viskas ko jam reik yra response, kad maždaug gautų response true arba false, jeigu true - jis balsavusiam duoda kažką, jeigu false - parašo, kad negalima balsuoti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

ateina pas tave adminas, ideda savo sserva i topa, tada ateina sio servo vartotojai uz serva balsuoti ir uz balsa gauna kazka serveryje? Tesiog nelabai pagaunu prie ko ten ta captha is kito psl? Jei tu nori prisukti balsu uz piniga, tai daroma visai kitaip ir daug paprasciau.

Ne, sistemą darau konkrečiam serveriui, t.y. serverio tinklalapiui.

Kaip pavyzdį galim paimti pirmąją balsavimo sistemos versiją http://mc.godplay.lt/balsavimas/. Žaidėjas ateina, įveda nick'ą. Ten paspaudus ant 1, 2, 3 ir t.t., turėtų nukelti į skirtingus topus, kur reikia balsuoti. Bet tada tiesiog paspaudžia ant nuorodos ir jau gauna atlygį, o balsavimas yra jų sąžinės reikalas.

 

Tai dabar būtų taip - įvedi nicką, tada matai iškart ne kokias nuorodas ar nukreipia tavę į top'ą, o gauni captchą iš to puslapio ir suvedi. O tada jau sistema pati tikrina, ar tas kodas teisingas, ar ne. Tačiau tai patikrinti ne taip paprasta, tad aš ir galvojų apie balsų kiekio tikrinimą prieš kodo įvedimą ir po - tada ir žiūrim, ar užskaitė balsą, ar ne.

 

jam reik tokios nesąmonės: jis patalpina "vote" langelį pas save svetainėj (iš tos kitos svetainės), kad vartotojai galėtų balsuoti neidami į tą svetainę (serverių topą), o tiesiai iš jo svetainės, ir viskas ko jam reik yra response, kad maždaug gautų response true arba false, jeigu true - jis balsavusiam duoda kažką, jeigu false - parašo, kad negalima balsuoti.

Nesvarbu man ar jie įeis į tą svetainę (galbūt per iframe?) ar ne, man svarbu, kad sistema žinotų, jog būtent tas žaidėjas prabalsavo už serverį ir būtent jam aš galiu dabar suteikt atlygį serveryje.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ne, sistemą darau konkrečiam serveriui, t.y. serverio tinklalapiui.

Kaip pavyzdį galim paimti pirmąją balsavimo sistemos versiją http://mc.godplay.lt/balsavimas/. Žaidėjas ateina, įveda nick'ą. Ten paspaudus ant 1, 2, 3 ir t.t., turėtų nukelti į skirtingus topus, kur reikia balsuoti. Bet tada tiesiog paspaudžia ant nuorodos ir jau gauna atlygį, o balsavimas yra jų sąžinės reikalas.

 

Tai dabar būtų taip - įvedi nicką, tada matai iškart ne kokias nuorodas ar nukreipia tavę į top'ą, o gauni captchą iš to puslapio ir suvedi. O tada jau sistema pati tikrina, ar tas kodas teisingas, ar ne. Tačiau tai patikrinti ne taip paprasta, tad aš ir galvojų apie balsų kiekio tikrinimą prieš kodo įvedimą ir po - tada ir žiūrim, ar užskaitė balsą, ar ne.

 

 

Nesvarbu man ar jie įeis į tą svetainę (galbūt per iframe?) ar ne, man svarbu, kad sistema žinotų, jog būtent tas žaidėjas prabalsavo už serverį ir būtent jam aš galiu dabar suteikt atlygį serveryje.

 

Atrodo pagavau, bet ideja vistiek durna... Jei tu zinai, kad gali tai pdarayt per iframe, tu visada gali operuoti su pagrindiniu langu per parent elementa.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Atrodo pagavau, bet ideja vistiek durna... Jei tu zinai, kad gali tai pdarayt per iframe, tu visada gali operuoti su pagrindiniu langu per parent elementa.

Reiškia nepakankamai žinau. Kiek domėjausi, tai visur rašo, kad ne, nieko nebus tau čia, naršyklės neleidžia to išgauti. T.y. kad aš negaliu nieko nei nuveikti tame iframe, nei gauti iš jo kažkokios informacijos, jei nurodytas "src" yra ne mano domeno ribose.

 

EDIT: ir katik pats tuo įsitikinau.

console.log($("#iframe").contents().find('body').html());
Blocked a frame with origin "http://localhost:8080" from accessing a frame with origin "http://mc-servers.lt". Protocols, domains, and ports must match. 

Taigi, nepatikrinsiu, ar kodas buvo teisingas.

Redagavo DeSigneR
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Reiškia nepakankamai žinau. Kiek domėjausi, tai visur rašo, kad ne, nieko nebus tau čia, naršyklės neleidžia to išgauti. T.y. kad aš negaliu nieko nei nuveikti tame iframe, nei gauti iš jo kažkokios informacijos, jei nurodytas "src" yra ne mano domeno ribose.

 

EDIT: ir katik pats tuo įsitikinau.

console.log($("#iframe").contents().find('body').html());
Blocked a frame with origin "http://localhost:8080" from accessing a frame with origin "http://mc-servers.lt". Protocols, domains, and ports must match. 

Taigi, nepatikrinsiu, ar kodas buvo teisingas.

 

Paskaitik kaip yra imituojamas ajax failu ikelimas (Ne HTML5, o senes, per iframe).

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Neimanoma, vien del saugumo.

Pagalvok jei butu imanoma tai iframe uzkrauciau koki gmail ir nusiurbčiau to vartotojo laiskus kuris atidare ta tinklapi ir t.t.

 

Bandyk kontaktuot su to tinklapio administratoriu ir paprasyt pagamint paprasta scripta vartotojams kuris pateiktu duomenis ar vartotojas balsavo ar ne, pagal ip adresa ir serverio id.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

tl;dr; pakako paskaityti iki vietos su paveikslėliu - kodas įrašomas į sesiją, patalpinus pas save svetainėje jų paveiksliuką kažin ar suveiks. Pataisykit?

 

Aš čia gal ne į temą, bet paklausiu būtent tavęs.

 

Pvž. aš turiu svetainę su PHP ir noriu fiksuoti vartotojo aktyvumą, t.y. prisijungę vartotojai. Bet aš nenaudoju kažkokių COOKIES ar pan., o remiuosi kitu metodu (MySQL). Header.php faile, kuris include'inamas į visus kitus puslapius, įrašiau MYSQL UPDATE eilutę - įkrovus puslapį, jei vartotojas prisijungęs, į laukelį 'paskutinis_aktyvumas' įrašo timestamp formatu laiką. Po to atrinkinėju aktyvius vartotojus su IF. Ar toks būdas labai klaidingas/apkraunantis serverį?

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš čia gal ne į temą, bet paklausiu būtent tavęs.

 

Pvž. aš turiu svetainę su PHP ir noriu fiksuoti vartotojo aktyvumą, t.y. prisijungę vartotojai. Bet aš nenaudoju kažkokių COOKIES ar pan., o remiuosi kitu metodu (MySQL). Header.php faile, kuris include'inamas į visus kitus puslapius, įrašiau MYSQL UPDATE eilutę - įkrovus puslapį, jei vartotojas prisijungęs, į laukelį 'paskutinis_aktyvumas' įrašo timestamp formatu laiką. Po to atrinkinėju aktyvius vartotojus su IF. Ar toks būdas labai klaidingas/apkraunantis serverį?

na nežinau, veikia lyg ir panašiai kaip metodas, kurį aš naudoju. Pas mane kiekvieno userio sesija įrašinėjama į mysql, o kai jis prisijungia tai prie jo eilutės users lentelėj prirašo jo sessionid. Su kiekvienu puslapio refresh atsinaujina last_action time sesijų lentelėj, o kadangi turiu to userio sessionid tai galiu lengvai sužinoti ką jis darė paskutinį kartą ir kada tai buvo. Realiai tavo šitą variantą dar galima prastinti, o kaip tu be sesijų darai tai nesuprantu :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

na nežinau, veikia lyg ir panašiai kaip metodas, kurį aš naudoju. Pas mane kiekvieno userio sesija įrašinėjama į mysql, o kai jis prisijungia tai prie jo eilutės users lentelėj prirašo jo sessionid. Su kiekvienu puslapio refresh atsinaujina last_action time sesijų lentelėj, o kadangi turiu to userio sessionid tai galiu lengvai sužinoti ką jis darė paskutinį kartą ir kada tai buvo. Realiai tavo šitą variantą dar galima prastinti, o kaip tu be sesijų darai tai nesuprantu :)

 

Būtų labai draugiška iš tavo pusės (žinoma, jei netingi), trumpai ir aiškiai pasakyti (ne Silkės kalba) paaiškinti kam tos sesijos reikalingos. Pvž. aš sesiją naudoju tada, kai reikia iš failo x perkelti kintamojo reikšmę failą y. Daugiau nežinau kada naudoju.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...