Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Vieraskirja

Sivun loppuun

odys [24.06.2003 22:20:10]

#

Todella yksinkertainen vieraskirja, joka toimii FlatFile systeemillä ja hyödyntää PHP:n Serialize() ja Unserialize() -funktioita, joiden avulla saadaan tallennettua muuttujia tiedostoon byte-streamina eikä muuttujien tietotyyppejä menetetä.

Todella kätevä tapa tallentaa tietoa tiedostoihin.

Vieraskirja tukee seuraavia BBCode tägejä:

[b]
[i]
[u]
[s]
[url=http://jope.psykoosi.org/]Linkki[/url]
[url]http://jope.psykoosi.org[/url]
[url=mailto:jope@psykoosi.org]Mailia mulle[/url]
[blockquote]
[code]
[pre]
<?php

	/*
	 *  Guestbook is coded by Joni Järvinen a.k.a Jope <jope@psykoosi.org>
	 *  More scripts can be found at http://jope.psykoosi.org/ (Finnish site)
	 *
	 *  This is a simple guestbook built on flatfile system so there is no
	 *  need for SQL database.
	 *
	 *  Guestbook is very easy to use; just include this page into some of
	 *  your pages and it will automatically work.
	 *
	 *  This guestbook could be optimized a little. For example when I
	 *  read data into array from datafile:
	 *    $data = Unserialize(Implode("", File($datafile))); ->
	 *    $data = Unserialize(File_Get_Contents($datafile));
	 *
	 *  This is because file_get_contents() is pretty new function and
	 *  everyone doesn't have it so you can edit the script by yourself.
	 *
	 *  Usage (Right way to use this guestbook):
	 *
	 *    <?php
	 *      Ob_Start();
	 *    ?>
	 *    <html>
	 *    <head><title>My guestbook</title></head>
	 *    <body>
	 *    <?php include ("gusetbook.php"); ?>
	 *    </body>
	 *    </html>
	 *    <?php
	 *      $data = Ob_Get_Contents();
	 *      Ob_End_Clean();
	 *      echo $data;
	 *    ?>
	 *
	 */

	// File where guestbooks data is saved. (no need to change this)
	$datafile = "guestbook.dat";

	// Do NOT edit unless you know what you're doing!
	$Qstring = preg_replace("/&?act=(write|save|read)/i", "", $_SERVER["QUERY_STRING"]);
	$address = ($Qstring == "") ? "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"] : "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"] . "?" . $Qstring;
	if ($_GET["act"] == "write") {
		echo "<h2>Kirjoita vieraskirjaan!</h2>";
		if ($_GET["error"] == 1) {
			echo "<font color=\"#FF0000\">Täytä vähintään nimi ja viesti!</font>\n";
		}
		if ($Qstring == "") {
			echo "<form action=\"$address?act=save\" method=\"POST\">";
		} else {
			echo "<form action=\"$address&act=save\" method=\"POST\">";
		}
		echo "<small><b>Nimi:</b></small><br>
		      <input type=\"text\" size=\"25\" maxlength=\"50\" name=\"nimi\"><br>
		      <br>
		      <small><b>Kotisivut:</b></small><br>
		      <input type=\"text\" size=\"25\" maxlength=\"50\" name=\"kotisivut\" value=\"http://\"><br>
		      <br>
		      <small><b>Sähköposti:</b></small><br>
		      <input type=\"text\" size=\"25\" maxlength=\"50\" name=\"email\"><br>
		      <br>
		      <small><b>Viestisi:</b></small><br>
		      <textarea rows=\"6\" cols=\"36\" name=\"viesti\"></textarea><br>
		      <br>
		      &nbsp;<input type=\"submit\" value=\" Tallenna \">&nbsp;&nbsp; <input type=\"checkbox\" name=\"bbcode\" value=\"disabled\"> Poista BBcode käytöstä tässä viestissä
		      </form>";
	}
	else if ($_GET["act"] == "save") {
		if (!file_exists($datafile)) {
			if (!@touch($datafile)) {
				die ("Couldn't create datafile!");
			}
			if (!@chmod($datafile, 0777)) {
				die ("Couldn't chmod datafile!");
			}
		}
		if ($_POST["nimi"] != "" AND $_POST["viesti"] != "") {
			$data = Unserialize(Implode("", File($datafile)));
			$bbcode = ($_POST["bbcode"] == "disabled") ? "disabled" : "enabled";
			$data[] = Array(
				"nimi" => $_POST["nimi"],
				"kotisivut" => $_POST["kotisivut"],
				"email" => $_POST["email"],
				"viesti" => $_POST["viesti"],
				"aika" => time(),
				"bbcode" => $bbcode
			);
			$fp = @fopen($datafile, "w");
			if ($fp) {
				fwrite ($fp, Serialize($data));
				fclose ($fp);
				if ($Qstring == "") {
					Header ("Location: $address?act=read");
				} else {
					Header ("Location: $address&act=read");
				}
			} else {
				die ("Couldn't open datafile!");
			}
		} else {
			if ($Qstring == "") {
				Header ("Location: $address?act=write&error=1");
			} else {
				Header ("Location: $address&act=write&error=1");
			}
		}
	}
	else if ($_GET["act"] == "read") {
		if (file_exists($datafile)) {
			$data = Unserialize(Implode("", File($datafile)));
			if (sizeof($data) > 0 AND Is_Array($data)) {
				echo "<h2>Lue vieraskirjaa</h2>";
				$data = Array_reverse($data);
				for ($i = 0; $i < sizeof($data); $i++) {
					$nimi = StripSlashes(HtmlEntities($data[$i]["nimi"]));
					$kotisivut = StripSlashes(HtmlEntities($data[$i]["kotisivut"]));
					$email = StripSlashes(HtmlEntities($data[$i]["email"]));
					$viesti = ($data[$i]["bbcode"] == "disabled") ? StripSlashes(HtmlEntities($data[$i]["viesti"])) : StripSlashes(BBcode(HtmlEntities($data[$i]["viesti"])));
					$aika = Date("d.m.Y / H:i:s", $data[$i]["aika"]);
					echo "<b>$nimi @ $aika (<a href=\"$kotisivut\">WWW</a> | <a href=\"mailto:$email\">E-mail</a>)</b>
					      <hr>".
					      nl2br($viesti)."
					      <br>
					      <br>
					      <br>";
				}
			} else {
				echo "Ei viestejä";
			}
		} else {
			echo "Ei viestejä";
		}
	} else {
		echo "<h2>Vieraskirja</h2>";
		if ($Qstring == "") {
			echo "<center><br><br><br><br><a href=\"$address?act=write\">Kirjoita vieraskirjaan</a> | <a href=\"$address?act=read\">Lue vieraskirjaa</a></center>";
		} else {
			echo "<center><br><br><br><br><a href=\"$address&act=write\">Kirjoita vieraskirjaan</a> | <a href=\"$address&act=read\">Lue vieraskirjaa</a></center>";
		}
	}
	function BBcode ($data) {
		$data = preg_replace("/\[(\/?)(b|u|i|s|strike|blockquote|code|pre)\]/i", "<$1$2>", $data);
		$data = preg_replace("/\[url\](.*)\[\/url\]/i", "<a href=\"$1\" target=\"_blank\">$1</a>", $data);
		$data = preg_replace("/\[url=(.*)\](.*)\[\/url\]/i", "<a href=\"$1\" target=\"_blank\">$2</a>", $data);
		return $data;
	}
