Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: erittäin yksinkertainen chat

Sivun loppuun

zankari [31.08.2005 22:16:30]

#

<?php
  $tt = fopen("chat.txt", "a");
  $nick = $_POST['nick'];
  $viesti = $_POST['teksti'];


  fwrite($tt, "$nick kirjoitti: ");
  fwrite($tt, "$viesti \r");

  fclose($tt);
  }

  ?>

Elikkä tuossa on koodi ja ongelmana on se, että joka kerta kun joku menee tuolle kyseiselle chat.php sivulle, chatlaatikkoon tulee tuo "kirjoitti:" teksti. Kokeilin korjata asiaa muuttamalla koodin:

<?php
  $tt = fopen("chat.txt", "a");
  $nick = $_POST['nick'];
  $viesti = $_POST['teksti'];

if (!isset($nick)) OR (!isset($viesti))
  {
   echo "Nimi tai viesti unohtui?";
  }
  else
  {
  fwrite($tt, "$nick kirjoitti: ");
  fwrite($tt, "$viesti \r");

  fclose($tt);
  }

  ?>

Sitten jälkeen alkoi erroria tulla (Parse error: parse error, unexpected T_LOGICAL_OR in /mounted-storage/home/sub005/sc10601/hostit/santtu/Jokkis Airsoft/chat.php on line 27) eli rivi

if (!isset($nick)) OR (!isset($viesti))

Osaisikos joku antaa neuvoja miten saisin tämän kuntoon?
Enkä haluaisi mielellään mitään kamalan monimutkaisia neuvoja, koska olen aloittelija PHP:ssä.
Kiitos jo etukäteen!

EDIT: Ai niin! Tuohan on netissä osoitteessa http://santtu.moldoreld.com/Jokkis Airsoft/chat.php

Megant [31.08.2005 22:21:08]

#

if (!isset($nick)) OR (!isset($viesti))

Muotoon:

if (!isset($nick) OR !isset($viesti))

Ilmeisesti sähläsit sulkujen kanssa.Elikkäs mikään ei saa olla sulkujen ulkopuolella, kuten tuo "OR" oli.

zankari [31.08.2005 22:31:32]

#

Joo niinpäs näytti käyvän. Kiitos avusta, nyt toimii niinkuin pitäisikin :)

zankari [01.09.2005 08:01:47]

#

Ja sitten on vielä toinen ongelma, tuo rivinvaihto. Kokeilin \n ja \r, mutta kumpikaan ei toiminut.. Kuten näkyy ekasta koodista, siellä on \r viestin kirjoituksen perässä. Mistä johtuu ettei rivi vaihdu?

hunajavohveli [01.09.2005 08:08:42]

#

Rivi ei vaihdu, kun tulostat nuo näytölle, vai kun katselet tiedostoa jollain tekstieditorilla?

zankari [01.09.2005 08:12:50]

#

Includasin chat.txt:n (jossa viestit ovat) chat.php sivulle, ja sivulla kaikki viestit ovat vain toistensa perässä

hunajavohveli [01.09.2005 08:15:22]

#

HTML tunnistaa rivivaihdoksi ainoastaan "<br>":n.

zankari [01.09.2005 08:19:53]

#

fwrite($tt, "$viesti");

Mitenkä tuohon nyt lisään sen <BR>?

hunajavohveli [01.09.2005 08:38:56]

#

fwrite($tt, $viesti . "<br>");

Edit: Tai ei sitä välttämättä kannata tiedostoon lisätä. Minä tekisin niin, että lisään "<br>":n rivien perään vasta siinä vaiheessa, kun tulostan rivit tiedostosta.

Deewiant [01.09.2005 12:20:32]

#

zankari kirjoitti:

Kokeilin \n ja \r, mutta kumpikaan ei toiminut.. Kuten näkyy ekasta koodista, siellä on \r viestin kirjoituksen perässä. Mistä johtuu ettei rivi vaihdu?

Jos tekstitiedosto, johon kirjoitat, on Windows-tyyppinen, haluat käyttää rivinvaihtona "\r\n":ää. Avaa muuten fopen():lla aina binäärimuodossa, eli tässä tapauksessa koodilla "ab" eikä "a". Sekin voi vaikuttaa asiaan, mutta vaikka ei vaikuttaisi, on parempi tehdä niin.

Lisäksi jos haluat näyttää sen tekstin HTML-sivulla, kannattaa laittaa se include <pre>-tagien sisälle... eli esmes:

<pre>
<?php include("mikässenytolikaan") ?>
</pre>

zankari [01.09.2005 15:16:58]

#

joo nythän se toimii. kiitos!

zankari [02.09.2005 18:06:02]

#

Tuli taas tarvetta apuunne. Näytin kaverilleni (vähän taitavampi PHP kielessä kuin minä) tuota chattia ja hän halusi auttaa minua sen parantelemisessa osoittamalla että sen voi kaataa... Hän oli kirjoittanut viestiin: <?php while($_POST[\"nick\"] == T) echo \"lol\"; ?>
ja chattihan kaatui :).
Elikkäs, miten voisin korjata tuon?

Jtm [02.09.2005 18:18:13]

#

Yksinkertaisesti parsettamalla viesti seuraavasti:
$viesti = str_replace(">", "&gt;", str_replace("<", "&lt;", $viesti));

zankari [02.09.2005 18:53:40]

#

Joo kiitos, NYT se toimii. :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta