Kirjautuminen

Haku

Tehtävät

Keskustelu: Projektit: MarketCrash (2)

Sivun loppuun

Deathura [11.10.2011 21:55:32]

#

Elikkä olen alottelemassa suomalaisen selainpelin marketcrashin (mcrash.net, aiemmin nimellä pörssiromahdus) uuden version tekemistä. Olen saanut sivuston omistajalta kaikki nykyisen pelin tiedostot, ja niiden pohjalta lähtenyt tekemään uutta versiota. Tosin, koodi tulee olemaan kokonaan uutta, sillä tämä nykyinen koodi on bugista ja huonosti kommentoitua. Olen vasta opiskelija jne. joten mitään valmistumispäivämäärää ei ole muutakuin mieluiten tällä vuosikymmenellä.

Peli on siis suurimmaksi osaksi PHP:ta, ja tätä viestiä kirjoitellessa olen tekemässä kirjautumis ja rekisteröitymis koodeja.

Olen lueskellut php sekä php ja mysql oppaita, mutta tämä projekti mitä ilmeisemmin vaati vähän enemmän kuin näistä saa (muutoin iso kiitos oppaista).

Jos on innokkaita php koodaajia suunnittelemaan ja tekemään peliä niin kertokaa vaan, peli on ilmainen ja mainostulotkin menevät suoraan ylläpitäjälle jotta sivusto pysyy toiminnassa.

Mutta ensimmäiseen kysymykseeni;
-Miten saan palvelimen suorittamaan jonkin koodin joka päivä klo 00.00? Tai siihen tyyliin. Vähän niinkuin ajastettu :P

Kiitos

------------------

Tilanne: SUUNNITTELU; hajanaisia suunnitelmia pelin osista, päämääränä saada valmis pohja valmiiksi kesään 2012 mennessä.

Metabolix [11.10.2011 22:16:40]

#

Laita tekniset kysymykset mielellään erikseen asianmukaiselle keskustelualueelle. Projektialue on tarkoitettu keskusteluun projektista yleisemmällä tasolla: mikä on tilanne ja millaisia ominaisuuksia pitäisi olla.

PHP- ja MySQL-oppaat kertovat kyseisistä aiheista oikeastaan kaiken olennaisen. Lisäksi tarvitset lähinnä yleistä ohjelmointitaitoa eli sitä, että osaat muuttaa ajatuksen koodiksi. Sitä on oikeastaan suurin osa ohjelmoinnista.

Palvelimen saa suorittamaan koodia tiettyyn aikaan jollain ajastuspalvelulla (Linuxissa cron, Windowsissa "ajastetut tehtävät"). Webhotellissa tällaiseen ei usein ole mahdollisuutta, jolloin yksi ratkaisu on tarkistaa joka sivunlatauksella, onko vuorokausi vaihtunut, ja ajaa koodi, jos on. Yksi tapa tarkistukseen on seuraava:

  1. Tee tietokantaan taulu, joka sisältää vain yhden rivin: nykyisen päivämäärän.

  2. Päivitä jokaisella sivunlatauksella päivämäärä nykyiseksi:

    UPDATE paivamaara SET paivamaara = CURDATE()
  3. Jos rivin arvo muuttui (eli $kysely->rowCount() == 1), suorita haluamasi koodi.

Onnea projektiin!

Deathura [12.10.2011 21:50:28]

#

Niinpä tietysti, jotenkin tolleenhan se meneekin. Kiitos kuitenkin paljon kattavista neuvoista, big + for you!

mika132 [13.10.2011 22:24:49]

#

Ota yhteyttä joko sähköpostilla tai MSN pikaviestillä:
matti_leppikanas@hotmail.com

Toimin tässä pelissä myös yhtenä koodarina joten katsotaan jos saataisi yhdessä jotain aikaiseksi Omat peliprojektini vievät hieman aikaa jotan toimisit pää koodarina mutta autan ja ohjastan parhaani mukaan PHP:llä / muutamalla muulla kielellä mitä osaan.


ps. pistin tämän viestin tähän koska en löytänyt mitään s-postia käyttäjän profiilista enkä nappia "lähetä yksityisviesti"

Deathura [19.10.2011 19:50:04]

#

Kiitos, apua tulen varmasti tarvitsemaan :D
Juuri nyt ei ole näköpiirissä ongelmia tai haasteita, mutta ajattelin vähän analysoida tulevia asioita projektissa jotta voin ennakoida ja suunnitella paremmin.

Paitsi, tiedätkö, onko ohjelmaa jolla voisi tarkistaa scriptin tietoturvallisuuden? Vai pitääkö se tehdä silmämääräisesti ja kokeilemalla?

Codeclown [20.10.2011 08:16:47]

#

Deathura kirjoitti:

Paitsi, tiedätkö, onko ohjelmaa jolla voisi tarkistaa scriptin tietoturvallisuuden? Vai pitääkö se tehdä silmämääräisesti ja kokeilemalla?

