Jos joku osaisi neuvoa...
Eli sivullani on kuva ja tekstiboksi johon voi kommentoida kuvaa ja haluan että tekstiboksiin kirjoitetut kommentit jäävät sivulle kaikkien näkyviin. nyt minun pitäisi tallentaa kommentit palvelimella olevaan tiedostoon. Eli onnituuko tämä sillä esim. että olen tehnyt tiedoston kommentit.txt ja antanut sille kaikki oikeudet
chmod a+rwx kommentit.txt
pitäisikö minun nyt käyttää tiedostoon kirjoittamista?
ja jos pitää niin mihin kohtaan koodia se pitäisi laittaa
että kommentit tallentuisivat kommentit.txt tiedostoon?
ja täytyykö minun käyttää a (append)käskyä että uudet kommentit tallentuisivat aina tiedoton loppuun eli
onnistuuko kommenttien kirjoittaminen tällä koodilla
Ja jos onnistuu niin mihin kohtaan ylläoleva koodi pitäisi sijoittaa allaolevaan koodiini
<html> <P> <IMG SRC="kuva.jpg" WIDTH="800" HEIGHT="400" </P> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST"> <TEXTAREA NAME="loota" ROWS="8" COLS="50">anna palautetta kuvista...</TEXTAREA>\ <INPUT TYPE="submit" value="Laheta lomake"> </form> <?php echo nl2br(htmlentities($_POST["loota"])); ?>
Tuo tallennustapa on juuri sopiva ja append on hyvä. Itse sioittaisin tallennuskoodin tuon tiedoston alkuun.
Jotta et rasittaisi itseäsi liikaa, luulen että se käy näin:
<?php // Tarkistetaan, onko teksti lähetetty if (isset($_POST['loota']) { // Jos on, tallennetaan ne tiedostoon $tt = fopen("kommentit.txt", "a"); fwrite($tt, nl2br(htmlentities($_POST["loota"])) . "\n"); fclose($tt); } ?> <html> <P> <IMG SRC="kuva.jpg" WIDTH="800" HEIGHT="400" </P> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST"> <TEXTAREA NAME="loota" ROWS="8" COLS="50">anna palautetta kuvista...</TEXTAREA>\ <INPUT TYPE="submit" value="Laheta lomake"> </form> <?php // tulostetaan vielä kommentit // tämä siis lataa tiedoston taulukkoon $f = file("kommentit.txt"); // sitten yhdistettään taulukko merkkijonoksi erotettuna // tekstillä "<BR><BR>" $kommentit = implode("<BR><BR>", $f); echo $kommentit ?>
Noista oikeuksista en osaa paljoa sanoa, mutta luulen, että kaikki eivät tarvitse kaikkia oikeuksia. PHP tunnutaan ajettavan monesti ryhmän oikeuksilla, joten ryhmän oikeuksiksi pitäisi kommentit.txt :lle asettaa myös kirjoitus. Joku näitä asioita osaavampi kertokoot (ja korjatkoon mahdolliset virheeni)
Ok. tuo selvitti jo paljon, Kiitos.
Nyt laitoin ylläolevan koodin sivulle , sivu ei auennut ja tuli virheilmoitus parse error rivillä 6 ja lisäsin riville
vielä yhden ) merkin.
eli nyt on
ja virhe lähti pois ja sivun kuva tuli näkyviin, mutta nyt
ylhäällä on kolme virheilmoitusta
Warning: fopen("kommentit.txt", "a") - Permission denied in /home/0105201/public_html/sivusto/sivu.php on line 8 Warning: Supplied argument is not a valid File-Handle resource in /home/0105201/public_html/sivusto/sivu.php on line 9 Warning: Supplied argument is not a valid File-Handle resource in /home/0105201/public_html/sivusto/sivu.php on line 10
Sen ymmärrän ainakin että herjaa ettei olisi oikeuksia kommentit.txt:ssä mutta kyllä pitäisi olla kaikki oikeudet??
kahdesta muusta virheilmoituksesta en ymmärrä?
nyt koodinin on:
<?php // Tarkistetaan, onko teksti ldhetetty if (isset($_POST['loota'])) { // Jos on, tallennetaan ne tiedostoon $tt = fopen("teksti.txt", "a"); fwrite($tt, nl2br(htmlentities($_POST["loota"])) . "\n"); fclose($tt); } ?> <html> <P> <IMG SRC="kuva.jpg" WIDTH="800" HEIGHT="400" </P> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST"> <TEXTAREA NAME="loota" ROWS="8" COLS="50">anna palautetta kuvista...</TEXTAREA>\ <INPUT TYPE="submit" value="Laheta lomake"> </form> <?php // tulostetaan vield kommentit // tdmd siis lataa tiedoston taulukkoon $f = file("teksti.txt"); // sitten yhdistettddn taulukko merkkijonoksi erotettuna // tekstilld "<BR><BR>" $kommentit = implode("<BR><BR>", $f); echo $kommentit ?>
Tosiaan, tuo yksi sulku unohtui. Oikeuksista se herjaa. Luuleen, että olet asettanut tiedoston oikeudet jotenkin oudosti. Minä en noista kirjaimista juuri ymmärrä, mutta kokeile numeroina oikeuksia 777 kommentit.txt :lle, niin pitäisi toimia. Sitten kannattaa yrittää löytää pienin luku, jolla tuo toimii. Uudelleen, joku osaava voisi neuvoa noiden oikeuksien kanssa.
Ei se vieläkään toimi vieläkään. kokeilin
chmod 777 kommentit.txt
mutta samat virheet lukee vieläkin.
kele!
Hmm.. en nytten pysty tässä sekatilassa keskittymään(Hirvi meidän pihalla..);D .. mutta en tiedä onko tästä mitään apua.. a = Tiedosto avataan kirjoittamista varten.. ja a+ = Tiedosto avataan kirjoittamista ja lukemista varten..? toivottavasti joku oppi jotain..
Testasin tuota scriptiä.. Herjaa teksti.txt tiedostosta, koska sitä ei vielä ole. Mutta kun kommentoit niin se luodaan, sen jälkeen ei tullut ainakaan mulle mitään virheilmoituksia. Siis kun testasin kommentoida. Joten tuo äskeinen minulta oli aika turha. :/
hmm... en nyt kyllä ymmärtäny. puhutko nyt oikeuksista vai
append käskystä?
Siis, tee vaikka tyhjä teksti.txt tiedosto..ja laitat sen samaan paikkaan missä on tuo scripti. Eli se herjaa ainakin minulla sen takia, koska sitä tiedostoa ei ole. Ja sitten kun ensimmäinen kommentoi sitä niin sitten se luodaan vasta, ellet itse luo sitä. Tajusitkohan?
Sori ei oikein sytytä.
Eli siis teen vaikka notepadillä teksti.txt tiedoston (joka on ihan tyhjä) ja laitan sen samaan paikkaan missä on tuo sivu.php tiedosto? Tällä hetkellä ne on samassa kansiossa.
Juu. No nyt ku päivität sitä sivua niin tuleeko joku virhe näkyviin.. siis tietenki sen tyhjän tiedoston pitää olla saman niminen kun sen mikä avataan kirjoittamista varten..eli tässä se teksti.txt ..
// Jos on, tallennetaan ne tiedostoon
$tt = fopen("teksti.txt", "a");
no mutta sano tuleeko virheitä..?
Tulee 3 virhettä:
Warning: fopen("teksti.txt", "a") - Permission denied in /home/0105201/public_html/sivusto/sivu.php on line 8
Warning: Supplied argument is not a valid File-Handle resource in /home/0105201/public_html/sivusto/sivu.php on line 9
Warning: Supplied argument is not a valid File-Handle resource in /home/0105201/public_html/sivusto/sivu.php on line 10
No noi 2 Warningia lähtee pois kun saat ensimmäisen pois.. Säädä tiedostolle oikeudet kuntoon
olen mielestäni jo laittanut oikeudet kuntoon
chmod g+rwx teksti.txt
vai?
No siis jos oikeudet on kunnossa niin on kyllä outoa? Eikai palvelimellasi ole estetty noiden funktioiden käyttöä? :D
EN tajua noista oikein mitään.. mutta itselläni tuli vain nämä 2 virhettä kun testasin ilman teksti.txt tiedostoa:
Warning: file("teksti.txt") - No such file or directory
in testi.php on line 28
Warning: Bad arguments to implode()
in testi.php on line 31
mutta sitten kun loin teksti.txt niin ei tullut enään mitään.
En kyllä tajua...
en tiedä yhtään onko estetty nuiden funktioiden käyttö...
Anteeksi kauheasti. Oikeudet ei ollutkaan kunnossa, nyt ei enää ole mitään virheilmoituksia, mutta nyt kun kirjoitan tekstiboksiin ja painan lähetä nappia niin teksti ei näy missään?
Ajattelin itekki koittaa tehä jonkun tommosen.. ja jotain purkka viritelmää tuli.. eli voi olla aika huono laatusta, koska tein nopeesti ja ennen pahemmin tehnyt näitä.:P
<?php touch("kommentit.txt"); ?> <?php if(isset($_POST[kommentti])) { $avaa = fopen("kommentit.txt", "a"); fwrite($avaa,"".date("d.m.Y:")." $_POST[kommentti]"."<br>\n"); fclose($avaa); } ?> <html> <head> <title> Purkkaa </title> </head> <body> <img src="sami.jpg" alt=""> <br> <?php include("kommentit.txt"); ?> <br> <form method="POST" action="<?php $SERVER[PHP_SELF]; ?>"> <INPUT TYPE="text" NAME="kommentti" MAXLENGTH="300" SIZE="40"> <INPUT TYPE="submit" NAME="kommentoi" VALUE="Kommentoi"> </form> </body> </html>
lainaus:
Ajattelin itekki koittaa tehä jonkun tommosen.. ja jotain purkka viritelmää tuli.. eli voi olla aika huono laatusta, koska tein nopeesti ja ennen pahemmin tehnyt näitä.:P
vai purkkaviritelmän? mie olen vääntäny omaa n.8h ja vieläkin on virheitä. Muuten mulla toimii !
(ja sulla on vielä date.)
tiedätkö mitä virheet tarkoittavat:
Warning: Supplied argument is not a valid File-Handle resource in /home/0101201/public_html/sivusto/ahh3.php on line 11
Warning: Supplied argument is not a valid File-Handle resource in /home/0101201/public_html/sivusto/ahh3.php on line 12
Onko sulla taas ne oikeudet kunnossa..?
Nyt saunaan.. :P
lainaus:
ja täytyykö minun käyttää a (append)käskyä että uudet kommentit tallentuisivat aina tiedoton loppuun
"a" ei ole käsky, eikä myöskään "append" ole käsky.
"a" on fopen()-funktion tiedostonavausmoodi.
ok. kiitos.
Aihe on jo aika vanha, joten et voi enää vastata siihen.