PHP ja lomake

Sanokaapa viisaammat, onko seuraavassa koodissa jokin vika?
Tarkoitus olisi tehdä vieraskirjan tyyppinen kommentinjättämislomake.
Käsittääkseni tuossa kirjoituslomakkeessa on joku vika. Tai sitten en ole osannut säätää serveriäni oikein PHP:n suhteen.. :o (Käytän Xitamia) Nimittäin nyt kun lomakkeeseen jotakin kirjoittaa, sivu vain päivittyy uudestaan eikä viestit.txt:hen ole ilmestynyt yhtään mitään. Tässä on siis vain osa koodista (tiedostoonkirjoitusosa), lukemisosa puuttuu.

echo "

Kirjoita



Nimi:


Teksti:



";

if (isset($nimi))
{

if (is_writeable("viestit.txt"))
{

$tiedosto = fopen("viestit.txt", "a ");
$data = "$nimi|$teksti
";
$data = ereg_replace("|", "I", $data);
fwrite($tiedosto, $data);
fclose($tiedosto);
print "Viesti lisätty.";
6403
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Kokeilin huvikseni ja tämän $data = ereg_replace("|", "I", $data);
kun jätin pois, lisäsin fwrite($tiedosto, $data, strlen($data)); ja laitoin tarvittava kaarisulut perään, se toimi. Pitäisiköhän ereg_replace:ssa olla "|"?

Äänestä
  • Terve!

    Oli jotain 'häikkää' omissa PHP:n asetuksissa. Eli $nimi & $teksti piti hakea käskyllä $HTTP_GET_VARS['nimi'] et cetera.
    Nyt toimii jollakin tavalla, mutta koodi on edelleen aika hataraa.

    En tiedä tuosta ereg_replacesta, tarkoitus olisi että se korvaa merkin '|' merkillä I (iso I).. Hmm. Pitänee kokeilla.

    Kiitos :)

    Äänestä

  • *KahvinKeitin kirjoitti:

    Terve!

    Oli jotain 'häikkää' omissa PHP:n asetuksissa. Eli $nimi & $teksti piti hakea käskyllä $HTTP_GET_VARS['nimi'] et cetera.
    Nyt toimii jollakin tavalla, mutta koodi on edelleen aika hataraa.

    En tiedä tuosta ereg_replacesta, tarkoitus olisi että se korvaa merkin '|' merkillä I (iso I).. Hmm. Pitänee kokeilla.

    Kiitos :)

    Itse tekemässäni cgi-vieraskirjassa vaihdoin viestissä
    tilalle ja laitoin eri kenttien väliin erottimeksi # (tutkin, onko niitä lähetetyssä viestissä ja vaihdoin ne välilyönneiksi). Tallennettava oli muotoa nimi#e-mail#viesti
    ja sen sai helposti luettua taulukkoon $pairs Perlin käskyillä

    open (FILE,"$vtiedot");
    @LINES=;
    $SIZE=@LINES;
    for($i = 0; $i < $SIZE; $i ) {
    my (@pairs) = split(/#/, $LINES[$i]);

    $pairs[0] on nimi, $pairs[1] on email ja $pairs[2]
    on itse viesti; $LINES[$i] on koko luettu rivi. Lähes samat käskyt löytyy varmaan php:stä. Tosi kätevää, millainenkohan hässäkkä tämä olisi asp:llä?

    Äänestä

Rupesin tekemään tuohon koodiin perustuen omaa vieraskirjaa, mutta ohjelma menee loppuun asti, vaikka kenttiin ei olisi mitään kirjoitettukaan. Täytyy varmaan lähettä tiedot ne tallentavalle php:lle ja tarkistaa java skriptillä ensin, onko kentissä tietoa.

Äänestä

Noniin, ratkesihan se.

Uudemmissa PHP:n versioissa ei URL:sta napata niitä muuttujia automaattisesti, vaan ne pitää ottaa komennolla $muuttuja = HTTP_GET_VARS['muuttuja'];

Nyt siis toimii, muutin tuota hieman järkevämmäksi muutenkin.
Tuloksen voi käydä katsomassa osoitteessa http://velozity.myip.org/vuosaari/
Kone nyt on päällä milloin on.. Päivisin yleensä. Tuolta sivuilta siis painaa uutisen lopussa olevaa kommentoi -nappia, siellä tämä ominaisuus.

Äänestä
  • Se on kiinni serverin asetuksista, php-manuaalista löytyy ohjeet.

    Äänestä

Kommentoi aloitusta


*KahvinKeitin kirjoitti:

Sanokaapa viisaammat, onko seuraavassa koodissa jokin vika?
Tarkoitus olisi tehdä vieraskirjan tyyppinen kommentinjättämislomake.
Käsittääkseni tuossa kirjoituslomakkeessa on joku vika. Tai sitten en ole osannut säätää serveriäni oikein PHP:n suhteen.. :o (Käytän Xitamia) Nimittäin nyt kun lomakkeeseen jotakin kirjoittaa, sivu vain päivittyy uudestaan eikä viestit.txt:hen ole ilmestynyt yhtään mitään. Tässä on siis vain osa koodista (tiedostoonkirjoitusosa), lukemisosa puuttuu.

echo "

Kirjoita



Nimi:


Teksti:



";

if (isset($nimi))
{

if (is_writeable("viestit.txt"))
{

$tiedosto = fopen("viestit.txt", "a ");
$data = "$nimi|$teksti
";
$data = ereg_replace("|", "I", $data);
fwrite($tiedosto, $data);
fclose($tiedosto);
print "Viesti lisätty.";

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu