Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: palvelimelle tallentaminen

Sivun loppuun

mrkebab [29.06.2003 13:43:13]

#

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

<?php
$tt = fopen("kommentit.txt", "a");
fwrite($tt, "Rivi 1\n");
fclose($tt);
?>

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"]));
?>

arcatan [29.06.2003 15:29:11]

#

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)

mrkebab [29.06.2003 17:40:06]

#

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

if (isset($_POST['loota'])

vielä yhden ) merkin.

eli nyt on

if (isset($_POST['loota']))

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
?>

arcatan [29.06.2003 17:58:43]

#

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.

mrkebab [29.06.2003 18:22:42]

#

Ei se vieläkään toimi vieläkään. kokeilin

chmod 777 kommentit.txt

mutta samat virheet lukee vieläkin.

kele!

samii [29.06.2003 18:48:21]

#

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..

samii [29.06.2003 19:05:40]

#

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. :/

mrkebab [29.06.2003 19:08:16]

#

hmm... en nyt kyllä ymmärtäny. puhutko nyt oikeuksista vai
append käskystä?

samii [29.06.2003 19:10:00]

#

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?

mrkebab [29.06.2003 19:16:53]

#

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.

samii [29.06.2003 19:19:09]

#

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ä..?

mrkebab [29.06.2003 19:22:32]

#

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

odys [29.06.2003 19:23:54]

#

No noi 2 Warningia lähtee pois kun saat ensimmäisen pois.. Säädä tiedostolle oikeudet kuntoon

mrkebab [29.06.2003 19:25:04]

#

olen mielestäni jo laittanut oikeudet kuntoon

chmod g+rwx teksti.txt

vai?

odys [29.06.2003 19:25:56]

#

No siis jos oikeudet on kunnossa niin on kyllä outoa? Eikai palvelimellasi ole estetty noiden funktioiden käyttöä? :D

samii [29.06.2003 19:26:41]

#

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.

mrkebab [29.06.2003 19:31:23]

#

En kyllä tajua...

en tiedä yhtään onko estetty nuiden funktioiden käyttö...

mrkebab [29.06.2003 19:39:49]

#

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?

samii [29.06.2003 20:59:47]

#

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>

mrkebab [29.06.2003 21:14:30]

#

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

samii [29.06.2003 21:15:37]

#

Onko sulla taas ne oikeudet kunnossa..?
Nyt saunaan.. :P

mikaelh [29.06.2003 22:06:21]

#

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.

mrkebab [29.06.2003 22:34:22]

#

ok. kiitos.


Sivun alkuun

Vastaus

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

Tietoa sivustosta