Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Foorumi (jälleen...)

Sivun loppuun

Jyri [23.06.2004 19:30:01]

#

Tässä teen foorumia ja nyt eteen tuli pieni perustavaalaatua oleva ongelma, eli
käyttäjät voivat aloittaa uudenaiheen (ihme...) kun aihe aloitetaan, niin hurjaan tekstitietokantaan kirjoitetaan aiheen otsikko ja itse aihe. Siinä onkin heti eka ongelma. Miten saan luotua uuden tekstitiedoston uusille aiheille? Ja vielä tulostettua ne automaattisesti "kommentti" sivulle?

tsuriga [23.06.2004 20:48:40]

#

fopen("myfile.txt", "w+");
Tuohan on se komento, jos nyt sitä hait. Kannattaa ehkä vielä chmodailla se, jos haluaa etteivät käyttäjät lue suoraan tekstitiedostoja. Ne saa tulostettua selaamalla hakemistoa joko glob- tai opendir&readdir -funktioilla.

Jyri [23.06.2004 20:57:40]

#

Siis tarkoitin että miten sen saa tulostettua selaimelle automaattisesti, aihe sivulle jonka käyttäjä on juuri aloittanut. Eli käyttäjä periaatteessa luo uuden txt tiedoston jonka sisältö tulostetaan selaimelle! Automaattisesti jos se nyt jäi jollekkin epäselväksi ;)

ajv [23.06.2004 22:17:11]

#

No tuon toteuttamiseen on varmasti yhtä monta tapaa kun on toteuttajaakin. En tiedä miten foorumisi toimii, mutta selkein vaihtoehto lienee toteuttaa tuo esim. seuraavalla mallilla:

tsuriga [23.06.2004 22:30:02]

#

ajv:n antama malli o jees ja jos teet niin niin write_threadin jälkeen ohjataan read_thread.php?aihe_id=uusinid ja read_threadissä haet tekstitiedosta aiheen otsikon ja tekstit ja muotoilet ne haluamallasi tavalla.

Jyri [24.06.2004 18:06:36]

#

Toi ajv:n juttu tuntuu ihan hyvältä, mutta tarvis ihan kalevalaks vaa ;) Sillee et saiskos siihen enempi selityksii? Erityisesit nää kohdat jäi vähän epäselviksi:

ajv kirjoitti:

Get-parametrinä laitetaan joku tunniste, jolla ko. tiedosto saadaan selville. Esim.
header("Location: read_thread.php?aihe_id=5");

ajv kirjoitti:

Luetaan get-taulukosta 'aihe_id':n arvo. Haetaan tietokannasta ko. arvon perusteella oikea(t) tekstitiedosto(t)

tsuriga [24.06.2004 23:45:19]

#

Molemmat lainaukset: aihe_id:n arvoksi tulisi vaikka tiedoston numero. One linerina näin:

$filu=file($_GET['aihe_id'].".txt");

Nyt sinulla olisi $filu-muuttujassa taulukkona sen aiheen tiedot, minkä haluat tulostella. headerillä tuossa write_thread.php metodissa voit ohjata käyttäjän suoraan käyttäjän juuri luomaan threadiin.

Jyri [25.06.2004 08:13:41]

#

No nyt alko vähä selkeemään :) kiitti vaa! Kyselen sitte taas kun tulee ongelmii :>

Jyri [25.06.2004 15:28:17]

#

Nyt tuli ongelmaks toi _id juttu.. En nyt tähän viitti laittaa niitä mun rävellyksii... Eli ongelma1 on että pitääkö ton aihe_id:in arvon lisääntyy aina yhellä kun uusi auhe aloitetaan? Ja jos pitää niin miten te sen tekisitte?

Ongelma2 siis pitääkös toi txt tiedosto aina luoda vaikka touch(); funktiolla? Ja jos se täytyy tehdä niin niin miten silloin oikeuksien antaminen onnistuu? Eli oikeuksienhan pitää vähintään olla 666 että tiedostoon voi kirjoittaa!

tsuriga [25.06.2004 15:39:12]

#

Quick hints: Koodivinkit & PHP.net manuaali & User contributed notes. Sitten, fopen("tiedosto","mode+"); tarkoittaa, että tiedosto luodaan, jos sitä ei ole olemassa (jos nyt en omista väärää informaatiota, saa korjata). Eli aihetta luodessa fopen($id.".txt","w+"); ja johan toimii. Suojaus tapahtuu näin: chmod(polku, oikat) esim. chmod("5.txt",0646); . Pitää tietenkin kasvaa sen id:n tai jotenki muuttua, tee sille oma tiedosto, missä lukee vaikka seuraava id.

Jyri [25.06.2004 19:44:59]

#

NO NIIN! Just ku oisin päässy testaamaan tota mun foorumia ja aloin lähettää tiedostoja nettiin, niin servu kaatu!
:D

Gwaur [26.06.2004 11:33:11]

#

Kantsis olla serveri linuxilla ;)

Jyri [26.06.2004 12:12:35]

#

Niin se onki!
Mut taas tuli ongelma.
Mä en saa sitä mun scriptiä luomaan sitä uutta txt tiedostoa. Tein kyl niinku toi tsuriga nauvo, mutta ei toimi.

Jyri [26.06.2004 14:28:58]

#

<?php

$filename = "tieto.txt";

$fp = fopen($filename, "w+") or die ("Ee voe avvoo!");

fwrite($fp, "Terve");

fclose($fp);

header("Location: tieto.txt");

?>

Eli tää on vaan semmone testi 'skripti'. Pitäskö tän teijän mielest luoda filu "tieto.txt" ja kirjottaa sinne "Terve"?

Draiz [26.06.2004 14:35:35]

#

<?php
ob_start();

$filename = "tieto.txt";

$fp = fopen($filename, "w") or die ("Ee voe avvoo!");

fwrite($fp, "Terve");

fclose($fp);

header("Location: tieto.txt");
ob_end_flush();
?>

Tuossa korjattu versio scriptistäsi.

Jyri [26.06.2004 14:52:41]

#

Hmmm. toi ei toiminu, ainakaa mulla. Ilmotti ton "Ee voe avvoo!".

sooda [26.06.2004 14:54:36]

#

No sitten ei varmaan ole oikeuksia siihen filuun?

Jyri [26.06.2004 17:56:16]

#

Nyt se toimii! Tai no header() ei suostu ohjaamaan siihen txt filuun, mutta se kirjottaa siihen filuun "terve". Mitenhän sen saisi vielä ohjaamaan siihen filuun?
Edit: Nii joo se ei ilmottele mitään semmosta kun "can not add header information" Vaan se ei niinku lähde mihinkään!

Tempfile [26.06.2004 18:02:38]

#

Tuossa header-ohjauksessa on vikana se, että header-funktio tarvitsee absoluuttisen, ei relatiivista osoitetta. Homma toimii kyllä kunhan muuttaa tiedostonimen muotoon http://www.jokupalvelin.com/jokukansio/tiettytiedosto.txt. Jos dynaamisempaa vaihtoehtoa haluaa/tarvitsee, niin noita tietoja voi kalastella $_SERVER-taulukosta.

Jyri [26.06.2004 18:33:10]

#

<?php
ob_start();

$filename = "tieto.txt";

chmond("tiedot.txt",0666);

$fp = fopen($filename, "w") or die ("Ee voe avvoo!");

fwrite($fp, "Terve");

fclose($fp);

header("Location: http://kirpalo.sytes.net/~jyri/php/tieto.txt");
ob_end_flush();
?>

Siis onkos nyt jotain tuossakin vialla kun se nyt sitten lopetti toimintansa :P Voiko palvelimessa olla jotain vikaa kun sitä just uudistettiin ja muuteltiin niin virheitähän voi siitäkin vähän löytyä. Mul on just tommonen koodi netis mut ei toimi! Ite en keksi miks ei toimi... Noh oon vasta pari kk sit alottanu php:n et koittakaa kestää :)

edit: nii se ilmottaa kun koittaa mennä tohon tieto.txt filuun että 404 Not Found :)

tsuriga [26.06.2004 23:27:10]

#

Sinulla lukee chmond kun funktion nimi on chmod. Testaa koodisi omalla webpalvelimella ja laita php.iniin error_reporting = E_ALL & ~E_NOTICE. Tuo tulostaa kaikki virheet paitsi huomautukset (kuten "määrittelemätön muuttuja").

linkinlisays.php:stä puuttuu formin lopetus.

Antti Laaksonen [26.06.2004 23:36:57]

#

Tuossa skriptissä ob_start() ja ob_end_flush() eivät ole tarpeellisia, koska mitään ei kirjoiteta sivulle. Lisäksi headerin yhteydessä pelkkä tiedoston nimi riittää, koko tiedoston osoitetta ei siis tarvitse kirjoittaa. Skriptin toimimattomuus johtuu varmaan tsurigan mainitsemasta väärästä funktion nimestä, sekä siitä, että tiedoston nimi on välillä "tieto.txt" ja välillä taas "tiedot.txt".

Jyri [27.06.2004 09:04:08]

#

Öhöm :) Noi virheet oli ihan mun omaa huolimattomuutta.... Mut vaikka korjasin tiedostojen nimet niin siltikkän se ei lo sitä filua. Toi mitä tsuriga sano et function nimi on väärin nii kuullostaa vähän oudolt koska jos sen nimeks laittaa chmod niin se ilmottaa ton "Ee voe avvoo!" Eikä sitte teekkään mitään muuta!

tsuriga [27.06.2004 12:26:04]

#

Pistä kirjotusmodeksi w+.

Jyri [27.06.2004 12:58:10]

#

Ei se vielkään suostu luomaan sitä tieto.txt filuu, vaikka laiton kirjotusmodeksi W+

tsuriga [27.06.2004 14:28:11]

#

Tapa se. Kokeilitko sillä omalla palvelimella, pitäs heittää varmaa jotai erroria. Jos sillä vaikka eio oikkia kuten sooda sano. Chmodaukseenkaan ei ole välttämättä oikeuksia, josta ws_ftp ei GUIssaan tykännyt ja resettasi chmodit epäonnistuneen chmodituksen jälkeen päin pringlesiä.

Jyri [27.06.2004 14:33:18]

#

Valitettavasti ei oo omaa palvelinta :( Eikä heitä siellä palvelimella jota käytän niin mitään varsinaista erriä vaan ei suostu kertakaikkiaan luomaan sitä filua. Jos ottaa ton kohdan

or die ("Ee voe avvoo!");

pois niin se vetää kyl sen skriptin läpi, mutta sitten kun se yrittää ohjata tohon tieto.txt filuun niin se ilmottaa ettei sitä löydy. Jos ton koodinpätkän antaa olla niin se ilmottaa Ee voe avvoo!

tsuriga [27.06.2004 14:44:33]

#

No niin, eli + tiedoston avausmodessa tarkoittaakin aukaisua sekä lukemiselle, että kirjoittamiselle. Tutustu Apache tai Abyss palvelimen asennusoppaisiin. Kirjottaako se sen tiedoston ilman tuota dieta? En usko, joten veikkaan että tiedoston luonnissa tapahtuu jokin virhe.

Jyri [27.06.2004 15:18:35]

#

Ej kijota ilman tota dieta. Onks mitää idiaa mite sais toimii?

edit: Nii luin yhest kirjas et touch() funktion pitäs luoda filu mut ei sekää tee sitä :(

tsuriga [27.06.2004 15:28:25]

#

touch, manuaalin mukaan, muuttaa vain muokkauspäivämäärän. Yritä nyt saada se errori esiin säätämällä oma palvelin pystyyn niin saattas olla helpompi auttaa.

EDIT: Tai kokeile laittaa skriptin alkuun error_reporting(E_ALL);

Jyri [27.06.2004 16:44:41]

#

Ei oo nyt justa aikaa alkaa säätämään omaa palventa pystyyn. Lisäsin ton error_reporting(E_ALL); sinne skriptin alkuun, mutta ei ilmottanu mitään. Eihän se välttämättä ees tee erriä! Se ei vain luo sitä filuu. Onks tiedos joku keino saada se tekee se filu niinku esim joku funktio?

tsuriga [27.06.2004 17:32:19]

#

"If the open fails, the function returns FALSE and an error of level E_WARNING is generated". Ja se funktio on fopen.

Jyri [27.06.2004 18:17:01]

#

Hä? Nyt oon taas entistäki enemmän pihalla :) Siis mitä meinaat?

pipopää [27.06.2004 19:30:47]

#

saisko tehty foorumin .html kun kolumbus.ei hykäsy .php

Blaze [27.06.2004 19:53:29]

#

pipopää kirjoitti:

saisko tehty foorumin .html kun kolumbus.ei hykäsy .php

Ei onnistu. Foorumi tarvii aina jotain palvelinpuolen systeemejä toimiakseen.

ajv [27.06.2004 20:15:36]

#

pipopää kirjoitti:

saisko tehty foorumin .html kun kolumbus.ei hykäsy .php

No jos oikein tarkkoja ollaan, niin onnistuuhan tuo laittamalla palvelimen asetuksista *.html-tiedostot menemään php-tulkin läpi. Käytännössä tuo ei onnistu, koska Kolumbuksella ei ole edes php-tukea.

tsuriga [28.06.2004 00:08:37]

#

No että kyllä se tekee sen errorin jos ei onnaa, rtfm. Tietty vika voi olla php-tulkissa, mutta epäilen.

pistemies [28.06.2004 11:31:03]

#

Jyri kirjoitti:

Ej kijota ilman tota dieta. Onks mitää idiaa mite sais toimii?

edit: Nii luin yhest kirjas et touch() funktion pitäs luoda filu mut ei sekää tee sitä :(

Minä olen käyttänyt tällaista ja hyvin on toiminut

<?php
$filename = "tieto.txt";
 if(!file_exists($filename))
 {
  touch("$filename");
  chmod("$filename",0666);
 }
?>

tsuriga [28.06.2004 11:32:46]

#

Tuossa nuo hipsut ovat turhat muuttujaa ennen, mutta jos noin toimii niin mukavaa, itsellä toimi ihan fopen($tiedosto, "w+")

pistemies [28.06.2004 12:41:02]

#

Jyri kirjoitti:

<?php
ob_start();

$filename = "tieto.txt";

chmod("tiedot.txt",0666) or die("Tiedostoa ei löydy!");

$fp = fopen($filename, "w") or die ("Ee voe avvoo!");

fwrite($fp, "Terve");

fclose($fp);

header("Location: http://kirpalo.sytes.net/~jyri/php/tieto.txt");
ob_end_flush();
?>

Siis onkos nyt jotain tuossakin vialla kun se nyt sitten lopetti toimintansa :P Voiko palvelimessa olla jotain vikaa kun sitä just uudistettiin ja muuteltiin niin virheitähän voi siitäkin vähän löytyä. Mul on just tommonen koodi netis mut ei toimi! Ite en keksi miks ei toimi... Noh oon vasta pari kk sit alottanu php:n et koittakaa kestää :)

edit: nii se ilmottaa kun koittaa mennä tohon tieto.txt filuun että 404 Not Found :)

Jos vielä palataan tuohon alkuperäiseen koodiin. Vaikka tuo chmod olisikin oikein kirjoitettu, niin eihän se voi toimia, koska yrität chmodata tiedostoa, jota ei ole olemassa ja se pistää jarrut päälle. Palvelimen pitäisi normaalisti moittia tuosta kovasti. Kannattaa käyttää tuota or die() toimintoa, niin virheet löytyy paremmin.

$filename = "tieto.txt";

$fp = fopen($filename, "w") or die ("Ee voe avvoo!");
fwrite($fp, "Terve");
fclose($fp);
//PHP luo automaattisesti tarvittavat chmod-oikeudet,
// mutta niitä voi lopuksi vielä muuttaa
chmod("$filename",0666) or die("Tiedostoa ei löydy!");
header("Location: http://kirpalo.sytes.net/~jyri/php/tieto.txt");
?>

Jyri [28.06.2004 17:01:17]

#

Pekka Mansikalle vaan että toi ilmottaa ton Ee voe avvoo! jutun...... Vaikka lisäsinkin tonne alkuun <?php :P Kyl mun mielest on mahollista et palvelimen php tulkiskin on jotain häikkää kun noist ei mikään toimi! Nii ja palvelinta uudistettiin just tai se vaihto kotii ja samal vaihtu tietty php tulkki... Nyt sit mailaan adminille j kyselen :)

ajv [28.06.2004 19:24:20]

#

Tarkistappa hakemiston chmod-arvot. Melkeinpä väittäisin että vika on siinä. 777 siihen hakemistoon, jossa yrität tiedostoa avata.

Jyri [28.06.2004 19:29:59]

#

No voi **'**u... Nyt se lähti toimimaan? Jokainen toimii! Paitsi noi omat :) Sitä paitsi en ees tehny mitää? :/ Säätäjä on aina säätäjä

pistemies [28.06.2004 21:17:52]

#

On siinä palvelimessa kuitenkin jotain häikkää. Jos yrittää suorittaa kaikkia noita, eikä hakemistojen chmod ole kunnossa, sen pitäisi tehdä pitkät rimpsut erroreita.

ajv [28.06.2004 21:48:06]

#

php.ini tiedostossa:

error_reporting  =  off

niin eipä php tulosta mitään erroreita. Tähän auttaa tuo tsurigan jo kerran mainitsema error_reporting(E_ALL); jokaisen skriptin alkuun. Tai no pidemmän päälle suosittelen kyllä
error_reporting(E_ALL ^ E_NOTICE);
jolloin nuo turhat huomautukset jää tulostumatta.


EDIT:

jyri kirjoitti:

Lisäsin ton error_reporting(E_ALL); sinne skriptin alkuun, mutta ei ilmottanu mitään.

Hieman kumma juttu, nimittäin laitoin omalla servulla php.inistä error_reporting = off ja testasin ajaa virheellistä skriptiä, jonka alussa on todellakin tuo error_reporting(E_ALL); ja kumma kyllä, mitään erroreita ei tulostu...

EDIT2: Hieman tongin asiaa ja jos nyt oikein testasin ja manuaalista lueskelin, niin "Parse error"-virheilmoituksen sattuessa ei virheilmoitusta tulosteta, vaikka skriptin alussa olisi error_reporting(E_ALL);

tsuriga [28.06.2004 23:56:35]

#

Hmm ei siis tulosta parse-erroria jos virheentulostus on määritelty skriptistä? Mistäs sieltä luit?

pistemies [29.06.2004 12:17:26]

#

Jos olen ymmärtänyt oikein noita on mahdollista säätää pelkästään .htaccess -tiedostossa toimimaan ohi palvelimen php.ini -asetusten

ajv [29.06.2004 13:35:54]

#

tsuriga kirjoitti:

Hmm ei siis tulosta parse-erroria jos virheentulostus on määritelty skriptistä? Mistäs sieltä luit?

Siis käsittääkseni näin, vain jos error_reporting = off siellä ini-tiedostossa. Korjatkoon nyt joku fiksumpi, jos olen väärässä, mutta parse error lopettaa scriptin suorittamisen, ts. se ei mene tulkista läpi, koska siellä on virhe. Tämän takia erroreiden määrittely itse scriptissä ei toimi. Testasin myös fatal erroria. Se tulostuu, koska se ei lopeta skriptin läpikäymistä.

https://www.php.net/manual/en/function.error-reporting.php:

25-Mar-2001 09:32
It seems that parse errors will be handled internally even if you've designated your own error handler; that is, your error-handling function will /not/ be called on a parse error.

tsuriga [29.06.2004 13:48:15]

#

Niin siis tuo tarkoittanee jos on asettanut oman error handlerin set_error_handler -funktiolla.

ajv kirjoitti:

se ei mene tulkista läpi

Tätä vähän mietin itsekin.

Jyri [29.06.2004 19:28:53]

#

No nyt on tehty foorumin aiheen aloitus valmiiksi, mutta miten pystyn lukemaan oikean tietokannan arvot php sivulla jonne vastaukset tulee? Kysykää jos ette oikein ymmärtäny kysymystä :>

tsuriga [29.06.2004 19:31:04]

#

Selitetty ylempänä. GET-taulukosta haet mukavan topikin id:n ja luet $id.txt:tä. Tietokanta muuten tarkoittaa sitä koko flatfile-tsydeemiä ei vain yhtä topikkia. Sulla on näitä tietokantoja 1/foorumi.

ajv [30.06.2004 08:51:12]

#

Tuossa aikaisemmin oli puhetta tuosta tekstitiedostojen suojaamisesta. Ihan hyvä keino voisi olla antaa kaikille tietokannan hekemistoille ja tiedostoille chmod 666, tai mikä siihen kirjoittamiseen nyt sitten vaaditaankin ja sitten suojata tietokanta .htaccess suojauksella, jolloin php pääsee lukemaan tietokantaa, mutta käyttäjät eivät. Ja kun virheenkäsittely on kunnossa, ei käyttäjän pitäisi edes saada selville polkua tietokantaan.

tuomas [30.06.2004 09:19:14]

#

Polun selvitys tietokantaanhan nyt on naurettavan helppoa.
Esim. tämän topikin id = 5575.
Jos laitan id:n tilalle vaikka -1 niin heti heittää erroria. /home/int2000/8694/html/keskustelu/aihe.php

Olga [30.06.2004 09:33:30]

#

tuomas kirjoitti:

Polun selvitys tietokantaanhan nyt on naurettavan helppoa.
Esim. tämän topikin id = 5575.
Jos laitan id:n tilalle vaikka -1 niin heti heittää erroria. /home/int2000/8694/html/keskustelu/aihe.php

Tuohan antaa pelkästään polun tämän keskusteluskriptin sijaintiin, ei tuosta voi päätellä missä tietokanta sijaitsee. Samoin on tekstitiedostojen kanssa, nehän voi laittaa ihan minne vain. Ja tuo mainitsemasi keino onkin hyvä esimerkki nimenomaan huonosta virheenkäsittelystä... ajv:han tuossa juuri mainitsi että kun virheenkäsittely on kunnossa, ei käyttäjän pitäisi edes saada selville polkua tietokantaan. Ja näinhän se juuri on.

Edit: aijjoo, eihän niitä alleviivaus-tageja tainnutkaan vielä olla :)

tuomas [30.06.2004 09:34:54]

#

Kyllähän se tietokantakin löytyisi kun alkaisi hakemistoja rassaamaan.

Olga [30.06.2004 09:37:31]

#

tuomas kirjoitti:

Kyllähän se tietokantakin löytyisi kun alkaisi hakemistoja rassaamaan.

Ei niihin tiedostoihin pääse käsiksi, jos hakemistot on asiallisesti .htaccess:lla suojattu. Luepas nyt vielä kerran tuo ajv:n viesti.

Jyri [30.06.2004 17:16:11]

#

tsuriga kirjoitti:

GET-taulukosta haet mukavan topikin id:n ja luet $id.txt:tä.

Noh en nyt oikein tajunnu et miten voin lukee just sitä oikeeta txt filuu? Nii ja mitä tarkotatte GET-taulukolla?

tsuriga [30.06.2004 18:44:24]

#

<?php foreach (@file($_GET['id'].".txt") as $rivi) echo nl2br($rivi); ?>

Huom! muista tarkistukset. Muuten heittää erroria, jos tiedostoa ei ole olemassa.

Lue se opas.
EDIT: typo.
EDIT~10: One-liner.

Jyri [30.06.2004 19:23:21]

#

Luin ne ohjeet uudestaan varmaan viidennen kerran! Mut en silti tajuu! (hidas kai) Iha ekaks et pitäskös mullekki tulla tohon urliin jotain tämmöstä:
https://www.ohjelmointiputka.net/keskustelu/5575-foorumi-jälleen

vai pitääks mulla tulla tonne ihan loppuun vielä .txt

kun mä tein ton id jutun niin et se lisääntyy aina yhellä kun uus aihe alotetaan (vähän niinku kävijälaskuri) niin pitäskös ton tsurigan skriptin lukee se id kun painaa linkkiä siihen aiheeseen? Jos pitää nii ei mulla ainakaa... ((Oon kai TOSI hidas))

ajv [30.06.2004 20:04:11]

#

Jyri kirjoitti:

pitäskös mullekki tulla tohon urliin jotain tämmöstä:
https://www.ohjelmointiputka.net/keskustelu/5575-foorumi-jälleen

Kysyy kaveri, joka koodaa foorumia. Tsemppiä! Siis ihan ystävän neuvona sanoisin, et aloita vaikka vieraskirjasta tai jostain muusta helpommasta. Jos tuo foorumin tekeminen tätä rataa jatkuu, voit laittaa kaiken kunnian valmiista foorumista osoittamaan tähän threadiin, koska ainakin tähän asti jokainen yksinkertaisinkin perusseikka on tuottanut suht. paljon vaikeuksia. Odottelen innolla kun siirryt viestien muokkaamiseen, poistamiseen,sisäänkirjautumisiin ja sessioihin yms. jotka ilmeisesti ovat vielä edessäpäin.

Onnea yritykselle!

Jyri [30.06.2004 20:08:21]

#

ajv kirjoitti:

viestien muokkaamiseen, poistamiseen,sisäänkirjautumisiin ja sessioihin yms. jotka ilmeisesti ovat vielä edessäpäin.

Oon tehny noi jo.... Mut en saa sitä viestii luettuu!

ajv [30.06.2004 20:09:40]

#

No jos oot tehny viestin muokkauksen, niin miten voi olla mahdollista, ettet osaa lukea sitä viestiä???

Jyri [30.06.2004 20:36:40]

#

Noh ku en tehny sitä muokkausta siihen foorumiin, vaan yksinkertaiseen vieraskirjaan. Viekussahan on yleensä vaan 1 tiedosto johon viestit tallennetaan, joten on vähän helpompaa!

edit: Siihen viekkuun lisäsin rekisteröitymisen ja sisäänkirjautumisen.

tsuriga [30.06.2004 21:09:33]

#

ajv kyllä puhui foorumin toiminnoista.

EDIT: Ei sit mitää harjotustehtäviä.
1. Hae arvo URLista (löytyy oppaasta)
2. Avaa tiedosto $arvo.".txt" (löytyy oppaasta)
3. Lue sitä. (löytyy oppaasta)

pistemies [01.07.2004 11:05:35]

#

Pikku vinkki. For silmukalla luettaessahan PHP automaattisesti tekee kullekkin aiheet.txt riville oman numeron.

Aihetta luodessa voit luoda myös viestitiedoston nimen ja tallentaa senkin aiheet.txt tiedostoon. Suosittelen, että foorumissa tallennat kaikki aiheen viestit samaan viestitiedostoon (vaikkakin viestin muokkaamisesta tulee vähän haastavampi)

<?php

 $aihe=$_GET['palsta']."/aiheet.txt";
 for($i=0;$i<count($aihe);$i++)
{
  $solu=explode("|",$aihe[$i]);
  // Tässä esimerkissä:
  // $solu[0]= foorumipalstan hakemistonimi
  // $solu[1]= aiheen otsikko
  // $solu[2] = aiheen aloittaja
  // $solu[3] = päivämäärä
  // $solu[4] = viestitiedoston nimi
  echo "<tr><td><a href=\"omafoorumi.php?palsta=$solu[0]&aihe=$i\">
  $solu[1]</a></td><td>$solu[2]</td><td>$solu[3]</td></tr>";
 }
// Tulostetaan aiheen viestit
if($_GET['aihe'])
{
  $r=$aihe-1; // aiheen rivi

   $aiheet_txt=file($_GET['palsta']."/aiheet.txt");
   $fp=$aiheet_txt[$r];
   $yv=explode("|",$fp);
   // tämän jälkeen etsitään $yv[0] aiheen otsikko ja lopuksi lokerosta $yv[4] poimitaan  viestitiedoston sisältö ja käsitellään se samoin for ja exploden avulla
}
?>

