Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: YVK (Yksinkertainen VierasKirja)

excalibur [30.10.2004 13:22:02]

#

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("<", "&#60;", $kommentti);
$kommentti = str_replace(">", "&#62;", $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
}
?>

ajv [30.10.2004 16:10:28]

#

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

excalibur [31.10.2004 17:28:46]

#

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? =)

ajv [01.11.2004 15:27:53]

#

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.

excalibur [03.11.2004 10:51:55]

#

Hyvä idea.. Taidan tässä lukea php.netin manuaaleja.. Teen tästä paremman sitten kun osaan.

Vastaus

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

Tietoa sivustosta