?>

Tumpi [24.06.2003 22:56:21]

#

Ihan hienolta näyttää..

Olli Vanhoja [25.06.2003 00:02:50]

#

Hyvältä toi ainaki näyttää

T.M. [25.06.2003 00:33:16]

#

pieni mutta pippurinen ;)
esimerkkisivut olis kivoja

odys [25.06.2003 00:35:10]

#

http://jope.psykoosi.org/?sivu=vieraskirja :)

T.M. [25.06.2003 00:39:36]

#

hjuva, pistä toi kuvaukseen nii sen löytää paremmin.

odys [25.06.2003 00:46:15]

#

Ei pysty kun toi editointi kusee niin pahasti.. se tekee ton vieraskirjan formin tohon :))

T.M. [25.06.2003 02:19:22]

#

siis...?
textarea hajoo?

Juuso [25.06.2003 13:48:00]

#

Kommentointi voisi olla suomeksi, koska koodivinkit tuntuvat kopioiduilta kun kommentit ovat englanniksi. Mutta jos todella hallitsee englannin paremmin kuin suomen niin antaa palaa vaan.

T.M. [25.06.2003 17:37:27]

#

jep, joistain englannin kielisistä selityksistä voi olla vähän vaikeaa saada selkoa. :P

odys [26.06.2003 05:35:27]

