Yksinkertainen VierasKirja (YVK) 1.0 by exc. Esimerkki löytynee ososta: http://www.lahna.org/?p=vieraskirja. Tee tyhjä kommentit.txt ja chmodaa 666.
Ilmoittakaa virheistä jos löytyy.
Huom! Mun eka julkaistu skripti =)
index.php
<html> <head> <title>YVK 1.0</title> </head> <body> <form action="kommentti.php" method="post"> Nimi: <br> <input type="text" name="nimi"><br> Sähköposti: <br> <input type="text" name="email"><br> Kotisivu: <br> <input type="text" value="http://" name="www"><br> Sivun nimi: <br> <input type="text" name="wwwnimi"><br> Kommentti: <br> <textarea name="kommentti"></textarea><br> <input type="submit" value="kommentoi" name="ok"> </form> <br> <?php include("kommentit.txt"); ?> </body> </html>
kommentti.php
<?php // YVK 1.0 by excalibur :: www.lahna.org // Älä muuta jos et tiedä mitä teet $ok = $HTTP_POST_VARS["ok"]; if(isset($ok)) { $kommentti = $HTTP_POST_VARS["kommentti"]; $nimi = $HTTP_POST_VARS["nimi"]; $email = $HTTP_POST_VARS["email"]; $www = $HTTP_POST_VARS["www"]; $wwwnimi = $HTTP_POST_VARS["wwwnimi"]; // Tiedosto mihin koko roska tallennetaan $tiedosto="kommentit.txt"; // Siistii viestejä poistamalla turhia merkkejä $kommentti = str_replace("<", "<", $kommentti); $kommentti = str_replace(">", ">", $kommentti); $kommentti = str_replace("\r\n", "<br>", $kommentti); $kommentti = str_replace("\\", "", $kommentti); $nimi = str_replace("<", "<", $nimi); $nimi = str_replace(">", ">", $nimi); // Avataan tiedosto $t=fopen($tiedosto, "a"); fputs($t, "Lähettäjä: <a href=mailto:". $email .">". $nimi ."</a> <br>"); fputs($t, "Lähetysaika: ". date("j.n.Y H:i:s")); fputs($t, "<br>www: <a href=". $www ." target=_blank>". $wwwnimi ."</a> <br>"); fputs($t, "<br>Kommentti: ". $kommentti ."<br><br>"); // Suljetaan tiedosto fclose($t); ?> <script>document.location="index.php"</script> <?php } ?>
html:ää ei kannata tallentaa tiedostoon. Pelkästään raaka data. Ei myöskään kannata tallentaa valmista päivämäärää, vaan aikaleima. Näin ollen kun vieraskirjassasi on semmonen 200 000 viestiä ja haluat muokata ulkoasua ja vaikka päivämäärän tulostusformaattia se onnistuu muokkaamatta 200 000 viestiä.
Lisäski viestien siistimisjärjestelmä on aika ihmeellisesti toteutettu. $nimi = str_replace(">", ">", $nimi); Öh, missasinko jotain, vai mitä tämä tekee? Sitten
$kommentti = str_replace("\r\n", "<br>", $kommentti); Käsittääkseni \r\n on rivinvaihto vain windowsissa. Eli (*nix|mac)-käyttäjien viestejä ei haluta rivittää vai?
$kommentti = str_replace("\\", "", $kommentti); Miksi halutaan poistaa viestistä kaksi peräkkäistä kenoviivaa? Epäilenpä, että palvelimellasi: magic_quotes_gpc = on ja et ole sitä hokannut. stripslashes() on sitä varten.
Ekaksi scriptiksi kuitenkin ihan hyvä. Oma ensimmäinen viekkuni oli 10 x pahempi :D
Tuotanoin, tämä nyt on tuollaisia "virheitä" täynnä, sillä olen ihan newb.. Ja en tiennyt että \r\n on rivinvaihto vain wintoosassa. Mitä tarkoitat tuolla
lainaus:
html:ää ei kannata tallentaa tiedostoon. Pelkästään raaka data. Ei myöskään kannata tallentaa valmista päivämäärää, vaan aikaleima. Näin ollen kun vieraskirjassasi on semmonen 200 000 viestiä ja haluat muokata ulkoasua ja vaikka päivämäärän tulostusformaattia se onnistuu muokkaamatta 200 000 viestiä.
? Noh, onhan tämä silti käyttökelpoinen..? Vai onko? =)
Data kannattaa tallentaa sinne tekstitiedostoon otetaan nyt esimerkiksi vieraskirjan tapauksessa tähän tyyliin
aikaleima|lähettäjä|e-mail|kotisivu|viesti
Eli esimerkiksi:
1099315431|matti meikäläinen|matti@luukku.com|http://matti.com|terve 1099316400|maija meikäläinen|maija@luukku.com|http://matti.com|ihq viekku sul :D
Sitten vaan lukee datan esim file()-funktiolla, käy jokaisen rivin läpi ja samalla hajottaa rivin explode()-funktiolla taulukoksi ja samalla kun tulostaa taulukon arvot niin lisää siihen sen html-muotoilun.
Toi 200 000 nyt vaan kuvasti sitä, että kun vieraskirjassa alkaa olemaan enemmän viestejä, niin ulkoasun muuttaminen menee hankalaksi, kun joutuu muokkaamaan jokaisen viestin erikseen.
Hyvä idea.. Taidan tässä lukea php.netin manuaaleja.. Teen tästä paremman sitten kun osaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.