---
title: "Ordfilter till min gästbok"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/133413-ordfilter-till-min-gästbok"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "silfver"
published: "2005-08-28T18:22:12.000Z"
updated: "2006-08-21T08:09:29.000Z"
replies: 22
views: 1503
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/133413-ordfilter-till-min-gästbok"
---

# Ordfilter till min gästbok

_Sida 1 av 2._

## #1 — silfver, 2005-08-28T18:22Z

Hm. Är det möjligt att på nåt enkelt och smidigt sätt göra så att man ignorerar meddelanden som innehåller vissa ord?

Ifall man t.ex. skriver **Poker** så ska gästboken inte skriva inlägget. 

```php
<?
if (isset($_GET["do"]))
{
  if ($_GET["do"] =="new")
  {
   $host = gethostbyaddr($REMOTE_ADDR);
   $ip = gethostbyname($REMOTE_ADDR);
   $skrivet = date("Y/m/d  H:i");
   $msg= strip_tags($_POST["f00-wa-bar"], '<strong><em>');
   $msg = preg_replace("/(\r\n|\r|\n)/", "<br />", $msg);
   $msg = str_replace("|", "&amp;#124;", $msg);
   $msg = stripslashes($msg);
   $cfile = "textfil.txt";
   $fp = fopen($cfile, "r+");
   $content = fread($fp, filesize($cfile));
   rewind($fp);
   fwrite($fp, "{$_POST["f00-da-bar"]} | $msg | $skrivet | $ip\n$content");
   fclose($fp);
  }
 }
?>
```

 Har någon nåt bra förslag?

Permalänk: https://www.webforum.nu/p/133413

## #2 — Melea, 2005-08-28T19:29Z

Kan man inte bara göra en function som ersätter order Poker med valfritt??

```php
function BadWords($text) {

	$text = strtolower($text);
	$text = str_replace("poker", "nehedu", $text);

	return $text;

}
```

**/r** eller så kan du göra så att det inte ens går att lägga till i textdokumentet/databasen.

```php
$not_allowed = array('poker','holdem');
$new_string = explode(" ", $_POST['text']);

foreach ($new_string as $a) {
	if (in_array(strtolower($a), $not_allowed)) {

		// Nehedu, inga sådana ord här!

	}
}
```

Permalänk: https://www.webforum.nu/p/1663522

## #3 — silfver, 2005-08-28T20:58Z

> **Melea skrev:**
>
> Kan man inte bara göra en function som ersätter order Poker med valfritt??
>
> ```php
> function BadWords($text) {
> 
> 	$text = strtolower($text);
> 	$text = str_replace("poker", "nehedu", $text);
> 
> 	return $text;
> 
> }
> ```
>
> **/r** eller så kan du göra så att det inte ens går att lägga till i textdokumentet/databasen.
>
> ```php
> $not_allowed = array('poker','holdem');
> $new_string = explode(" ", $_POST['text']);
> 
> foreach ($new_string as $a) {
> 	if (in_array(strtolower($a), $not_allowed)) {
> 
> 		// Nehedu, inga sådana ord här!
> 
> 	}
> }
> ```

Meningen är ju att jag vill slippa alla spam-inlägg. Så om jag bara ersätter Poker med Nehedu, så får jag fortfarande en massa skräp. ;)

Ska pröva ditt senaste förslag där. Se ifall jag får ihop det... :p

Permalänk: https://www.webforum.nu/p/1663558

## #4 — Melea, 2005-08-28T21:38Z

Mja, du kan ju göra så att man endast kan posta ett inlägg var, säg, 20 sekund.

```php
$IP = getenv("REMOTE_ADDR");
$DateDiff = date("Y-m-d H:i:s", time("U") - 20);
$sql = mysql_query("SELECT * FROM guestbook where IP = '$IP' AND Posted > '$DateDiff'") or die (mysql_error());

if(mysql_num_rows($sql) == 0) {

	// Lägg till gästboksinlägget

} else {

	// Lägg inte till gästboksinlägget

}
```

Permalänk: https://www.webforum.nu/p/1663576

## #5 — silfver, 2005-08-29T05:42Z

Jag använder fortfarande en textfil för att spara mina gästboksinlägg. Och om en spambot kan posta ett inlägg var 20:e sekund så kan den fortfarande fylla. Och för min del så hinner jag bli tillräckligt irriterad av ETT inlägg som är spam. :D

Men jag ska pröva ditt filter så fort jag får tid efter jobbet...

Permalänk: https://www.webforum.nu/p/1663583

## #6 — jme, 2005-08-29T06:29Z

Ett sätt att minska spam är at ställa en random men simpel fråga som man måste besvara innan man kan posta.
T ex:

Hur mycket är 1 +2?

Alternatvis skapa dynamiska bilder med siffror och bokstäver som man måste skriva i ett fält.

Har sett liknande på vissa ställen. Jag antar att spam-robotar har svårt med detta (tills det blir vanligt...)

Permalänk: https://www.webforum.nu/p/1663586

## #7 — silfver, 2005-08-29T08:44Z

> **jme skrev:**
>
> Ett sätt att minska spam är at ställa en random men simpel fråga som man måste besvara innan man kan posta.
> T ex:
> 
> Hur mycket är 1 +2?
> 
> Alternatvis skapa dynamiska bilder med siffror och bokstäver som man måste skriva i ett fält.
> 
> Har sett liknande på vissa ställen. Jag antar att spam-robotar har svårt med detta (tills det blir vanligt...)

Sånt där är alldeles för avancerat för mig. :D

Ska snickra ihop en sql-php-gästbok när jag får tid över. Med lite hjälp från alla på wF så borde jag väl lyckas. ;)

Permalänk: https://www.webforum.nu/p/1663612

## #8 — Melea, 2005-08-29T09:03Z

Jag kan la göra en spamfri gästbok åt dig om du vill. Med MySQL databas och lite småplockfunktioner. :)

Permalänk: https://www.webforum.nu/p/1663615

## #9 — silfver, 2005-08-29T09:36Z

> **Melea skrev:**
>
> Jag kan la göra en spamfri gästbok åt dig om du vill. Med MySQL databas och lite småplockfunktioner. :)

All hjälp mottages med öppna armar! Har du tid och lust så får du jättegärna göra det.

Permalänk: https://www.webforum.nu/p/1663621

## #10 — Melea, 2005-08-29T11:14Z

Okej, blev lite kladdigt med filtret, någon annan får gärna kolla på det, men det funkar. :)

Här har du demo: <http://www.falkenscout.se/guestbook/>
Och här kan du tanka hem den: <http://www.falkenscout.se/guestbook/guestbook.rar>

Du kan kolla i function.php vilka funktioner jag lagt till.

Permalänk: https://www.webforum.nu/p/1663655

## #11 — silfver, 2005-08-29T11:37Z

> **Melea skrev:**
>
> Okej, blev lite kladdigt med filtret, någon annan får gärna kolla på det, men det funkar. :)
> 
> Här har du demo: <http://www.falkenscout.se/guestbook/>
> Och här kan du tanka hem den: <http://www.falkenscout.se/guestbook/guestbook.rar>
> 
> Du kan kolla i function.php vilka funktioner jag lagt till.

Stiligt, melea! Sitter här och beskådar koden lite och la märke till en massa headers. Jag kommer inte kunna skriva 

```php
<?php require "index.php"; ?>
```

 i min gästboksfil, för då kommer jag väl antagligen få ett felmeddelande i stil med: 

> Headers already set, bla bla bla.

 Eller hur? :)

Eftersom jag inkluderar sidan i tre delar, top.php, gastbok.php och bottom.php så kommer det väl bli strul?

\<html\>
\<body\>... ligger ju redan i min top.php-fil. Förstår du vad jag menar? :)

Permalänk: https://www.webforum.nu/p/1663666

## #12 — Melea, 2005-08-29T11:39Z

Jajamen, men rensa upp så mycket du vill i index.php, och döp om den till guestbook.php eller liknande. :)

Kolla gästboken för mer info

**/r** flytta all javascript-kod till din top.php, samt 

```php
if($_POST['guestbook'] == 'add') {

	$answer  = $_POST[answerid];
	$split = explode("_", $answer);

	$questionid = $split[0];
	$answerid = $split[1];

	if($questionid == 0 && $answerid == 2 || $questionid == 1 && $answerid = 3 || $questionid = 2 && $answerid = 2) {

		mysql_query("
		INSERT INTO guestbook (Name, Email, GB_Text, Posted, IP)
		VALUES ('$_POST[Name]', '$_POST[Email]', '$_POST[GB_Text]', '$Written', '$IP')
		") or die(mysql_error());

		Header('Location: index.php');

	} else {

		Header('Location: index.php?error');

	}

} elseif($_GET['guestbook'] == 'del') {

	mysql_query("
	DELETE FROM guestbook
	WHERE ID = $_GET[ID]
	") or die(mysql_error());

	if(empty($_GET['page'])) {
		$page = 1;
	} else {
		$page = $_GET['page'];
	}

	Header('Location: index.php?page='.$page);

}
```

Så den hamnar ovanför all html-kod, sen borde det inte vara några problem och rensa bort allt detta

```
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
<head>

	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<!-- no cache headers -->
	<meta http-equiv="Pragma" content="no-cache" />
	<meta http-equiv="Expires" content="-1" />
	<meta http-equiv="Cache-Control" content="no-cache" />
	<!-- end no cache headers -->
	<meta name="keywords" content="gästbok" />
	<meta name="description" content="Gästbok" />
	<meta http-equiv="MSThemeCompatible" content="Yes" />
	<title>Gästbok</title>

	<!-- javascript elements -->
	<script type="text/javascript">

	</script>

	<!-- css elements -->
	<style type="text/css">

	</style>

</head>
<body>

....

</body>
</html>
```

Permalänk: https://www.webforum.nu/p/1663669

## #13 — silfver, 2005-08-29T11:43Z

> **Melea skrev:**
>
> Jajamen, men rensa upp så mycket du vill i index.php, och döp om den till guestbook.php eller liknande. :)
> 
> Kolla gästboken för mer info

Roliga frågor du har gjort. :p Gillar särskilt den frågan "Vad heter Silfver i efternamn?" haha. :D

Pillar med gästboken när jag slutat så får vi se ifall jag reder ut det. Tack så länge! Den var jättefin. ;)

Permalänk: https://www.webforum.nu/p/1663672

## #14 — silfver, 2005-08-29T15:20Z

När jag ska lägga till tabellerna i databasen så får jag följande felmeddelande: 

> **phpMyAdmin skrev:**
>
> Error
> 
> SQL-query : 
> 
> CREATE TABLE \`guestbook\` (
> \`ID\` int( 50 ) unsigned NOT NULL AUTO_INCREMENT ,
> \`Name\` varchar( 100 ) NOT NULL default '',
> \`Email\` varchar( 100 ) NOT NULL default '',
> \`GB_Text\` longtext NOT NULL ,
> \`Posted\` datetime default NULL ,
> \`IP\` varchar( 16 ) NOT NULL default '',
> PRIMARY KEY ( \`ID\` )
> )ENGINE = MYISAM DEFAULT CHARSET = latin1 PACK_KEYS =0 AUTO_INCREMENT =11
> 
> MySQL said:
> \#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET  = latin1 PACK_KEYS  =0 AUTO_INCREMENT  =11' at

Vad kan det bero på?

Permalänk: https://www.webforum.nu/p/1663741

## #15 — Melea, 2005-08-29T15:31Z

Måste blitt något fel, denna funkar:

```
CREATE TABLE `guestbook` (
  `ID` int(50) unsigned NOT NULL auto_increment,
  `Name` varchar(100) NOT NULL default '',
  `Email` varchar(100) NOT NULL default '',
  `GB_Text` longtext NOT NULL,
  `Posted` datetime default NULL,
  `IP` varchar(16) NOT NULL default '',
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=1 ;
```

Permalänk: https://www.webforum.nu/p/1663745

## #16 — silfver, 2005-08-29T18:09Z

Det fungerade inte heller. Men jag prövade att ta bort 

```
ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=1 ;
```

 och då fungerade. Men nu kanske jag borde ändra nåt manuellt?

**r\\** Har hittat en bugg till. Det verkar som att frågan "Vad heter Silfver i efternamn" inte fungerar. Den skriver att man svarar fel trots att man väljer rätt namn. Nu blir jag osäker på om jag verkligen heter Silfver i efternamn.  :birp

Permalänk: https://www.webforum.nu/p/1663780

## #17 — Melea, 2005-08-29T19:01Z

> **silfver skrev:**
>
> **r\\** Har hittat en bugg till. Det verkar som att frågan "Vad heter Silfver i efternamn" inte fungerar. Den skriver att man svarar fel trots att man väljer rätt namn. Nu blir jag osäker på om jag verkligen heter Silfver i efternamn.  :birp

Det var jag som hade missat en grej

```php
if($questionid == 0 && $answerid == 2 || $questionid == 1 && $answerid = 3 || $questionid = 2 && $answerid = 2) {
```

Om du kollar riktigt noga så är det bara ett = på de tre sista, ersätt det med == så ska det funka. :)

Permalänk: https://www.webforum.nu/p/1663796

## #18 — silfver, 2005-08-29T19:02Z

Kanon!

Sitter och knåpar lite nu... Timestampsen fungerar fortfarande inte. Vet du varför?

Permalänk: https://www.webforum.nu/p/1663799

## #19 — Melea, 2005-08-29T19:28Z

Inte en aning, men du...
Gör en ny tabell

ID - int(50) - autoincrement
Name - varchar(100)
Email - varchar(100)
GB_Text - longtext
Posted - datetime - null
IP - varchar(16)

Pröva det, så får vi se om det funkar. :)

Permalänk: https://www.webforum.nu/p/1663802

## #20 — Melea, 2005-08-29T19:29Z

Ah, såg en sak nu, kan det vara så att du inte har en variabel som innehåller datumet, innan INSERT-taggen?

```php
$Written = date("Y-m-d H:i:s");
```

Permalänk: https://www.webforum.nu/p/1663804

---

Tråden på webben: https://www.webforum.nu/amne/php/133413-ordfilter-till-min-gästbok  
Nästa sida: https://www.webforum.nu/amne/php/133413-ordfilter-till-min-gästbok/page2.md