Ei tähän ole mitään ohjelmaa. Voit palkata hakkerin tutkimaan koodisi =D Alkuun kannattaa kiinnittää huomiota yleisimpiin uhkiin, joita ovat SQL-injektio ja XSS.

Muista aina käyttää käyttäjien syöttämät tiedot funktion mysql_real_escape_string() läpi (http://fi.wikipedia.org/wiki/SQL-injektio). Vielä parempi on luopua PHP:n mysli-funktioista ja käyttää mysqli-kirjastoa (joka on PHP:ssa mukana, myös).

XSS tarkoittaa sitä, että esimerkiksi lomakkeen kautta (e.g. kommenttiboksi) käyttäjä lähettää koodia, yleensä JavaScriptiä, mikä voi pahimmillaan johtaa muiden käyttäjien tietojen leviämiseen. Muista muuntaa tagit, jottei näin käy.

Vielä mieleen tulee salasanat. MD5 ei ole riittävä suojaus, vaikka jopa Putkan opas näin antaa ymmärtää (ehkä vain pitääkseen aloittelijat kärryillä), vaan käyttäjä-kohtaisella ja sivusto-kohtaisella (ei tietokannassa) saltilla höystetty SHA256 on erittäin hidas kräkätä.

makumaku [20.10.2011 08:52:00]

#

Codeclown kirjoitti:

Vielä parempi on luopua PHP:n mysli-funktioista ja käyttää mysqli-kirjastoa (joka on PHP:ssa mukana, myös).

Ja vielä turvallisempi on tehdä tietokantaoperaatiot PDO-rajapinnan kautta. Eli siis funktioilla prepare / execute.

Myöskin on aiheellista tulostaa sivuille kaikki käyttäjän syöttämä data htmlspecialchars-funktion läpi.

Codeclown [20.10.2011 15:43:06]

#

makumaku kirjoitti:

Ja vielä turvallisempi on tehdä tietokantaoperaatiot PDO-rajapinnan kautta. Eli siis funktioilla prepare / execute.

Käsittääkseni myqsli ja PDO ajavat saman asian.

mika132 [23.10.2011 23:09:17]

#

hmm.. siis nyt projektin aloittaneelle:
- Hallitsetko PDO:n miten?
- Tietoturvan yleisesti (itselläni rankkoja kokemuksia siitä kun tietoturva jätetty puolitiehen ja putka pääsee vauhtiin)?
- PHP luonaa millä tavalla?
- Javascript ja Ajax? (muistaisin projektin tietoja lukiessani nähneeni että osa tarvitsee näitäkin)
- Valmistunut noin 6kk-1vuoden työhön? =)

Tiedän projektin läpikotaisin ja selainpelejä tehneenä noin 4vuotta (tai yrittänyt) osaan sanoa, että MarketCrashin suunnitelmat ovat noin vuoden projektia jos ei jopa pidemmän.. Oletko asennoitunut tähän?

Deathura [25.10.2011 14:40:32]

#

-PDO aika heikko osaaminen
-Tietoturva, heikko tietous siitäkin
-?
-En vielä opetellut, mutta tiedän tarvitsevani niitäkin
-Valmius työntekoon on tämän vuosikymmenen loppuun. Jos ei onnistu, voin olla varma ettei minusta mitenkään tule ohjelmoijaa :D. Jos kuitenkin viidessä vuodessa tulis valmiiks edes toimiva pohja jota voi alkaa laajentaa. Toki uskon että sitäkin ennen tulee jo tulosta.

Ja tosiaan, tällä hetkellä opettelen ohjelmointia ja yritän saada tuon rekisteröitymis/kirjautumisen valmiiksi. Sitten lisää suunnittelemista, ja todennäköisesti julkaisen "ensimmäisen" välitavoitteen. Kuitenkin haluan saada aikaan perusteellisen suunnitelman; hyvin suunniteltuhan on puoliksi tehty, sama käsittääkseni pätee ohjelmointiin :D ?

Pelin foorumit ajattelin muuten hoitaa phpBB:llä. Onko kokemuksia?

makumaku [25.10.2011 18:54:37]

#

Jos olet laittamassa sivuillesi phpBB:n, niin yksi vaihtoehto sivuston kirjautumisiin on käyttää phpBB:tä. phpBB:ssä on valmiiksi kaikki kirjautumisiin tarvittava toiminnallisuus aina käyttäjäryhmiä myöten. Eli käytät vain phpBB:n kirjautumista, ja foorumin ulkopulella käytät phpBB:n API:a tarkistamaan käyttäjän kirjautumistiedot. Näin käyttäjienkään ei tarvitse erikseen kirjautua sivustolle ja foorumille.
Tämä siis yksi harkitsemisen arvoinen asia, varmasti homman voi hoitaa järkevästi (ja ehkä järkevämminkn) muutenkin.

Deathura [26.10.2011 20:42:53]

#

Tuota en tiennytkään, kiitos :D
Täytyykin panostaa vähän siihen ja kattoo josko se olisikin parempi.


Sivun alkuun

Vastaus

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

Tietoa sivustosta