#

No jaa.. voisi kyllä alkaa kommentoimaan suomeksi. Olen nyt kirjoitellut kommentit englanniksi sen varalta jos joskus laitan skriptini englannin kieliselle sivustolle.

shovi [24.07.2003 13:02:42]

#

Mitäs tehdään jos se valittaa mbnetissä could open datafile?

odys [28.07.2003 21:34:50]

#

Laitetaan tiedostolle chmod 666 tai 664 kunhan se toimii.
Sen pitäisi onnistua MBnetin omalla kotisivumuokkaimella, jossa on kohta muokkaa tiedoston oikeuksia..

ziggy [15.12.2003 19:30:41]

#

mä kokeilin tota mun mbnetin kotisivuille, valittaa Couldn't create datafile! mitä pitäs tehä??

riku [03.01.2004 23:15:57]

#

Hei!

Mistä tuossa ylhäällä olevasta koodista vaihdetaan taustaväriä? Vai täytyykö siihen luoda joku erillinen koodi millä sitä vaihdellaan?

odys [04.01.2004 19:44:45]

#

Itse sä sen taustavärin määrität sillä sivulla mihin vieraskirjan liität.

riku [04.01.2004 20:13:02]

#

Aivan juu, voihas vitsi... mitä mahdoin ajatella!

riku [04.01.2004 20:37:01]

#

Koodi toimii yksinään hyvin, mut heti kun määritän jonkun taustavärin, ni johan ongelmat alko. Jos liitän suoraan johonkin sivuun niin virheitä rupeaa tulemaan aina sillon kun kirjoittaa vieraskirjaan tuleen ilmoitus! Huh,hu!

Warning: Cannot modify header information - headers already sent by (output started at E:\sivut\kansio\vieraskirja.php:10) in E:\sivut\kansio\vieraskirja.php on line 105

odys [08.01.2004 00:15:20]

#

Selkeä errori.. laita vaikka ihan sivun ekaks riviks <?php ob_start(); ?> ja ihan vikaks riviks <?php ob_end_flush(); ?>

riku [08.01.2004 13:33:03]

#

Selkeä errori.. laita vaikka ihan sivun ekaks riviks <?php ob_start(); ?> ja ihan vikaks riviks <?php ob_end_flush(); ?>

En kyllä saanut toimimaan tuollakaan koodilla. Pelkkä php koodi liitettynä tyhjään taulukkoon toimii hyvin, ei mitään varoituksia. Ei auta ku opiskella... kyllä se vielä joskus toimii!

Jen0va [09.01.2004 04:32:00]

#

Onkohan tää kopioitu vaan jostain kun kommentit eng.? Tai no jos tykkää tehä enkuks :/

Gwaur [17.01.2004 22:21:39]

#

Höm... Kuvauksessa olevat tagit tekee tekstin vähän erilaiseksi kuin yleensä on

odys [22.01.2004 16:51:50]

#

Gwaur, reportoin siitä antille.

Ja Jen0va miks vitussa kopioisin koodia jotain? Tää on alunperin ollu mun enkunkielisillä sivuilla jotka myöhemmin muutettiin suomeks.

Sami M [21.02.2004 23:05:07]

#

Aina kun kokeilen tuota vieraskirjaa tulee teksti "Couldn't create datafile!". Miten tuon saa toimimaan. Käytän MBnetin kotisivumuokkainta.

Skrible [01.04.2004 21:38:46]

#

Mullakaan ei alukis toiminut herjas tota "Couldn't create datafile!", mutta kun tein tiedoston guestbook.dat ja heitin sille 666 chmodit niin rupes jopa toimimaan =)

Riffi [28.04.2004 00:43:23]

#

Toimii hyvin myös keskellä koodia.

Kannattaa tarkistaa, että <?php ob_start(); ?> :n edessä ei ole tyhjiä rivejä eikä välejä. Mulla kiikasti ensin siitä.

dera [25.05.2004 07:25:35]

#

Aika kivan näkönen vieraskirja. Hyvin ainakin toimii :P hyvä odys!

jormaka2 [08.07.2004 10:31:15]

#

mitenkähän saan vieraskirjaan näkymään muutkin tiedot kuin nimen ,email osoitteen ja www osoitteen. Kaikki kyllä tallentuu dat tiedostoon mutta miten koodia pitää muuttaa että ne näkyy siellä vieraskirjassa?

juhaz [12.07.2004 00:10:41]

#

Osaisiko joku selittää noobielle, että kuinka tuohon lisätään noita BBCode tageja lisää? Esimerkiksi joku

[img]http://www.kuvanosoite.fi/kuva.jpg[/img]

yritin sinne perään bbcode hommaan missä näin ne muutkin niin lisätä tälläisen koodipätkän (mikä ei toiminut, koska kuvaa ei näy):

$data = preg_replace("/\[img=(.*)\](.*)\[\/img\]/i", "<IMG SRC=\"$1\">", $data);

Meitsi [27.08.2004 23:16:26]

#

Laitoin tän kotisivuilleni, kunnes kerkeen koodata ite oman. www.square35.shyper.com

T.M. [18.11.2004 18:20:26]

#

Tein nopeustestin tietokannallesi, sekä vertasin muihin vaihtoehtoihin:

file / explode
- Keskimäärin 68 kierrosta per sekunti

file / unserialize
- Keskimäärin 67 kierrosta per sekunti

file_get_contents / unserialize
- Keskimäärin 17 kierrosta per sekunti

Näyttää siltä että käyttämäsi tietokantatyyppi on todella hidas verrattuna esimerkiksi rivi per rivi tallennettuun tietoon joka sitten puretaan explodella.

Näiden tilastojen valossa en suosittele tallentamaan koko viestitaulukkoa yhdelle riville.

odys [19.11.2004 15:02:07]

#

Tällä hetkellä vieraskirjani käyttää File / unserializea.

T.M. [19.11.2004 21:32:19]

#

$data = Unserialize(Implode("", File($datafile)));

Mikäs tuo sitten on? o_O

Edit:
Ai niin, käytätkin file / unserialize / implode, mutta ajaa kyllä saman asian kuin file_get_contents / unserialize

miihkali [18.12.2004 23:59:22]

#

Olen ihan noob, joten kysyn hassuja...

Mulla herjas myös "Couldn't create datafile!" joten pitäisi
ilmeisesti tehdä joku database että toimisi(mutta miten), auttakkee minua.

lahtis [07.02.2005 18:27:24]

#

Chmodit ompi väärin. Ei voi luoda tiedostoja.

Ahti [28.02.2005 21:06:45]

#

lainaus:

Olen ihan noob, joten kysyn hassuja...

Mulla herjas myös "Couldn't create datafile!" joten pitäisi
ilmeisesti tehdä joku database että toimisi(mutta miten), auttakkee minua.

Mulle sano samat sanat?
Mitäs pitäs tehdä?

Jorgga [17.10.2005 23:11:46]

#

Jotain vikaa kyllä löytyy esim se että jos menee lukemaan vieraskiraa ei pääse linkillä pois siitä

Sayer [02.03.2006 19:07:02]

#

Onko minkäänlaista mahdollisuutta vastata viesteihin?

Olisi kiva ominaisuus.

rax [18.05.2008 19:28:57]

#

Mulla herjaa
Warning: Cannot modify header information - headers already sent by (output started at /home/rax/public_html/muille/***/index.php:20) in /home/rax/public_html/muille/***/guestbook.php on line 98

Ja rivi 98:
Header ("Location: $address&act=read");

EDIT: Vaihoin sen 98:n tälläseks:
echo "Kiitos että kirjoitit vieraskirjaamme! <a href=\"index.php?p=guestbook&act=read\">Lue viestejä</a>";
nii lopetti herjaamisen

jhuovine [31.05.2008 22:26:03]

#

Otin käyttöön vieraskirjan, mutta php on minulle aivan uusi tuttavuus. Koitin korjata vieraskirjaan tullutta viestiä (kirjoittajan pyynnöstä) muuttamalla viestin tekstiä guestbook.dat tiedostossa. Tallensin korjatun version ja latasin nettiin, mutta tämän jälkeen mitkään viestit eivät enää vieraskirjassa näkyneet. Missä vika?

Entä jos vieraskirjaan tulee viesti, minkä haluaisin poistaa. Miten se tapahtuu vai katoavatko kaikki viestit tällöinkin?

Kuten sanottu, en ole ennen php:tä käyttänyt eli voi hyvin olla, että en ole hoksannut kaikkea, mitä olisi pitänyt. Kaikki neuvot otetaan siis kiitollisena vastaan!

Wee [22.10.2008 22:34:34]

#

Minusta jotenkin huvittavaa, että kommentointi on englanniksi, siltä varalta, että laittaisi koodin englanninkieliselle sivulle. Jouduthan koodia muokkaamaan kuitenkin, kun laitat kaikki suomenkieliset "Kirjoita uusi viesti" - tekstit "Write a new message"iksi. Ei olisi iso homma tehdä kommentointia suoraan suomeksikin, ja muuttaa sitten.

Sahrah [30.12.2008 00:00:15]

#

Wee kirjoitti:

Minusta jotenkin huvittavaa, että kommentointi on englanniksi, siltä varalta, että laittaisi koodin englanninkieliselle sivulle. Jouduthan koodia muokkaamaan kuitenkin, kun laitat kaikki suomenkieliset "Kirjoita uusi viesti" - tekstit "Write a new message"iksi. Ei olisi iso homma tehdä kommentointia suoraan suomeksikin, ja muuttaa sitten.

Itsekin huvittelen samaa juttua, nämä mokomat englannin kielellä kirjoittajat on joko: a) kopioinneet koodin jostain vaikka toisin väittävätkin b) haluavat muuten vain leveillä lontoon kielen taidoillaan

Minua alkaa vituttamaan se jostakin syystä. Ja ettei kukaa käsittäis viestiäni väärin sanon, että itse en osaa lontoota paskankaa vertaa.

Stide [07.07.2009 16:31:16]

#

Lisäämällä tämän tonne BBcode funktioon saa värit käyttöön

$data = preg_replace("/\[color=(red|yellow|green|blue|white)\]/i","<font color=\"$1\">",$data);

$data = preg_replace("/\[(\/?)color\]/i","<$1font>",$data);

ja tällä saa eri kokoista tekstiä

$data = preg_replace("/\[size=(-3|-2|-1|1|2|3|4|5|6|7|8|)\]/i","<font size=\"$1\">",$data);

$data = preg_replace("/\[(\/?)size\]/i","</font>",$data);

CasTorr [16.08.2010 15:24:33]

#

http://rauh.0009.ws/vieraskirja.php

Notice: Undefined index: act in /www/0009.ws/r/a/u/rauh/htdocs/vieraskirja.php on line 69

Notice: Undefined index: act in /www/0009.ws/r/a/u/rauh/htdocs/vieraskirja.php on line 94

Notice: Undefined index: act in /www/0009.ws/r/a/u/rauh/htdocs/vieraskirja.php on line 134


Sivun alkuun

Vastaus

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

Tietoa sivustosta