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?
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.
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 ;)
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:
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.
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)
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.
No nyt alko vähä selkeemään :) kiitti vaa! Kyselen sitte taas kun tulee ongelmii :>
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!
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.
NO NIIN! Just ku oisin päässy testaamaan tota mun foorumia ja aloin lähettää tiedostoja nettiin, niin servu kaatu!
:D
Kantsis olla serveri linuxilla ;)
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.
<?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"?
<?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.
Hmmm. toi ei toiminu, ainakaa mulla. Ilmotti ton "Ee voe avvoo!".
No sitten ei varmaan ole oikeuksia siihen filuun?
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!
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/
<?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 :)
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.
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".
Ö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!
Pistä kirjotusmodeksi w+.
Ei se vielkään suostu luomaan sitä tieto.txt filuu, vaikka laiton kirjotusmodeksi W+
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ä.
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!
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.
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ä :(
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);
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?
"If the open fails, the function returns FALSE and an error of level E_WARNING is generated". Ja se funktio on fopen.
Hä? Nyt oon taas entistäki enemmän pihalla :) Siis mitä meinaat?
saisko tehty foorumin .html kun kolumbus.ei hykäsy .php
pipopää kirjoitti:
saisko tehty foorumin .html kun kolumbus.ei hykäsy .php
Ei onnistu. Foorumi tarvii aina jotain palvelinpuolen systeemejä toimiakseen.
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.
No että kyllä se tekee sen errorin jos ei onnaa, rtfm. Tietty vika voi olla php-tulkissa, mutta epäilen.
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); } ?>
Tuossa nuo hipsut ovat turhat muuttujaa ennen, mutta jos noin toimii niin mukavaa, itsellä toimi ihan fopen($tiedosto, "w+")
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"); ?>
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 :)
Tarkistappa hakemiston chmod-arvot. Melkeinpä väittäisin että vika on siinä. 777 siihen hakemistoon, jossa yrität tiedostoa avata.
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ä
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.
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);
Hmm ei siis tulosta parse-erroria jos virheentulostus on määritelty skriptistä? Mistäs sieltä luit?
Jos olen ymmärtänyt oikein noita on mahdollista säätää pelkästään .htaccess -tiedostossa toimimaan ohi palvelimen php.ini -asetusten
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.
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.
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ä :>
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.
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.
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
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 :)
Kyllähän se tietokantakin löytyisi kun alkaisi hakemistoja rassaamaan.
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.
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?
Huom! muista tarkistukset. Muuten heittää erroria, jos tiedostoa ei ole olemassa.
Lue se opas.
EDIT: typo.
EDIT~10: One-liner.
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))
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!
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!
No jos oot tehny viestin muokkauksen, niin miten voi olla mahdollista, ettet osaa lukea sitä viestiä???
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.
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)
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ää.
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.
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 tiedostoonsaTosin 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 nimiAiniin. 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.
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?
<?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. */ ?>
Kiitti.. Nyt toimii :D
-Thanks-
Aihe on jo aika vanha, joten et voi enää vastata siihen.