[PHP] 10 minuten interval

Gestart doorOne2xs13 reacties22 weergaven

14 berichten · pagina 1 van 1

One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Hallo,

Ik heb een e-mail script gemaakt waarmee mensen anoniem een mail kunnen versturen.
Nu wil ik dat gelogd hebben in een database voor de datum, en dan wil ik dat je niet binnen 10 minuten nog een mail kan sturen.
Dus als je een mail verstuurd moet je 10 minuten wachten voordat je nog een mail kan sturen.
Hoe maak je dat? Ik hoef alleen de query te weten die kijkt of er al 10 minuten tussen zit met jouw ip.

[COLOR= #0000BB]<?php[/COLOR] 
[COLOR= #FF8000]// Auteur: Jelle Schneiders
// Niks kopiëren zonder toestemming[/COLOR]
[URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/IsSet"]IsSet[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]submit[/COLOR][COLOR= #007700]])) 
{[/COLOR] 
    [COLOR= #0000BB]$naam_ontvanger[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]naar_naam[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$email_ontvanger[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]naar_emailadres[/COLOR][COLOR= #007700]];[/COLOR] 

    [COLOR= #0000BB]$naam_verzender[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]van_naam[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$email_verzender[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]van_emailadres[/COLOR][COLOR= #007700]];[/COLOR] 

    [COLOR= #0000BB]$onderwerp[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]onderwerp[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$bericht_verzender[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]bericht_verzender[/COLOR][COLOR= #007700]];[/COLOR] 


    [COLOR= #0000BB]$headers[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"From: "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$naam_verzender[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]" <"[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$email_verzender[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]">
"[/COLOR][COLOR= #007700];[/COLOR] 

    [COLOR= #0000BB]$bericht[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]""[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$bericht_verzender[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]""[/COLOR][COLOR= #007700];[/COLOR] 

    [URL="http://www.php.net/mail"]mail[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$email_ontvanger[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$onderwerp[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$bericht[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$headers[/COLOR][COLOR= #007700]);[/COLOR] 

[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]<div id="succes">Mail is verstuurd, over 10 minuten kan je nog een mail sturen!</div>[/COLOR][COLOR= #007700];
}[/COLOR] 
[URL="http://www.php.net/else"]else[/URL] 
[COLOR= #007700]{[/COLOR] 
    ?> 
    <form action="" method="post"> 
    Naam ontvanger: <input type="text" name="naar_naam"><br /> 
    Email ontvanger: <input type="text" name="naar_emailadres"><br /><br /> 
    Naam verzender: <input type="text" name="van_naam"><br /> 
    Email verzender: <input type="text" name="van_emailadres"><br /><br /> 
    Onderwerp: <input type="text" name="onderwerp"><br /> 
    bericht:<br /> 
    <textarea name="bericht_verzender"></textarea> 
    <br /><br /> 
    <input type="submit" name="submit" value="versturen"> 
    </form> 
    [COLOR= #0000BB]<?php[/COLOR] 
[COLOR= #007700]}[/COLOR] 
?>


Hopelijk kan het wink
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
verzin een betere titel, E-mail is wel erg globaal!!!!

1) Hoe weet ik als bezoeker zeker dat ze anoniem een mail kunnen versturen? Weet je zeker dat je webserver ook geen IP-adressen logt?
2) En wat als ik ongewenste mails ga krijgen?
3) isset() hoort niet, $_SERVER[REQUEST_METHOD] is de ENIGE JUISTE manier.
4) En wat als de mail niet verstuurd is door een falende mailserver, dan zie ik dat de mail gewoon verstuurd is: Valse voorlichting
5) Je bent gevoelig voor mail-header-injection. Iedereen kan eenvoudig je formulier gebruiken om spam te versturen, met kans op een gratis afsluiting van je provider in sommige gevallen.

Een tipje om je probleem op te lossen: INTERVAL 10 MINUTES (zolang je maar DATE(TIME) gebruikt)

DELETE FROM tabel
WHERE datumveld + INTERVAL 10 MINUTES < CURDATE()
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
CREATE TABLE IF NOT EXISTS `email` (
  `id` int(13) NOT NULL,
  `naamo` varchar(1000) NOT NULL,
  `emailo` varchar(5000) NOT NULL,
  `naamv` varchar(1000) NOT NULL,
  `emailv` varchar(5000) NOT NULL,
  `onderwerp` varchar(5000) NOT NULL,
  `bericht` varchar(10000) NOT NULL,
  `datum` datetime NOT NULL,
  `ip` varchar(500) NOT NULL
)


dat heb ik, maar ik wil niks verwijderen. ik wil alleen na 10 minuten dat je weer kan formulier invullen. dat doormiddel van
WHERE ip = " . $_SERVER[REMOTE_ADDR] . "
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Lekker tegenstrijdig:

Quote:

CREATE TABLE IF NOT EXISTS `email` (
  `id` int(13) NOT NULL,
  `naamo` varchar(1000) NOT NULL,
  `emailo` varchar(5000) NOT NULL,
  `naamv` varchar(1000) NOT NULL,
  `emailv` varchar(5000) NOT NULL,
  `onderwerp` varchar(5000) NOT NULL,
  `bericht` varchar(10000) NOT NULL,
  `datum` datetime NOT NULL,
  `ip` varchar(500) NOT NULL
)


en:

Quote:
Ik heb een e-mail script gemaakt waarmee mensen anoniem een mail kunnen versturen.
Sla dan liever alleen het IP op, die is niet herleidbaar naar een persoon.

Het opslaan van de IPs doe je voor twee doeleinden: Misbruik tegengaan, sla deze een lange tijd op. Loggen of iemand weer een mail mag versturen, in een tweede tabel dus.
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Aarclay schreef:
Lekker tegenstrijdig:

Quote:

CREATE TABLE IF NOT EXISTS `email` (
  `id` int(13) NOT NULL,
  `naamo` varchar(1000) NOT NULL,
  `emailo` varchar(5000) NOT NULL,
  `naamv` varchar(1000) NOT NULL,
  `emailv` varchar(5000) NOT NULL,
  `onderwerp` varchar(5000) NOT NULL,
  `bericht` varchar(10000) NOT NULL,
  `datum` datetime NOT NULL,
  `ip` varchar(500) NOT NULL
)
en:

Quote:
Ik heb een e-mail script gemaakt waarmee mensen anoniem een mail kunnen versturen.
Sla dan liever alleen het IP op, die is niet herleidbaar....

is goed, maar hoe moet je dan doen wat ik zal zei met where ip = en dan een interval van 10 minuten
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Zie mijn code in de tweede post hier.
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
CREATE TABLE IF NOT EXISTS `email` (
  `id` int(13) NOT NULL,
  `datum` datetime NOT NULL,
  `ip` varchar(500) NOT NULL
)


toevoeging op 14 juni 2012, 17:22:35:
Maar nu die interval.
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Ik citeer nogmaals:
Aarclay schreef:
Zie mijn code in de tweede post hier.
CTRL + F is je vriend... wink
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
DELETE FROM tabel
WHERE datumveld + INTERVAL 10 MINUTES < CURDATE()

maar ik wil niet verwijderen, maar even aanpassing kan je dat in dit script verwerken met echo dat het niet kan:

[COLOR= #0000BB]<?php[/COLOR] 
[URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/IsSet"]IsSet[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]submit[/COLOR][COLOR= #007700]])) 
{[/COLOR] 
    [COLOR= #0000BB]$naam_ontvanger[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]naar_naam[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$email_ontvanger[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]naar_emailadres[/COLOR][COLOR= #007700]];[/COLOR] 

    [COLOR= #0000BB]$naam_verzender[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]van_naam[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$email_verzender[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]van_emailadres[/COLOR][COLOR= #007700]];[/COLOR] 

    [COLOR= #0000BB]$onderwerp[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]onderwerp[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$bericht_verzender[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]bericht_verzender[/COLOR][COLOR= #007700]];[/COLOR] 


    [COLOR= #0000BB]$headers[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"From: "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$naam_verzender[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]" <"[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$email_verzender[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]">rn"[/COLOR][COLOR= #007700];[/COLOR] 

    [COLOR= #0000BB]$bericht[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]""[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$bericht_verzender[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]""[/COLOR][COLOR= #007700];[/COLOR] 

    [URL="http://www.php.net/mail"]mail[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$email_ontvanger[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$onderwerp[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$bericht[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$headers[/COLOR][COLOR= #007700]);[/COLOR] 

[URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"INSERT INTO email VALUES (
NULL,
NOW(),
"[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]REMOTE_ADDR[/COLOR][COLOR= #007700]] .[/COLOR] [COLOR= #DD0000]"
);
"[/COLOR][COLOR= #007700])[/COLOR] or [URL="http://www.php.net/die"]die[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_error"]mysql_error[/URL][COLOR= #007700]());[/COLOR]

[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]<div id="succes">Mail is verstuurd, over 10 minuten kunt u weer mailen!</div>[/COLOR][COLOR= #007700];
}[/COLOR] 
[URL="http://www.php.net/else"]else[/URL] 
[COLOR= #007700]{[/COLOR] 
    ?> 
    <form action="" method="post"> 
    Naam ontvanger: <input type="text" name="naar_naam"><br /> 
    Email ontvanger: <input type="text" name="naar_emailadres"><br /><br /> 
    Naam verzender: <input type="text" name="van_naam"><br /> 
    Email verzender: <input type="text" name="van_emailadres"><br /><br /> 
    Onderwerp: <input type="text" name="onderwerp"><br /> 
    bericht:<br /> 
    <textarea name="bericht_verzender"></textarea> 
    <br /><br /> 
    <input type="submit" name="submit" value="versturen"> 
    </form> 
    [COLOR= #0000BB]<?php[/COLOR] 
[COLOR= #007700]}[/COLOR] 
?>
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Aarclay schreef:
Het opslaan van de IPs doe je voor twee doeleinden: Misbruik tegengaan, sla deze een lange tijd op. Loggen of iemand weer een mail mag versturen, in een tweede tabel dus.
je wilt immers niet je log om zeep helpen....
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Aarclay schreef:
Eerdere citaten tonen
Aarclay schreef:
Het opslaan van de IPs doe je voor twee doeleinden: Misbruik tegengaan, sla deze een lange tijd op. Loggen of iemand weer een mail mag versturen, in een tweede tabel dus.
je wilt immers niet je log om zeep helpen....
oke, kan je dat dan even in dat script zetten:

[COLOR= #0000BB]<?php[/COLOR] 
[URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/IsSet"]IsSet[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]submit[/COLOR][COLOR= #007700]])) 
{[/COLOR] 
    [COLOR= #0000BB]$naam_ontvanger[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]naar_naam[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$email_ontvanger[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]naar_emailadres[/COLOR][COLOR= #007700]];[/COLOR] 

    [COLOR= #0000BB]$naam_verzender[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]van_naam[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$email_verzender[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]van_emailadres[/COLOR][COLOR= #007700]];[/COLOR] 

    [COLOR= #0000BB]$onderwerp[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]onderwerp[/COLOR][COLOR= #007700]];[/COLOR] 
    [COLOR= #0000BB]$bericht_verzender[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]bericht_verzender[/COLOR][COLOR= #007700]];[/COLOR] 


    [COLOR= #0000BB]$headers[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]"From: "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$naam_verzender[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]" <"[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$email_verzender[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]">rn"[/COLOR][COLOR= #007700];[/COLOR] 

    [COLOR= #0000BB]$bericht[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]""[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$bericht_verzender[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]""[/COLOR][COLOR= #007700];[/COLOR] 

    [URL="http://www.php.net/mail"]mail[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$email_ontvanger[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$onderwerp[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$bericht[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$headers[/COLOR][COLOR= #007700]);[/COLOR] 

[URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"INSERT INTO email VALUES (
NULL,
NOW(),
"[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]REMOTE_ADDR[/COLOR][COLOR= #007700]] .[/COLOR] [COLOR= #DD0000]"
);
"[/COLOR][COLOR= #007700])[/COLOR] or [URL="http://www.php.net/die"]die[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_error"]mysql_error[/URL][COLOR= #007700]());[/COLOR]

[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]<div id="succes">Mail is verstuurd, over 10 minuten kunt u weer mailen!</div>[/COLOR][COLOR= #007700];
}[/COLOR] 
[URL="http://www.php.net/else"]else[/URL] 
[COLOR= #007700]{[/COLOR] 
    ?> 
    <form action="" method="post"> 
    Naam ontvanger: <input type="text" name="naar_naam"><br /> 
    Email ontvanger: <input type="text" name="naar_emailadres"><br /><br /> 
    Naam verzender: <input type="text" name="van_naam"><br /> 
    Email verzender: <input type="text" name="van_emailadres"><br /><br /> 
    Onderwerp: <input type="text" name="onderwerp"><br /> 
    bericht:<br /> 
    <textarea name="bericht_verzender"></textarea> 
    <br /><br /> 
    <input type="submit" name="submit" value="versturen"> 
    </form> 
    [COLOR= #0000BB]<?php[/COLOR] 
[COLOR= #007700]}[/COLOR] 
?>
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Bij elke hit op de site voer je die DELETE query uit. Verder is het een kwestie van kijken in de database (met mysql_num_rows()) of het IP voorkomt.

Zo ja: Toon een error dat je moet wachten
Zo nee: Mailen maar....

Tevens vraag ik je vriendelijk naar mijn 5 punten te kijken in mijn eerste reactie.
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Aarclay schreef:
verzin een betere titel, E-mail is wel erg globaal!!!!

1) Hoe weet ik als bezoeker zeker dat ze anoniem een mail kunnen versturen? Weet je zeker dat je webserver ook geen IP-adressen logt?
2) En wat als ik ongewenste mails ga krijgen?
3) isset() hoort niet, $_SERVER[REQUEST_METHOD] is de ENIGE JUISTE manier.
4) En wat als de mail niet verstuurd is door een falende mailserver, dan zie ik dat de mail gewoon verstuurd is: Valse voorlichting
5) Je bent gevoelig voor mail-header-injection. Iedereen kan eenvoudig je formulier gebruiken om spam te versturen, met kans op een gratis afsluiting van je provider in sommige gevallen.

Een tipje om je probleem op te lossen: INTERVAL 10 MINUTES (zolang je maar DATE(TIME) gebruikt)
DELETE FROM tabel
WHERE datumveld + INTERVAL 10 MINUTES < CURDATE()


Afsluiting? Hoe bedoel je, blokkeert one2xs me dan?
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Zou kunnen, als er veel overlast kan zijn....
Dus bescherm je tegen header injection, en gebruik bij voorkeur phpMailer...

Kijk ook naar de andere tips s.v.p.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren