Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP:llä "helppo" äänestyssysteemi

Sivun loppuun

Omasual [25.09.2006 15:06:33]

#

Helppo on sen takia lainausmerkeissä, että se on käyttäjälle helppo. IRCQuotes tyyliin äänestys pitäisi saada tehtyä, eli painamalla linkkitekstiä, ääni menisi perille.

MySQL taulussa on tietue pisteet. Ilmeisesti pitäisi saada niin, että linkki viittaisi esim. vote.php?id=xxx. Kuinka saada linkki oikein? Ja miten saada vote.php:n sisälle INSERT INTO riviin tuo urlissa oleva id?

Vote.php voisi ilmoittaa nopsasti onnistumista ja sen jälkeen palata takaisin esimerkiksi index.php:hen. Jutun teoria on päässä hyvin, mutten saa siitä käännettyä koodiksi.

Jelppiä, kiitos! :)

Draiz [25.09.2006 15:12:41]

#

Omasual kirjoitti:

Ja miten saada vote.php:n sisälle INSERT INTO riviin tuo urlissa oleva id?

$_GET["id"];

https://www.php.net/manual/en/reserved.variables.php

Omasual kirjoitti:

...ja sen jälkeen palata takaisin esimerkiksi index.php:hen.

header("Location: index.php");

https://www.php.net/manual/en/function.header.php

tsuriga [25.09.2006 18:17:38]

#

$_GET['id']. Ja tarkistat että se on varmasti muotoa (kokonais)luku (olettaen, että id on luku. Kokonaisluvun raja tuskin tulee heti vastaan), ettei käyttäjä voi syöttää mitä tahansa komentoja kantaan.

Omasual [26.09.2006 09:15:22]

#

tsuriga, kyllä on.

Kiitos vastauksista!

Edit: vote.php:ssä on UPDATE -rivi ja saa kuin saakin pisteen nousemaan yhdellä, nollasta ykköseen. Miksi meno loppuu tähän? Vaikka kuinka painelee, ei pisteet nouse ykkösestä.

$lisaa = "UPDATE blogi SET pisteet = +1 WHERE id = $_GET[id]";

ajv [26.09.2006 10:24:27]

#

Omasual kirjoitti:

$lisaa = "UPDATE blogi SET pisteet = +1 WHERE id = $_GET[id]";

Niin tarkastithan, että $_GET['id'] on kokonaisluku? Tuossa sitä ei näy. Mietippä mitä tapahtuu jos käyttäjä kirjoittaa osoiteriville ?id=1 OR id > 0, tai jotain paljon ilkeämpää...

Niin ja itse kysymykseen:

UPDATE blogi SET pisteet = pisteet + 1 ...

Omasual [26.09.2006 10:37:47]

#

ajv kirjoitti:

Niin tarkastithan, että $_GET['id'] on kokonaisluku?

Kyllä, on kokonaisluku.

avj kirjoitti:

UPDATE blogi SET pisteet = pisteet + 1 ...

No niinhän se olikin, melko simppeli juttuhan tämä. Kiitos!

tsuriga [26.09.2006 12:48:31]

#

$_GET['id'] ei $_GET[id]. Jos kerran olet noin varma, että tuo on kokonaisluku niin olet ilmeisesti tarkastanut sen jo jossain, tai muuttanut kokonaisluvuksi, tai sitten pyörität koko systeemiä vain lähiverkossa luotetuille käyttäjille. Vaikka kyseessä olisikin jälkimmäinen tilanne niin pakottaisin id:n silti kokonaisluvuksi, ja tallentaisin sen uuteen muuttujaan.

<?php
$id = (int)$_GET['id'];
?>

Tontsa-san [26.09.2006 13:19:31]

#

Voikos PHP:llakin käyttää (int):iä?
itse olen aina PHP:n kanssa käyttänyt round() funktiota

T.M. [26.09.2006 13:25:21]

#

round($luku) pyöristää lähimpään kokonaislukuun
(int)$luku pyöristää alaspäin, samoin kuin floor($luku)

kayttaja-2791 [26.09.2006 13:36:20]

#

Muuttujatyyppien muutokset todellakin onnistuvat tuolla syntaksilla:
$muuttuja = (uusi muuttujatyyppi) $muuttuja;

http://wiki.mureakuha.com/wiki/PHP-opas#Muuttujien_tyyppien_yhdist.C3.A4misest.C3.A4.2Fmuunnoksista


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta