mboost-dp1
time penalty i php
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Jeg har lavet et lille sendmail script, som har til formål at man kan sende email til mig ved hjælp af en simpel form. Hvis jeg nu gerne vil sørge for at der ikke er nogen som reloader siden, og på den måde laver mailspam, hvad gør jeg så?
hvis jeg benytter en cookie, sammen med min mail funktion, hvordan stiller jeg det så op? har prøvet med:
setcookie("ma_il", time()+10, time()+10);
mail("[email protected]",
"$emne",
"$besked",
"From: $epost");
echo "Mail er sendt til min adresse.";
Hvordan kalder jeg den så frem igen?
setcookie("ma_il", time()+10, time()+10);
mail("[email protected]",
"$emne",
"$besked",
"From: $epost");
echo "Mail er sendt til min adresse.";
Hvordan kalder jeg den så frem igen?
#3
Tjek om cookien har en værdi.
if (!isset($_COOKIE["ma_il"])) {
setcookie("ma_il", time()+10, time()+10);
mail("[email protected]",
"$emne",
"$besked",
"From: $epost");
echo "Mail er sendt til min adresse.";
} else {
echo "Du har allerede sendt mig en mail.";
}
---
Det burde virke
Tjek om cookien har en værdi.
if (!isset($_COOKIE["ma_il"])) {
setcookie("ma_il", time()+10, time()+10);
mail("[email protected]",
"$emne",
"$besked",
"From: $epost");
echo "Mail er sendt til min adresse.";
} else {
echo "Du har allerede sendt mig en mail.";
}
---
Det burde virke
ligemeget, problemet er løst. Fandt ud af at setcookie("ma_il", time()+10, time()+10); skulle placeres helt oppe i <head>.. Derefter kunne jeg så skrive:
________________________
if ($_COOKIE["ma_il"] < time() ) {
mail("enellerandenadresse@domæne.com",
"$emne",
"$besked",
"From: $epost");
echo "Mail er sendt til min adresse.";
} else {
echo "Vent venligst minimum 10 sekunder før du sender en ny email.";
}
____________________
det fungere ihvertfald fint.. :)
________________________
if ($_COOKIE["ma_il"] < time() ) {
mail("enellerandenadresse@domæne.com",
"$emne",
"$besked",
"From: $epost");
echo "Mail er sendt til min adresse.";
} else {
echo "Vent venligst minimum 10 sekunder før du sender en ny email.";
}
____________________
det fungere ihvertfald fint.. :)
Husk så lige at cookies kan kontrolleres af brugeren, og derved kan spamme løst alt hvad man vil :D
Måske skal du registrerer ip'er istedet?
Måske skal du registrerer ip'er istedet?
#7
Jah, men det er nemmere med en session. Så skal browseren trods alt genstartes hver gang stadig.
Og self skal man sætte cookies og sessions i starten af ens doc. Doh mig
Jah, men det er nemmere med en session. Så skal browseren trods alt genstartes hver gang stadig.
Og self skal man sætte cookies og sessions i starten af ens doc. Doh mig
hvad skal jeg så gøre for at være helt ikker på at folk ikke spammer mig? :P
Er der nogen der kan give mig et konkret eksempel, evt. bygget på det jeg skrev før? :S
Er der nogen der kan give mig et konkret eksempel, evt. bygget på det jeg skrev før? :S
Uden at kigge det alt for grundigt igennem, fandt jeg det her link:
http://www.koders.com/php/fid9F965687A02A334F19171...
Især er denne del spændende:
$ip = $_SERVER['REMOTE_ADDR'];
$disable_submit = false;
if (isset($poll['ip'][$ip]) and ((time() - $poll['ip'][$ip]) < 20*60)) {
//view at least the result or disable the Go button
$html = HTML(HTML::strong(
_("Sorry! You must wait at least 20 minutes until you can vote again!")));
$html->pushContent($this->doPoll(&$page, &$request, $request->getArg('answer'),true));
return $html;
}
$poll['ip'][$ip] = time();
// purge older ip's
foreach ($poll['ip'] as $ip => $time) {
if ((time() - $time) > 21*60)
unset($poll['ip'][$ip]);
}
Men du skal nok lige skrive det lidt om, før det passer til dig :D
Jeg fandt også lige denne side: http://www.advancescripts.com/detailed/119.html
Der findes mange måder du kan lave denne slags kode på, men her kan du da få lidt inspiration.
Held og lykke med dit projekt.
Mvh
Klok
http://www.koders.com/php/fid9F965687A02A334F19171...
Især er denne del spændende:
$ip = $_SERVER['REMOTE_ADDR'];
$disable_submit = false;
if (isset($poll['ip'][$ip]) and ((time() - $poll['ip'][$ip]) < 20*60)) {
//view at least the result or disable the Go button
$html = HTML(HTML::strong(
_("Sorry! You must wait at least 20 minutes until you can vote again!")));
$html->pushContent($this->doPoll(&$page, &$request, $request->getArg('answer'),true));
return $html;
}
$poll['ip'][$ip] = time();
// purge older ip's
foreach ($poll['ip'] as $ip => $time) {
if ((time() - $time) > 21*60)
unset($poll['ip'][$ip]);
}
Men du skal nok lige skrive det lidt om, før det passer til dig :D
Jeg fandt også lige denne side: http://www.advancescripts.com/detailed/119.html
Der findes mange måder du kan lave denne slags kode på, men her kan du da få lidt inspiration.
Held og lykke med dit projekt.
Mvh
Klok
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.