Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Käyttäjäkohtainen tekstilaatikko

Sivun loppuun

Rocceri [17.02.2009 15:54:22]

#

En tiedä millä nimellä hakisin tätä ongelmaani, mutta kysympäs vaikka evästeet nimellä. (Ehkä liittyy asiaan )

Minun tarvitsisi tehdä sellainen ns. muistio, joka tallentaa kaiken kirjoittaman.
Eli olisi joku textarella tehty laatikko. Alapuolella painike "Tallenna" ja tämä muistaa kirjoituksen tässä koneessa/ip'ssä. Kun ensi kerran menet sivulle missä tämä "muistio" on, näet kirjoituksesi ja pystyt muokkaamaan sitä.

Nämä tiedot saisivat pysyä sitten tallessa ainakin 100 vuoden ajan

Tämä ei paljoa kuormita serveriäni, uskoakseni, ja koska käyttäjiä tähän toimintoo tulisi 4 kappaletta, tämän pitäisi varmaan jaksaa toimia.

Perjaatteessa kuten tälläinen foorumi.
Kirjoitat viestin, se tallentuu ja pystyt muokkaamaan sitä. Mielelläni ottaisin sen ilman näitä "Viimeksi päivitetty:" juttuja

Tajusittekos?

Jos tämä on mahdollista, uskoakseni on, niin joku voisi postata minulle tälläistä tänne aiheeseen.

-Rock


PS. Tossa kun puhuin tallentamisesta, eikös ne tallennu käyttäjän koneelle?

Grez [17.02.2009 16:01:42]

#

Miksi et vaan käytä notepadia?

Siis kun kuitenkin haluat tallettaa ne tiedot paikalliselle koneelle, niin eikö tuollaisen nettisivun lataus siinä välissä ole 100% turhaa. Lisäksi notepadia voi käyttää vaikka netti olisi alhaalla.

Rocceri [17.02.2009 16:04:23]

#

Tarkoituksena olisi, että palvelimella olisi tiedosto mihin tietyt käyttäjät voisivat kirjoittaa muisiinpanojansa.

Jokainen käyttäjä tietenkin näkisi vain oman kirjoituksensa.

Lebe80 [17.02.2009 16:10:41]

#

Tallenna tietodosto palvelimelle vaikka käyttäjän id:n perusteelle (tiedostoon tai tietokantaan).

Sivun latauksen yhteydessä lataat textareaan tiedoston sisällön, mikäli käyttäjä on kirjautuneena sisälle ja hänelle on luotu ko. tekstitiedosto muistiota varten.

Rocceri [17.02.2009 16:16:45]

#

Ei ole vielä mitään tälläisiä :s

Kysyin neuvoa, koska en itse osaa tehdä. Siispä, jotain valmista jos joku vois postata. ;)

tsuriga [17.02.2009 16:20:09]

#

http://opensourcecms.com

Grez [17.02.2009 16:23:44]

#

Rocceri kirjoitti:

Tarkoituksena olisi, että palvelimella olisi tiedosto mihin tietyt käyttäjät voisivat kirjoittaa muisiinpanojansa.

Jokainen käyttäjä tietenkin näkisi vain oman kirjoituksensa.

No edelleen, mitä hyötyä siitä palvelimesta olisi, jos ne kirjoitukset kerran tallennettaisiin käyttäjien koneille? Ja voihan siellä koneellakin jokaisella käyttäjällä olla omat tiedostot, joita muut käyttäjät ei näe.

Rocceri [17.02.2009 16:27:49]

#

Grez kirjoitti:

Rocceri kirjoitti:

Tarkoituksena olisi, että palvelimella olisi tiedosto mihin tietyt käyttäjät voisivat kirjoittaa muisiinpanojansa.

Jokainen käyttäjä tietenkin näkisi vain oman kirjoituksensa.

No edelleen, mitä hyötyä siitä palvelimesta olisi, jos ne kirjoitukset kerran tallennettaisiin käyttäjien koneille? Ja voihan siellä koneellakin jokaisella käyttäjällä olla omat tiedostot, joita muut käyttäjät ei näe.

Tämä liittyy sellaiseen asiaan, joka ei toimi käyttäjän koneella tällä tavalla.
Mutta, jos aiheessa pysytään, onko tämä mahdollista?

Grez [17.02.2009 16:30:02]

#

No tottakai sellaisen pystyy tekemään.

Voit kokeilla: http://grez.info/putka/rocceri/

Tuolla sivulla se laittaa vain evästeen vain 10 vuotta eteenpäin kun siellä on buginen kakkaphp joka ei kykene hallitsemaan yli vuotta 2038. Täytyykin muistaa narista hostille että päivittää. Alla olevassa pitäisi toimi 100 vuotta eteenpäin, mutta en ole kokeillut.

<?
        $teksti='';
        if (isset($_COOKIE['Muistio'])) $teksti=$_COOKIE['Muistio'];
        if (isset($_POST['Muistio'])) {
                $teksti=$_POST['Muistio'];
                setcookie('Muistio',$teksti,time()+36524*86400);
        }
?><html><head><title>Muistio</title></head>
<body><form method="post" action=""><textarea name="Muistio"><?
        echo htmlentities($teksti);
?></textarea>
<input type="submit" value="Tallenna">
</form></body></html>

Metabolix [17.02.2009 16:30:15]

#

index.php:

<h2>Avaa muistio</h2>
<form action="muistio.php" method="get">
<p>
  <input type="text" name="nimi" value="nimi" />
  <input type="submit" value="avaa" />
</p>
</form>

muistio.php:

<?php
$muistio = &$_GET["nimi"];
if (empty($muistio) || preg_match('/[^-._0-9a-zA-Z]/', $muistio)) {
  die("Virheellinen nimi!");
}
$tiedosto = "muistiot/$muistio";
$data = &$_POST["data"];
if (isset($data)) {
  file_put_contents($tiedosto, $data);
}
$data = @file_get_contents($tiedosto);
if ($data === false) {
  $data = "";
}
?>
<h2>Muokkaa muistiota &quot;<?php echo $muistio; ?>&quot;</h2>
<form action="muistio.php?nimi=<?php echo $muistio; ?>" method="post">
<textarea id="muistio" name="data" rows="25" cols="80"><?php
  echo htmlspecialchars($data);
?></textarea>
<p>
  <input type="submit" value="tallenna" />
  <input type="reset" value="peru" />
</p>
</form>

Saat itse täyttää puuttuvat osat sivuista, tuossa on jo täysin toimiva systeemi, kunhan käyttäjä muistaa oman tunnuksensa. Koodi vaatii muistiot-nimisen hakemiston, johon skriptillä pitää tietenkin olla kirjoitusoikeus.

Viestistäsi ei käy kovin selkeästi ilmi, millä perusteella käyttäjät pitäisi tunnistaa ja pitääkö tekstin olla vain käyttäjän itsensä käsiteltävissä. Tietyn koneen tunnistaminen ei ole oikein mahdollista, ja tässä ei olisikaan mitään järkeä, koska tiedostot voisi tällöin tallentaa käyttäjälle itselleen. Myöskään IP-osoitetta ei ole järkeä tallentaa, koska useimmilla peruskäyttäjillä se vaihtuu ajoittain, joillain useammin kuin toisilla. Ainoa järkevä vaihtoehto on siis jokin käyttäjäkohtainen tunnus, jolla sivustolle "kirjaudutaan". Antamassani koodissa käyttäjä voi antaa mielivaltaisen nimen kirjoitukselleen, ja tällä nimellä sitä pääsee kuka tahansa muokkaamaan. Evästekään ei ole kovin järkevä vaihtoehto, koska ne katoavat selaimesta yhdellä napinpainalluksella.

Jos oikeasti haluat käyttää evästeitä, voit korvata tiedostonkäsittelyfunktiot setcookie-funktiolla ja vastaavasti keksin haulla _COOKIES-taulukosta.

Rocceri [20.02.2009 11:06:09]

#

Grez kirjoitti:

No tottakai sellaisen pystyy tekemään.

Voit kokeilla: http://grez.info/putka/rocceri/

Tuolla sivulla se laittaa vain evästeen vain 10 vuotta eteenpäin kun siellä on buginen kakkaphp joka ei kykene hallitsemaan yli vuotta 2038. Täytyykin muistaa narista hostille että päivittää. Alla olevassa pitäisi toimi 100 vuotta eteenpäin, mutta en ole kokeillut.

<?
        $teksti='';
        if (isset($_COOKIE['Muistio'])) $teksti=$_COOKIE['Muistio'];
        if (isset($_POST['Muistio'])) {
                $teksti=$_POST['Muistio'];
                setcookie('Muistio',$teksti,time()+36524*86400);
        }