Tämä oli melko pikaisesti tähän rustattu, mutta ehkä tästä saa vähän selvää.

tsuriga [01.07.2004 12:51:57]

#

Hmm minusta jokaiselle aiheryhmälle voisi tehdä kansion, jossa olisi kaikille aiheille oma tiedosto. Näin ainakin nopeasti ajatellen olisi helpompaa, mutta tiedostoja tulisi toki enemmän.

ajv [01.07.2004 13:03:51]

#

Täällä käsiteltiin foorumin flatfile-tietokantaa.

T.M. kirjoitti:

Jos haluaa päästä helpolla, niin käytä näitä:
https://www.php.net/manual/en/function.serialize.php
https://www.php.net/manual/en/function.unserialize.php

Sen verran kokemusta on että voin sanoa, että laita jokainen viesti omaan tiedostoonsa.
Täten viestejä ei voi tuhota millään tavalla.

lainaus:

...noi tiedostot joutuu aika kovaan käyttöön ja jos ei lukitukset ja muut ole kunnossa, voi ilmetä näitä tyypillisiä tekstitiedosto-ongelmia. Mut näinhän se on, oli tyyli sitten mikä tahansa :)

Kyllä sen saa hajoamattomaksikin, esimerkiksi tällä tyylillä:
- Eri alueille omat kansionsa
- Jokaiselle aiheelle oma kansionsa
- Jokainen viesti(ja kaikki muut tiedot..) omaan tiedostoonsa

Tosin tota en pysty tehdä mbnetissä... joten tyydyn nykyisellään käyttämään korkeinaan jokaiselle foorumille tehtyä kansiota :P

Sitten vielä:
- Jokaiseen viestiin tallennetaan käyttäjän ID-numero
- Jokaisesta viestistä haetaan ID-numeron perusteella käyttäjän nimi

Ainiin. Ne viestit saa hakemistosta kätevällä glob() funktiolla:
https://www.php.net/manual/en/function.glob.php

En muista kuinka monen kymmenen tuhannen tiedoston tietokanta T.M.:llä olikaan, mutta kokemusta häneltä ainakin löytyy.

Ja eipä tuosta suuresta tiedostojen määrästä tietääkseni mitään haittaa ole, päinvastoin. Sen sijaan suurista tiedostoista on haittaa.

Jyri [05.07.2004 19:32:29]

#

Ryökäle... Tarviin nyt kyl ihan suoran pienen koodin pätkän :> Eli url on

http://kirpalo.sytes.net/~ilari/foorumi/lue_aiheet.php?id=1.txt

tommone ja nyt pitäs saada toi id sinne tiedostoon missä luetaan se viesti. Eli pitäskö toimii jos nyt siellä 'lue' tiedostossa on tämmöne:

$id = $_GET['id'];
$viestit=file("{$id}.txt");

siis nyt tossa viestit muuttjassa on urlin mukana tullu id vai?

ajv [05.07.2004 20:30:32]

#

<?php
//tällä osoitteella tullaan sivulle - OK
http://kirpalo.sytes.net/~ilari/foorumi/lue_aiheet.php?id=1.txt

//otetaan aiheen id talteen $id-muuttujaan - OK
$id = $_GET['id'];

//$id-muuttujassa on nyt arvo "1.txt"
//seuraavalla rivillä luet tiedostosta 1.txt.txt
$viestit=file("{$id}.txt");
/*
Toimintaan tuo ei vaikuta vaikka tekstitiedostosi olisi
1.txt.php.jpg.txt, mutta ihan yleinen käytäntö on käyttää {$id}.txt
id tarkoittaa yleensä numeroa, eli lähtisin muuttamaan tuota linkkiä muotoon
http://kirpalo.sytes.net/~ilari/foorumi/lue_aiheet.php?id=1
Sen jälkeen loppuosankin koodista pitäisi toimia.
*/
?>

Jyri [05.07.2004 20:57:39]

#

Kiitti.. Nyt toimii :D
-Thanks-


Sivun alkuun

Vastaus

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

Tietoa sivustosta