---
title: "Problem med Cookies ( Till Spam Skydd )"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/50031-problem-med-cookies-till-spam-skydd"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Simpa"
published: "2002-08-11T09:08:27.000Z"
updated: "2002-08-11T19:22:19.000Z"
replies: 15
views: 372
page: 1
pages: 1
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/50031-problem-med-cookies-till-spam-skydd"
---

# Problem med Cookies ( Till Spam Skydd )

## #1 — Simpa, 2002-08-11T09:08Z

Hej Hej, tänkte lägga in ett spam skydd i detta script: 
<http://simpa.aleborg.com/php/anonym/email.html>

Formen i email.html:

```php
<form action="email.php" method="post">
<br><b> Mottagarens Namn:</b> <br><input type="text" name="mnamn" size="30" class="text"><br>
<br><b> Mottagarens E-post: </b><br><input type="text" name="mmail" size="30" class="text"><br>
<br><b> Ditt Namn:</b> <br><input type="text" name="dnamn" size="30" class="text"><br>
<br><b> Din E-post: </b><br><input type="text" name="dmail" size="30" class="text"><br>
<br><b> Meddelande: </b><br><textarea name="meddelande" cols="30" rows="5" class="text">
</textarea><br><br>
<input type="submit" class="text" value="Skicka!"> <INPUT TYPE=RESET class="text" VALUE="Rensa alla fält!">
</form>
```

 

Kod i email.php

```php
<?php
if ($dnamn == ""){
unset ($dnamn);
$dnamn="Anonym";
}
if ($dmail == ""){
unset ($dmail);
$dmail="Anonym@Anonym.nu";
}
if ($mnamn == "") 
echo "<b>Har inte mottagaren något namn?</b><br>Gå tillbaka och fyll i det: <a href=\"javascript:history.go(-1);\">Tillbaka! </a>";
elseif ($mmail == "")
echo "<b> Du måste ju fylla i mottagarens e-post adress
för att jag ska kunna skicka epostet :-)</b><br>Gå tillbaka och fyll i det: <a href=\"javascript:history.go(-1);\">Tillbaka! </a>";
elseif ($meddelande == "") 
echo "<b>Om du inte skriver något meddelande så blir det väl rätt svårt för personen att läsa?!</b><br>Gå tillbaka och fyll i det: <a href=\"javascript:history.go(-1);\">Tillbaka! </a>";
else {
echo("Ditt mail har skickats");
mail($mmail, "Meddelande från $dnamn till $mnamn", "$meddelande", "From: $dnamn
<$dmail>"); 
}
?>
```

Om jag löser det på detta sätt med Cookies, så blir det ju problem eftersom den inte är högst upp:

```php
<?php
if ($dnamn == ""){
unset ($dnamn);
$dnamn="Anonym";
}
if ($dmail == ""){
unset ($dmail);
$dmail="Anonym@Anonym.nu";
}
if ($mnamn == "") 
echo "<b>Har inte mottagaren något namn?</b><br>Gå tillbaka och fyll i det: <a href=\"javascript:history.go(-1);\">Tillbaka! </a>";
elseif ($mmail == "")
echo "<b> Du måste ju fylla i mottagarens e-post adress
för att jag ska kunna skicka epostet :-)</b><br>Gå tillbaka och fyll i det: <a href=\"javascript:history.go(-1);\">Tillbaka! </a>";
elseif ($meddelande == "") 
echo "<b>Om du inte skriver något meddelande så blir det väl rätt svårt för personen att läsa?!</b><br>Gå tillbaka och fyll i det: <a href=\"javascript:history.go(-1);\">Tillbaka! </a>";
else {
if (isset($HTTP_COOKIE_VARS['NoSpamCookie'])) { 
echo "<b> För att förhindra spam så får du endast skicka ett meddelande var 3:e minut! </b>";
}else{
echo("Ditt mail har skickats");
mail($mmail, "Meddelande från $dnamn till $mnamn", "$meddelande", "From: $dnamn
<$dmail>"); 
$NoSpam = "NoSpam"; setcookie ("NoSpamCookie", $NoSpam, time() + 380); 
}
}
?>
```

Hmm, Ja nån som förstår vad jag menar och har nån ide hur jag kan lösa det? finns det något bättre sätt än Cookies?

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

## #2 — SPiN, 2002-08-11T09:14Z

```
}else{
echo("Ditt mail har skickats");
mail($mmail, "Meddelande från $dnamn till $mnamn", "$meddelande", "From: $dnamn
<$dmail>"); 
$NoSpam = "NoSpam"; setcookie ("NoSpamCookie", $NoSpam, time() + 380); 
}
```

Borde vara:

```
}else{
setcookie ("NoSpamCookie", "NoSpam", time() + 380);
echo("Ditt mail har skickats");
mail($mmail, "Meddelande från $dnamn till $mnamn", "$meddelande", "From: $dnamn
<$dmail>"); 
}
```

setcookie() ska alltid användas innan någon output skickas till klienten.

Cookies är väl det bästa sättet, eller sessions.

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

## #3 — Simpa, 2002-08-11T09:26Z

Hmm, Testat med det .. får fortfarande.. 
Warning: Cannot add header information - headers already sent by (output started at e:\\www\\www.simpa.se\\www\\php\\anonym\\email.php:7) in e:\\www\\www.simpa.se\\www\\php\\anonym\\email.php on line 27

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

## #4 — SPiN, 2002-08-11T09:31Z

Hur ser rad 27 ut?

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

## #5 — Simpa, 2002-08-11T11:02Z

$NoSpam = "NoSpam"; setcookie ("NoSpamCookie", $NoSpam, time() + 380);  :l

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

## #6 — SPiN, 2002-08-11T11:39Z

Flyttade du den raden som jag visade då? Alltså innan någon echo görs?

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

## #7 — SPiN, 2002-08-11T11:49Z

Och jag skulle nog överväga att helt strunta i echo för att visa felmeddelanden, om jag var du. Eftersom att scriptet ändå ska dö, så kan du använda dig av die() - det är snyggare och man slipper dessa varningar:

```
<?php
if( $_COOKIE[ 'NoSpamCookie' ] == "NoSpam" )
     die( "<b>Du får bara skicka var tredje minut.</b>" );
if( trim( $meddelande ) == "" )
     die( "<b>Ditt pulver! Du glömde ju fylla i meddelandet...</b>" );
if( trim( $namn ) == "" )
     die( "<b>Du måste ju ange ditt namn.</b>" );

setcookie( "NoSpamCookie", "NoSpam", time()+380 );

if( mail( "min@email.nu", "Ämne", $meddelande, "From: " . trim( $namn ) . "\n" ) )
     echo "Meddelandet skickades";
else
     echo "Meddelandet skickas INTE!";
?>
```

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

## #8 — Simpa, 2002-08-11T12:48Z

die() fin fin funktion :)

Tack SPiN nu ska vi se om jag får igång allt!

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

## #9 — Simpa, 2002-08-11T13:28Z

Fortfarande problem med Cookien :(

```php
<?php
if (isset($HTTP_COOKIE_VARS['NoSpamCookie'])) 
die ( "<b> För att förhindra spam så får du endast skicka ett meddelande var 3:e minut! </b>" );

if ($dnamn == ""){
unset ($dnamn);
$dnamn="Anonym";
}

if ($dmail == ""){
unset ($dmail);
$dmail="Anonym@Anonym.nu";
}

if ($mnamn == "") 
die ( "<b>Har inte mottagaren något namn?</b><br>Gå tillbaka och fyll i det: <a href=\"java script:history.go(-1);\">Tillbaka! </a>" );

if ($mmail == "")
die ( "<b> Du måste ju fylla i mottagarens e-post adress för att jag ska kunna skicka epostet :-)</b><br>Gå tillbaka och fyll i det: <a href=\"java script:history.go(-1);\">Tillbaka! </a>" );

if ($meddelande == "") 
die ( "<b>Om du inte skriver något meddelande så blir det väl rätt svårt för personen att läsa?!</b><br>Gå tillbaka och fyll i det: <a href=\"java script:history.go(-1);\">Tillbaka! </a>" );

$NoSpam = "NoSpam"; setcookie ("NoSpamCookie", $NoSpam, time() + 380); 

if ( mail($mmail, "Meddelande från $dnamn till $mnamn", $meddelande, "From: $dnamn <$dmail>") )
  echo " Mailet skickat :) ";
else 
 echo " Nåt vart fel, mailet vart inte skickat ";
?>
```

Warning: Cannot add header information - headers already sent by (output started at e:\\www\\www.simpa.se\\www\\php\\anonym\\email.php:7) in e:\\www\\www.simpa.se\\www\\php\\anonym\\email.php on line 30
Mailet skickat :)

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

## #10 — SPiN, 2002-08-11T14:16Z

Du har inget mellanslag, eller radbrytning innan din första PHP-tagg ( Dvs. \<?php )?

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

## #11 — Simpa, 2002-08-11T14:28Z

har iofs.. 
\<html\>\<head\>
\<title\>WOOO!\</title\>
\</head\>
\<body bgcolor="#000000" text="#CCCC33"\>
\<font face="verdana" size="-2" \>

Hur ska jag få in det på ett bra sätt då? :)

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

## #12 — Simpa, 2002-08-11T14:40Z

La in det så här: 
\<?php
echo " \<html\>\<head\>\<title\>Arbetar.. ;)!\</title\>\</head\> ";
echo " \<body bgcolor=\\"#000000\\" text=\\"#CCCC33"\> ";
echo " \<font face=\\"verdana' size=\\"2\\"\> ";

Men då fick jag felet: 
Parse error: parse error, unexpected '\<' in e:\\www\\www.simpa.se\\www\\php\\anonym\\email.php on line 4

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

## #13 — SPiN, 2002-08-11T14:42Z

Det får du dö med:

```
<?php
$htmlStart = "<html><head><title>WOOO!</title></head>";
$htmlStart .= "<body bgcolor=\"#000000\" text=\"#CCCC33\">";
$htmlStart .= "<font face=\"Verdana\" size=\"-2\">";

$htmlEnd = "</font></body></html>";

if( $_COOKIE[ 'NoSpamCookie' ] == "NoSpam" )
     die( $htmlStart . "<b>Du får bara rösta en gång var tredje minut!</b>" . $htmlEnd );
...
?>
```

Du får alltså inte ha nånting före PHP-taggen.

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

## #14 — Simpa, 2002-08-11T15:23Z

hmm oki Vad gör .= ? 

Stort tack

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

## #15 — Simpa, 2002-08-11T15:29Z

Funkar fin fint, tror jag förstår vad . gör nu :)

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

## #16 — SPiN, 2002-08-11T19:22Z

.= lägger till värdet efter uttrycket sist i variabeln före uttrycket.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/50031-problem-med-cookies-till-spam-skydd
