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.";
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.";
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 "|"?
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ä?
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.
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.
Se on kiinni serverin asetuksista, php-manuaalista löytyy ohjeet.