<?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
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
Muotoon:
Ilmeisesti sähläsit sulkujen kanssa.Elikkäs mikään ei saa olla sulkujen ulkopuolella, kuten tuo "OR" oli.
Joo niinpäs näytti käyvän. Kiitos avusta, nyt toimii niinkuin pitäisikin :)
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?
Rivi ei vaihdu, kun tulostat nuo näytölle, vai kun katselet tiedostoa jollain tekstieditorilla?
Includasin chat.txt:n (jossa viestit ovat) chat.php sivulle, ja sivulla kaikki viestit ovat vain toistensa perässä
HTML tunnistaa rivivaihdoksi ainoastaan "<br>":n.
fwrite($tt, "$viesti");
Mitenkä tuohon nyt lisään sen <BR>?
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.
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>
joo nythän se toimii. kiitos!
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?
Yksinkertaisesti parsettamalla viesti seuraavasti:
$viesti = str_replace(">", ">", str_replace("<", "<", $viesti));
Joo kiitos, NYT se toimii. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.