Kirjautuminen

Haku

Tehtävät

Keskustelu: Projektit: PHP-projekti, hyödyllisiä PHP-skriptejä

Sivun loppuun

Antti Laaksonen [06.12.2009 20:21:22]

#

Olen suunnitellut Ohjelmointiputkaan projektia, jossa tuotetaan yhteisvoimin joukko kotisivun tekijälle hyödyllisiä PHP-skriptejä. Tavoite on, että skriptit ovat toimivia, turvallisia ja yksinkertaisia. Kohderyhmä ovat ennen kaikkea kotisivujen tekijät, jotka eivät tunne hyvin PHP-kieltä.

Tässä on muutamia ajatuksiani:

Skriptien aiheita:

vieraskirja, kävijälaskuri, blogi, kirjautuminen, palautelomake, äänestys, kyselylomake, sivupohja, uutiset, kalenteri, kommentointi

Projektista on tarkoitus olla hyötyä sekä skriptien toteuttajille että käyttäjille. Tässä on erinomainen tilaisuus hioa opittuja PHP-taitoja ja saada aikaan koodia, joka pääsee tosikäyttöön lukemattomilla nettisivuilla.

Jos olet kiinnostunut osallistumaan projektiin, lähetä minulle sähköpostia (antti.laaksonen@mbnet.fi). Lähetän paluupostissa pienen PHP-tehtävän, jonka avulla varmistan, että taidot ovat riittävät projektiin.

Lisäksi toivon kaikilta lisää ehdotuksia skriptien aiheiksi: mitä skriptejä kotisivujen laatijat tarvitsevat toistuvasti?

Jaska [06.12.2009 20:48:05]

#

Tässähän menee kaikki PHP-työpaikat, kun kaiken voi hakea Ohjelmointiputkasta. :) Jotain datan hakua toiselta sivulta voi olla käyttökelpoinen. Luulisin, että Googlella löytyy aika paljon jo valmista koodia.

trilog [06.12.2009 20:52:27]

#

Googlella löytyy tosiaan vaikka millä mitalla PHP-skriptejä. Tässä taitaa olla tosin se idea, että jaetaan suomen kielellä (kommentoituja) laadukkaita skriptejä. Täältä hakiessaan voi luottaa siihen, että skripti on esimerkillisen laadukas, siinä ei ole aukkoja ja sitä voi helposti muokata.

Antti Laaksonen kirjoitti:

Lisäksi toivon kaikilta lisää ehdotuksia skriptien aiheiksi: mitä skriptejä kotisivujen laatijat tarvitsevat toistuvasti?

Itse voisin ehdottaa kuvagalleriaa, eri ohjelmointikielien syntaksiväritystä ja tietysti bbcodet.

E.K.Virtanen [06.12.2009 21:23:11]

#

Hieno idea. Scriptejä tosiaankin löytää googlettamalla, mutta tosiasia on että jos joku ei-niin-taitava lähtee niitä kokeilemaan, niin saattaa tulla pissa äkkiä käteen. Toisinaan tarjonnan karsimiseen menee äkkiä enemmän aikaa, kuin koodin luomiseen.

Kotimaiselta luotetulta sivustolta saatavat scriptit, jotka vielä suomeksi kommentoitu on jotain, jota ainakin minä tervehtisin ilolla.

Tuollaista voisin tukea ihan jo rahallisestikin. Koodaamalla en, koska taito ei riitä edes helpoimpaan "testiin" jonka Antti osaisi keksiä :D

ByteMan [06.12.2009 22:44:17]

#

Siitä en tiedä että riittääkö taidot, mutta sen tehtävän voisin joka tapauksessa haluta, näin niinkuin harjoituksesksi. =D

Vaikka asia läheisesti liittyykin osaan noista, niin mainittakoot nyt RSS-feedin toteutus, vaikka niistä uutisista ja blogista ja ehkä jopa kalenteriin merkityistä tapahtumista ja asioista.

Teuro [07.12.2009 13:07:15]

#

Listaa voisi jatkaa tiedoston lataamisella ja muokkaamisella. Tämä muokkaus siis sisältää lukituksen tiedostolle, ettei tule vahingossa kahta muokkausta yhtä aikaa.

kayttaja-2791 [07.12.2009 23:29:37]

#

Itsekin olen tehnyt etäisesti vastaavaa projektia. Idea siinä on vähän vastaava, tosin enempi CMS-vivahteinen. Pääpainona on artikkelit, yhdessä niiden luokittamisominaisuuden ja mm. kommentoinnin kanssa.

Mutta minusta vastaava ajatus voisi ihan hyvin toimia tässäkin, moduulipohjainen toteutus olio-ohjelmointia käyttäen. Tietty toisaalta pelkkä perinteinen funktiorypäs voi olla aloittajalle helpommin omaksuttava ja jatkokehitettävä. Ja tietty aloitusviestissä haluttiin että se toimii mahdollisimman monilla versioilla, joten olio-toteutus taitaa jäädä pois?

Tuolta näkee Doxygenillä generoidun dokumentaation tuosta "J-PageToolsista":
(poistettu rikkinäinen linkki)

Koodeja ei vielä saa mistään, tarkoitus on ollut saada koodit sellaiselle tasolle että niistä jollekulle jotain oikeaakin hyötyä olisi, ja julkaista ne sitten Sourceforgessa jollain vapaalla lisenssillä. Toisaalta tuossa on jo lähtökohtaisesti jotain sellaisia typeryyksiä (moduuleille kannattaisi tehdä yksi yläluokka, epämääräinen virheenkäsittely) että ehkä kannattaisi palata suunnittelupöydän ääreen...

jo123 [08.12.2009 09:15:30]

#

JTC kirjoitti:

Mutta minusta vastaava ajatus voisi ihan hyvin toimia tässäkin, moduulipohjainen toteutus olio-ohjelmointia käyttäen. Tietty toisaalta pelkkä perinteinen funktiorypäs voi olla aloittajalle helpommin omaksuttava ja jatkokehitettävä. Ja tietty aloitusviestissä haluttiin että se toimii mahdollisimman monilla versioilla, joten olio-toteutus taitaa jäädä pois?

Eikös tässä nyt ollut tarkoitus tehdä pikkukoodipätkiä, ilman mitään sen ihmeellisempää. Joten kyllä oliototeutus taitaa jäädä tässä projektissa pois... =) Hassua muuten että minunkin on aina pakko vääntää omaa portaalia, vaikka valmiita paljon parempia on jo maailma täysi. >:D

Triton [09.12.2009 15:09:05]

#

Antti Laaksonen kirjoitti:

Skriptien aiheita:

vieraskirja, kävijälaskuri, blogi, kirjautuminen, palautelomake, äänestys, kyselylomake, sivupohja, uutiset, kalenteri, kommentointi

Sinänsä jos nyt ajatellaan noita Antin antamia aiheita, niin en välttämättä lähtisi käyttämään sanaa "pikkukoodinpätkä", sillä noista voi saada hyvinkin laajoja systeemejä ajatellen nyt esim. vieraskirjaa tai blogia... Minusta olisi sinänsä ihan hyvä juttu, jos mukana olisi oliotkin, koska nykypäivänä niitä kuitenkin käytetään kasvavin määrin. Sitäpaitsi suurin osa web-hotelleista tukee jo PHP5:sta, joten näin ollen PHP:n versioista aiheutuva ongelma ei mielestäni ole niin suuri...

Macro [09.12.2009 15:24:31]

#

Ei koodien tarvitse lyhyitä olla, pääasia on että ne toimivat hyvin ja ovat selkeitä! Kyllä nettisivun tekijälle on mieluisampaa käyttää helppokäyttöistä hyvän näköistä vieraskirjaa, kuin äkkiä tuhaistua kymmenen rivin pätkää. Vinkkinä vain, että runsaasti kommentteja ja selkeää koodia!

Jokotai [09.12.2009 16:13:56]

#

Triton kirjoitti:

Sitäpaitsi suurin osa web-hotelleista tukee jo PHP5:sta, joten näin ollen PHP:n versioista aiheutuva ongelma ei mielestäni ole niin suuri...

Kaikki eivät käytä hotelleja esim. http://sooda.dy.fi/
MBNetissä useimpien kotisivut toki ovatkin.

Metabolix [09.12.2009 16:20:44]

#

Jokotai kirjoitti:

Kaikki eivät käytä hotelleja

Heillä ei varmasti olekaan ongelmia, koska he voivat itse asentaa haluamansa PHP:n version. Sitä paitsi ne, jotka osaavat kunnolla pystyttää oman palvelimen, osaavat varmaankin myös itse käyttää PHP:tä eivätkä välttämättä tarvitse valmiita järjestelmiä.

Jokotai kirjoitti:

MBNetissä useimpien kotisivut toki ovatkin.

Onko sinulla tästä jotain tilastoja? Itse en muista viime aikoina nähneeni kovin paljon MBNet-linkkejä. Halpaa, PHP-tuellista sivutilaa saa monesta paikasta.

Triton [09.12.2009 17:10:12]

#

Tulipa muuten mieleen, että onko koodeja tarkoitus lisenssoida mitenkään tai onko esim. kaupallinen toiminta sallittua?

Antti Laaksonen kirjoitti:

Skriptejä saa käyttää omilla sivuilla täysin vapaasti, eikä tarvitse laittaa häiritseviä linkkejä, merkintöjä tekijästä tms.

Ja lasketaanko tekijän nimi PHP-tiedoston alussa "merkintöjä tekijästä" -kategoriaan vai tarkoitettiinko tuolla lähinnä www-sivuilla näkyvää tekstiä?

trilog [09.12.2009 17:39:20]

#

Luulisin, että skriptit tehdään PHP5:lle. Se on jo laajalti käytössä, eikä PHP enää edes tue versiota 4.

Olio-ohjelmointia on hyvä käyttää siellä, missä siitä on oikeasti hyötyä. Pieniin skripteihin sitä on mielestäni ihan turha lähteä väkisin vääntämään, jollei se oikeasti helpota ylläpitoa jne. Kuten aiemmin jo manittiinkin: muutamissa tässä ketjussa mainituissa skripteissä olioita voi käyttää mainiosti (ja on ehkä suotavaakin).

kayttaja-2791 [09.12.2009 17:40:34]

#

Mielestäni Olio-ohjelmoinnin (tai suunnittelun) hyödyt kuitenkin tulisivat selkeästi esille tälläisessä projektissa. Kun fiksuihin rajapintoihin panostaa suunnitteluvaiheessa (mihin OO kannustaa), pitkällä juoksulla ylläpidettävyys paranee merkittävästi. Muutenkin jako fiksuihin rakenteisiin auttaa tälläisissä isommissa kokonaisuuksissa.

Sinänsähän ei aloittelijalle pahemmin eroa ole:

<?php
/* OLIO */
$vieraskirja = new Vieraskirja("Matin oma vieraskirja");

$vieraskirja->kasitteleUudetViestit();

echo "<h2>Matin oma vieraskirja</h2>";
$vieraskirja->naytaUusimmatViestit(10);

$vieraskirja->naytaLahetyslomake();

/* PROSEDURAALINEN */
opVkKasitteleUudetViestit();

echo "<h2>Matin oma vieraskirja</h2>";
opVkNaytaUusimmatViestit(10);

opVkNaytaLahetyslomake();
?>

Vai mitenkäs tuo toteutus sitten onkaan käytännössä tehdä? En tarkemmin sitten tiedä minkälainen toteutus Antilla sitten onkaan mielessä (sinunkaupat ei kai haittaa :)?

Triton [09.12.2009 18:33:22]

#

Niin, voitaisiihan sitä periaatteessa toteuttaa kaikki skriptit ensin toteutetun luokkakirjaston pohjalta, jolloin ei tule sitä ongelmaa, että tarvittaisiin ulkopuolisia kirjastoja. Sillä tavalla saataisiin myös varmistettua paremmin myös skriptien toiminta ja turvallisuus, kun kaikki pohjautuisi valmiiksi suunniteltuihin metodeihin.

jo123 [09.12.2009 19:17:43]

#

Triton kirjoitti:

Sinänsä jos nyt ajatellaan noita Antin antamia aiheita, niin en välttämättä lähtisi käyttämään sanaa "pikkukoodinpätkä", sillä noista voi saada hyvinkin laajoja systeemejä ajatellen nyt esim. vieraskirjaa tai blogia... Minusta olisi sinänsä ihan hyvä juttu, jos mukana olisi oliotkin, koska nykypäivänä niitä kuitenkin käytetään kasvavin määrin.

No lähinnä syynäni oli se, että aloitteleville koodareille olioden ymmärtäminen on joskus haastavaa (ainenkin itselleni oli) ja siksi ajattelin näin. Joka tapauksessa näin jälkeenpäin ajatellen olisi tosiaankin ihan kätevää noissa laajemmissa "koodin pätkissä" käyttää olioita... Ja niinkuin aiemmin sanottiin, niin esim. blogiahan projektina voi laajentaa aivan loputtomiin. =)

Antti Laaksonen [09.12.2009 22:03:43]

#

PHP 5 ja oliot ovat sallittuja, kunhan niistä on aitoa hyötyä. Ei ole esimerkiksi järkevää koodata skriptiä muuten PHP 4:n tyyliin mutta käyttää "huvin vuoksi" muutamaa PHP 5:n ominaisuutta, joiden vuoksi skripti ei toimi PHP 4:ssä. Myöskään koodin laatu ei parane taikaiskusta, jos koodin ympäröi luokalla ja luo siitä yhden ilmentymän skriptin alussa.

Lisenssiasioista täytyy päättää yhdessä ennen skriptien julkaisua.

walkout_ [10.12.2009 06:15:11]

#

Voisko nää lisensoida ihan niin, että ei mitään rajoituksia kuin että alkuperäisen tekijän nimi pitää jäädä lähdekoodin. Ei mitään oikkkuja.

Triton [10.12.2009 12:29:57]

#

Itse ainakin mietin sitä, että kaupallinen toiminta olisi rajoitettu ainakin siten, että koodin tekijöiden ulkopuolella olevat eivät saa myydä niitä.

jalski [10.12.2009 14:19:46]

#

Ehdotan lisenssiksi alla olevaa:

http://sam.zoy.org/wtfpl/

jo123 [10.12.2009 14:29:36]

#

jalski kirjoitti:

Ehdotan lisenssiksi alla olevaa:

http://sam.zoy.org/wtfpl/

Kannatan >:D

ankzilla [12.12.2009 19:11:24]

#

Kannatan myös >;)

Horny The Horrible [12.12.2009 19:14:29]

#

Kannatan!

Triton [12.12.2009 20:15:03]

#

En kannata!

Olli [15.12.2009 16:12:08]

#

Mites projekti edistyy? Onko ollut paljon halukkaita osallistujia?

Triton [16.12.2009 20:50:51]

#

Koskas projektista tulee lisätietoa?

Isopaha [16.12.2009 23:22:46]

#

Triton kirjoitti:

Koskas projektista tulee lisätietoa?

Kärsivällisyys on hyve. Tälläisen vähän isomman projektin kordinoiminen varmasti vie aikansa ja luulen, että Antti odottaa halukkaiden hakupostien ilmestymistä postilaatikkoonsa...

Torgo [17.12.2009 15:16:53]

#

walkout_ kirjoitti:

Voisko nää lisensoida ihan niin, että ei mitään rajoituksia kuin että alkuperäisen tekijän nimi pitää jäädä lähdekoodin. Ei mitään oikkkuja.

Tämä olisi käytännössä sellainen:
http://creativecommons.org/licenses/by/3.0/
Ja tässä on lisäksi sen eri variaatiot, joissa on mm. kaupallisuus- ja muokkausoikeus- "oikkuja" mukana:
http://creativecommons.org/about/licenses/

Sitten on titetenkin BSD ja GPL eri variaatioineen.

jalski kirjoitti:

Ehdotan lisenssiksi alla olevaa:

http://sam.zoy.org/wtfpl/

En kannata. Enkä usko että tuo olisi ainakaan täällä suomessa lain edessä mitenkään pätevä.

Blaze [18.12.2009 11:26:40]

#

Torgo kirjoitti:

http://creativecommons.org/licenses/by/3.0/

Vierastan CC:tä softalle. Mieluummin joku softalle tarkotettu lisenssi, BSD lienee tällaiselle projektille hyvä.

Torgo kirjoitti:

jalski kirjoitti:

http://sam.zoy.org/wtfpl/

En kannata. Enkä usko että tuo olisi ainakaan täällä suomessa lain edessä mitenkään pätevä.

Jaa, miksikäs ei olisi? Kotimainen versio samasta: http://evvk.com/evvktvh.html

kayttaja-2791 [18.12.2009 14:00:30]

#

Blaze kirjoitti:

Torgo kirjoitti:

http://creativecommons.org/licenses/by/3.0/

Vierastan CC:tä softalle. Mieluummin joku softalle tarkotettu lisenssi, BSD lienee tällaiselle projektille hyvä.

Ehkä turvallisempi maailmanlaajuisesti tosiaan joku jenkeissä tehty softalisenssi. Suomen lainsäädäntöä tulkitessa noilla eroilla tuskin kuitenkaan isompaa merkitystä on. Ite olen CC:tä heitellyt aika huolimattomasti omiin softiin, tosin enpä mitään isompaa olekaan tehnyt/lisensöinyt.

Antti Laaksonen [20.12.2009 18:36:03]

#

Tässä listassa ovat PHP-projektin aiheet ja tekijät:

aihetekijä
vieraskirjaIsopaha
kävijätilastotAntti Laaksonen
blogiZeeli
kirjautuminenTriton
palautelomakeTeuro
äänestystrilog
kyselylomakeTeuro
sivupohja?
uutisetTriton
kalenteriAntti Laaksonen
kommentointi?
kuvagalleriaZeeli
syntaksiväritysIsopaha
bbcodetrilog
RSS-syöte?
tiedoston lähetysSien1
tiedoston muokkaus?

Kun aloitat uuden skriptin tekemisen, ilmoita asiasta tässä keskustelussa, jolloin aihe varataan sinulle. Voit myös varata aiheen, jota ei ole listassa, tai ehdottaa sitä.

Kun saat skriptin valmiiksi, aloita siitä uusi aihe projektin keskusteluun. Laita aiheeseen linkki pakettiin, joka sisältää skriptin koodit, sekä paikkaan, jossa skriptiä voi kokeilla. Sitten muut antavat palautetta skriptistä.

Antti Laaksonen [20.12.2009 18:45:54]

#

Ohjeita:

Yleistä:

Skriptin täytyy toimia mieluiten PHP 4:llä ja ilman tietokantaa. Jos järkevä toteutus olisi hankala PHP 4:llä, PHP 5:n käyttäminen on perusteltua. Jos järkevä toteutus olisi hankala tiedostoilla, tietokannan (MySQL) käyttäminen on perusteltua.

Skriptin täytyy toimia Linuxissa ja Windowsissa, ja se ei saa vaatia kirjastoja, joita ei ole mukana PHP:n perusasennuksessa.

Register globals:

Skriptin täytyy toimia riippumatta register globals -asetuksesta. Jos register globals on käytössä, lomakkeen kautta lähetetty tieto on sekä muuttujassa $_POST["tieto"] että muuttujassa $tieto. Jos register globals ei ole käytössä, lomakkeen kautta lähetetty tieto on vain muuttujassa $_POST["tieto"].

Ratkaisu: Muuttujat täytyy lukea taulukoista ($_POST, $_GET, $_COOKIE jne.), mutta skriptiä ei saa haitata, vaikka tiedot olisivat myös samannimisissä muuttujissa.

Magic quotes:

Skriptin täytyy toimia riippumatta magic quotes -asetuksesta. Jos magic quotes on käytössä, lomakkeen kautta lähetettyyn tietoon ilmestyy kenoviivoja mm. ennen heittomerkkejä.

Ratkaisu: Skriptin täytyy tarvittaessa poistaa kenoviivat, jos magic quotes on käytössä. Tähän soveltuu esim. seuraava koodi, joka olettaa, että tiedoissa ei ole taulukkoja:

if(get_magic_quotes_gpc()) {
    foreach($_POST as $nimi => $arvo) {
        $_POST[$nimi] = stripslashes($arvo);
    }
    foreach($_GET as $nimi => $arvo) {
        $_GET[$nimi] = stripslashes($arvo);
    }
}

Tietysti jos tiedot yhdistetään SQL-kyselyyn, kenoviivat täytyy laittaa takaisin esim. funktiolla mysql_real_escape_string.

Antti Laaksonen [20.12.2009 19:18:27]

#

Varaus: kävijätilastot, kalenteri

Teuro [20.12.2009 19:31:34]

#

Varaus: palautelomake

trilog [20.12.2009 20:03:00]

#

Varaus: bbcode

Isopaha [20.12.2009 20:22:46]

#

Varaus: vieraskirja

Triton [20.12.2009 23:08:25]

#

Varaus: uutiset

Zeeli [21.12.2009 10:17:06]

#

Varaus: blogi, kuvagalleria

Triton [22.12.2009 22:43:31]

#

Pari kysymystä kysyisin:

1. Saako skriptit hyödyntää javascriptiä lähinnä ajaxia?
2. Onko suositeltavaa, että html ja php eriytetään vai
onko siitä suurta haittaa jos joitain osia on sekaisin?
3. Onko tarkoitus, että tehdään myös muotoilut css:ssän puolelta
valmiiksi, vai jätetäänkö se koodin käyttäjän vaivaksi?

Teuro [22.12.2009 23:44:28]

#

Minusta olisi hyvä jos scripti toimisi ilman javascriptiä. html ja php olisi hyvä eriyttää kaikissa tapauksissa. Elementit voisi yrittää nimeta ja luokitta / yksilöidä niin ettei käyttäjän tarvitse puukottaa merkkausta tyylitellessään.

Triton [23.12.2009 00:59:24]

#

Kaikki muut on ihan OK paitsi, että tuo html:llän ja php:n eriyttäminen saattaa joissakin tapauksissa muodostua hankalaksi...

trilog [23.12.2009 10:23:32]

#

Itsekin jättäisin CSS:n ja JavaScriptin pois, koska ne eivät mielestäni kuulu tähän projektiin.

Antti Laaksonen kirjoitti:

Skriptin täytyy toimia Linuxissa ja Windowsissa, ja se ei saa vaatia kirjastoja, joita ei ole mukana PHP:n perusasennuksessa.

Mitä näillä kirjastoilla tarkoitetaan, PHP:n laajennoksia vai? Laajennoksiin kuuluu mm. gd, dom, mysql jne. Sekä, mitä perusaennus käsittää tässä tapauksessa. Perusasennushan olisi PHP ilman mitään laajennoksia.

Antti Laaksonen [23.12.2009 13:14:52]

#

JavaScriptiä voi käyttää, kunhan skripti toimii ilman sitäkin.

HTML:ää ja PHP:tä saa olla sekaisin – se on usein järkevä ratkaisu.

CSS:ää voi käyttää oman harkinnan mukaan, mutta se ei ole pakollista.

Ihanne olisi, että skripti ei vaatisi mitään PHP:n lisäosia, joita ei ehkä ole kaikilla palvelimilla. Tästä voi poiketa hyvällä syyllä.

Antti Laaksonen [23.12.2009 14:33:14]

#

Vielä yksi asia:

Tiedostojen rivinvaihdojen olisi hyvä olla Windows-muodossa, jotta niitä voi muokata helposti Windowsin editoreilla.

Triton [23.12.2009 21:44:38]

#

Tajusin muuten just, että olen koodannut tätä mun uutisohjelmaa englanniksi, joten toivottavasti tämä ei haittaa. Olen kuitenkin kommentoinut suomeksi...

Teuro [28.12.2009 16:41:35]

#

Varaus: Kyselylomake

trilog [28.12.2009 18:10:19]

#

Varaus: äänestys

Sien1 [29.12.2009 21:54:40]

#

Varaus: tiedoston lähetys

Triton [01.01.2010 18:59:42]

#

Varaus: kirjautuminen

Isopaha [05.01.2010 14:20:40]

#

Varaus: syntaksiväritys


Sivun alkuun

Vastaus

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

Tietoa sivustosta