?><html><head><title>Muistio</title></head>
<body><form method="post" action=""><textarea name="Muistio"><?
        echo htmlentities($teksti);
?></textarea>
<input type="submit" value="Tallenna">
</form></body></html>

Tämä tulostaa tuon php osuuden tuossa textareassa esille. Onkohan se nyt tarkoitus olla siinä? :O

Edit: <?php eikä <?

Hihi, huomasin itekkin :D


EDIT:

Nämä kummatkaan ei näytä toimivan minulla.

Kun painaa "Tallenna" se tyhjentää lomakkeen, eikä näitä tietoja enää näy.

Teuro [20.02.2009 11:40:03]

#

Rocceri kirjoitti:

Nämä kummatkaan ei näytä toimivan minulla.

Kun painaa "Tallenna" se tyhjentää lomakkeen, eikä näitä tietoja enää näy.

Tuohan tallentaa sen keksiin, joten kaiva sieltä se esille, aina kun haluat käyttää kyseistä tietoa. Sivuhuomautuksena voisi mainita, että käyttäjä saataa joskus tyhjentää keksi koneelta, jolloin teksti taitaapi hävitä.

Rocceri [20.02.2009 14:45:47]

#

Teuro kirjoitti:

Rocceri kirjoitti:

Nämä kummatkaan ei näytä toimivan minulla.

Kun painaa "Tallenna" se tyhjentää lomakkeen, eikä näitä tietoja enää näy.

Tuohan tallentaa sen keksiin, joten kaiva sieltä se esille, aina kun haluat käyttää kyseistä tietoa. Sivuhuomautuksena voisi mainita, että käyttäjä saataa joskus tyhjentää keksi koneelta, jolloin teksti taitaapi hävitä.

Ohoh, niinhän siinä onkin.
Mutta, onko tätä samaa mahdollista saada sillä tavalla, että tallentaa palvelimelle? :)
Toikin on ihan hyvä, mutta silti.

Ei oo PHP mun alaa

Grez [20.02.2009 14:52:11]

#

Eikös toi metabolixin systeemi ole juuri se palvelimelle tallentava, käytä sitä.

Ja... Argh, miksi pyydät aloitusviestissä sellaista, joka tallentaa käyttäjän koneelle, ja sitten haluat että ne tallentuukin palvelimelle. Kaikki kommenttini tähänkin threadiin oli näköjään ihan turhia kun halusit eri asiaa kuin mitä kirjoitit.

lainaus:

Minun tarvitsisi tehdä sellainen ns. muistio, joka tallentaa kaiken kirjoittaman.
...
PS. Tossa kun puhuin tallentamisesta, eikös ne tallennu käyttäjän koneelle?

Rocceri [20.02.2009 14:57:40]

#

Grez kirjoitti:

Eikös toi metabolixin systeemi ole juuri se palvelimelle tallentava, käytä sitä.

Ja... Argh, miksi pyydät aloitusviestissä sellaista, joka tallentaa käyttäjän koneelle, ja sitten haluat että ne tallentuukin palvelimelle. Kaikki kommenttini tähänkin threadiin oli näköjään ihan turhia kun halusit eri asiaa kuin mitä kirjoitit.

lainaus:

Minun tarvitsisi tehdä sellainen ns. muistio, joka tallentaa kaiken kirjoittaman.
...
PS. Tossa kun puhuin tallentamisesta, eikös ne tallennu käyttäjän koneelle?

Sori..

Menee vähän senat sakasin välillä.. :/ Toi sun juttus on hyvä kanssa.

Rocceri [20.02.2009 18:27:29]

#

Grez.. Totanoiniin

Sain korjattua ton sun juttus mulle toimivaks, mutta sitä ei pysty muokkaamaan tallentamisen jälkeen.

Pitääkö ton tekemät keksit tuhota että voi muokata, vai tietkö jonkun kikan siihen? :)

Grez [20.02.2009 20:00:38]

#

No mulla toi mun skripti toimii ihan täysin ilman muutoksia. Vähän paha sanoa mitä siinä on vikana kun ei tiedä mitä muutit. Ehkä jos noiden keksien voimassaolon suhten on ongelmaa, niin voit kokeilla laittaa voimassaoloajaksi esim. sen 10 vuotta.


Sivun alkuun

Vastaus

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

Tietoa sivustosta