hulp nodig bij gastenboek spam

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

03/06/2005 23:10:00
Quote Anchor link
Hoi
Als eerste: ik ben een leek op het gebied van php, maar heb nu eindelijk een gastuhboekje op een site staan, maar die wordt nu gespammed.
Ik had er een uit texas, en die heb ik als volgt geblokked: if ( $FORM{'country'} eq 'TEXAS') {
&no_comments
}
dat werkt, maar nu wil ik eigenlijk nog zoiets als:
if ( "$FORM{'comments'} ??????? porno OF viagra OF poker OF etc. bevat {
&no_comments
}
Hoe zou ik dat nou in een mooi regeltje kunnen zetten??

Alvast bedankt voor de reakties.
Fred
 
PHP hulp

PHP hulp

15/11/2024 18:58:56
 
Alfred -

Alfred -

03/06/2005 23:19:00
Quote Anchor link
Je kan een soort 'vuile woorden' filter maken...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?
$tekst
= "dit is een vieze tekst";

$tekst = str_replace("vieze", "***", $tekst);

echo $tekst;
# dit is een *** tekst
?>


Je kan de scheldwoorden etc ook in een array stoppen voor zover ik weet ;)

Misschien heb je hier wat aan :)
 
Jelmer -

Jelmer -

03/06/2005 23:30:00
Quote Anchor link
Ik denk dat je meer iets in de richting van stristr() nodig hebt.
 

04/06/2005 08:30:00
Quote Anchor link
Nou ik snap er nog niet veel van, die stristr is hoofdletter ongevoelig, dus dat is wel mooi. maar wat ik dus begrijp is dat je het niet in EEN regel kunt zetten??

Die "vieze"woorden hoeft hij niet te veranderen, ik wil dat hij de comments gewoon leegmaakt : dan moet diegene lekker alles overtypen. (hetzelfde als bij "texas".
Groet fred

p.s. ik weet alleen dat php een soort computer/java taal is :(
 
Jelmer -

Jelmer -

04/06/2005 09:36:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$antiwoorden
= array();
$antiwoorden[] = 'viagra';
$antiwoorden[] = 'penis';
$antiwoorden[] = 'enlarge';
//enz...

function isSpam($string){
global $antiwoorden;
$spam = false;
   foreach($antiwoorden as $woord){
      if(stristr($string, $woord)){
         $spam = true;
      }
   }

   return $spam;
}

?>

Nu kun je dus hetvolgende gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!isSpam($_POST['comment'])){
//bericht toevoegen bij andere reacties
}
?>


edit: parameters in stristr verkeert om ^^,
Gewijzigd op 04/06/2005 09:37:00 door Jelmer -
 

04/06/2005 13:40:00
Quote Anchor link
Okay thnxs, zal dat even gaan uitproberen, of het gaat werken weet ik nog niet, daar jij andere variabele gebruik dan degene die in mijn script staan, maar zal wel ff proberen.
Ik laat het t.z.t wel weten of het werkt.
Groetjes Fred
 

04/06/2005 14:19:00
Quote Anchor link
Ohh, ik bega een foutje denk ik: dat gastuhbookje draait onder perl : #!/usr/bin/perl
Dat is zeker anders dan php, want dat scriptje van Jelmer krijg ik nog niet werkend :( maar dat zal wel aan mij liggen denk ik :(
Groetjes Fred
 

04/06/2005 14:37:00
Quote Anchor link
Even ter aanvulling en ter verduidelijking: het moet eigenlijk in dit script komen:
#!/usr/bin/perl
##############################################################################
# Guestbook Version 2.3.1 #
# Copyright 1996 Matt Wright [email protected] #
# Created 4/21/95 Last Modified 10/29/95 #
# Scripts Archive at: http://www.scriptarchive.com/ #
##############################################################################
# COPYRIGHT NOTICE #
# Copyright 1996 Matthew M. Wright All Rights Reserved. #
# #
# Guestbook may be used and modified free of charge by anyone so long as #
# this copyright notice and the comments above remain intact. By using this #
# code you agree to indemnify Matthew M. Wright from any liability that #
# might arise from it's use. #
# #
# Selling the code for this program without prior written consent is #
# expressly forbidden. In other words, please ask first before you try and #
# make money off of my program. #
# #
# Obtain permission before redistributing this software over the Internet or #
# in any other medium. In all cases copyright and header must remain intact.#
##############################################################################
# Set Variables

$guestbookurl = "http://your.host.com/~yourname/guestbook.html";
$guestbookreal = "/home/yourname/public_html/guestbook.html";
$guestlog = "/home/yourname/public_html/guestlog.html";
$cgiurl = "http://your.host.com/cgi-bin/guestbook.pl";
$date_command = "/usr/bin/date";

# Set Your Options:
$mail = 0; # 1 = Yes; 0 = No
$uselog = 1; # 1 = Yes; 0 = No
$linkmail = 1; # 1 = Yes; 0 = No
$separator = 1; # 1 = <hr>; 0 = <p>
$redirection = 0; # 1 = Yes; 0 = No
$entry_order = 1; # 1 = Newest entries added first;
# 0 = Newest Entries added last.
$remote_mail = 0; # 1 = Yes; 0 = No
$allow_html = 1; # 1 = Yes; 0 = No
$line_breaks = 0; # 1 = Yes; 0 = No

# If you answered 1 to $mail or $remote_mail you will need to fill out
# these variables below:
$mailprog = '/usr/lib/sendmail';
$recipient = '[email protected]';

# Done
##############################################################################

# Get the Date for Entry
$date = `$date_command +"%A, %B %d, %Y at %T (%Z)"`; chop($date);
$shortdate = `$date_command +"%D %T %Z"`; chop($shortdate);

# Get the input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);

# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;

if ($allow_html != 1) {
$value =~ s/<([^>]|\n)*>//g;
}

$FORM{$name} = $value;
}

# Print the Blank Response Subroutines
&no_comments unless $FORM{'comments'};
&no_name unless $FORM{'realname'};

# Begin the Editing of the Guestbook File
open (FILE,"$guestbookreal") || die "Can't Open $guestbookreal: $!\n";
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;

# Open Link File to Output
open (GUEST,">$guestbookreal") || die "Can't Open $guestbookreal: $!\n";

for ($i=0;$i<=$SIZE;$i++) {
$_=$LINES[$i];
if (/<!--begin-->/) {

if ($entry_order eq '1') {
print GUEST "<!--begin-->\n";
}

if ($line_breaks == 1) {
$FORM{'comments'} =~ s/\cM\n/<br>\n/g;
}

print GUEST "<b>$FORM{'comments'}</b><br>\n";

if ($FORM{'url'}) {
print GUEST "<a href=\"$FORM{'url'}\">$FORM{'realname'}</a>";
}
else {
print GUEST "$FORM{'realname'}";
}

if ( $FORM{'username'} ){
if ($linkmail eq '1') {
print GUEST " \&lt;<a href=\"mailto:$FORM{'username'}\">";
print GUEST "$FORM{'username'}</a>\&gt;";
}
else {
print GUEST " &lt;$FORM{'username'}&gt;";
}
}

print GUEST "<br>\n";

if ( $FORM{'city'} ){
print GUEST "$FORM{'city'},";
}

if ( $FORM{'state'} ){
print GUEST " $FORM{'state'}";
}

if ( $FORM{'country'} ){
print GUEST " $FORM{'country'}";
}

if ($separator eq '1') {
print GUEST " - $date<hr>\n\n";
}
else {
print GUEST " - $date<p>\n\n";
}

if ($entry_order eq '0') {
print GUEST "<!--begin-->\n";
}

}
else {
print GUEST $_;
}
}

close (GUEST);

# Log The Entry

if ($uselog eq '1') {
&log('entry');
}


#########
# Options

# Mail Option
if ($mail eq '1') {
open (MAIL, "|$mailprog $recipient") || die "Can't open $mailprog!\n";

print MAIL "Reply-to: $FORM{'username'} ($FORM{'realname'})\n";
print MAIL "From: $FORM{'username'} ($FORM{'realname'})\n";
print MAIL "Subject: Entry to Guestbook\n\n";
print MAIL "You have a new entry in your guestbook:\n\n";
print MAIL "------------------------------------------------------\n";
print MAIL "$FORM{'comments'}\n";
print MAIL "$FORM{'realname'}";

if ( $FORM{'username'} ){
print MAIL " <$FORM{'username'}>";
}

print MAIL "\n";

if ( $FORM{'city'} ){
print MAIL "$FORM{'city'},";
}

if ( $FORM{'state'} ){
print MAIL " $FORM{'state'}";
}

if ( $FORM{'country'} ){
print MAIL " $FORM{'country'}";
}

print MAIL " - $date\n";
print MAIL "------------------------------------------------------\n";

close (MAIL);
}

if ($remote_mail eq '1' && $FORM{'username'}) {
open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!\n";

print MAIL "To: $FORM{'username'}\n";
print MAIL "From: $recipient\n";
print MAIL "Subject: Entry to Guestbook\n\n";
print MAIL "Thank you for adding to my guestbook.\n\n";
print MAIL "------------------------------------------------------\n";
print MAIL "$FORM{'comments'}\n";
print MAIL "$FORM{'realname'}";

if ( $FORM{'username'} ){
print MAIL " <$FORM{'username'}>";
}

print MAIL "\n";

if ( $FORM{'city'} ){
print MAIL "$FORM{'city'},";
}

if ( $FORM{'state'} ){
print MAIL " $FORM{'state'}";
}

if ( $FORM{'country'} ){
print MAIL " $FORM{'country'}";
}

print MAIL " - $date\n";
print MAIL "------------------------------------------------------\n";

close (MAIL);
}

# Print Out Initial Output Location Heading
if ($redirection eq '1') {
print "Location: $guestbookurl\n\n";
}
else {
&no_redirection;
}

#######################
# Subroutines

sub no_comments {
print "Content-type: text/html\n\n";
print "<html><head><title>No Comments</title></head>\n";
print "<body><h1>Your Comments appear to be blank</h1>\n";
print "The comment section in the guestbook fillout form appears\n";
print "to be blank and therefore the Guestbook Addition was not\n";
print "added. Please enter your comments below.<p>\n";
print "<form method=POST action=\"$cgiurl\">\n";
print "Your Name:<input type=text name=\"realname\" size=30 ";
print "value=\"$FORM{'realname'}\"><br>\n";
print "E-Mail: <input type=text name=\"username\"";
print "value=\"$FORM{'username'}\" size=40><br>\n";
print "City: <input type=text name=\"city\" value=\"$FORM{'city'}\" ";
print "size=15>, State: <input type=text name=\"state\" ";
print "value=\"$FORM{'state'}\" size=15> Country: <input type=text ";
print "name=\"country\" value=\"$FORM{'country'}\" size=15><p>\n";
print "Comments:<br>\n";
print "<textarea name=\"comments\" COLS=60 ROWS=4></textarea><p>\n";
print "<input type=submit> * <input type=reset></form><hr>\n";
print "Return to the <a href=\"$guestbookurl\">Guestbook</a>.";
print "\n</body></html>\n";

# Log The Error
if ($uselog eq '1') {
&log('no_comments');
}

exit;
}

sub no_name {
print "Content-type: text/html\n\n";
print "<html><head><title>No Name</title></head>\n";
print "<body><h1>Your Name appears to be blank</h1>\n";
print "The Name Section in the guestbook fillout form appears to\n";
print "be blank and therefore your entry to the guestbook was not\n";
print "added. Please add your name in the blank below.<p>\n";
print "<form method=POST action=\"$cgiurl\">\n";
print "Your Name:<input type=text name=\"realname\" size=30><br>\n";
print "E-Mail: <input type=text name=\"username\"";
print " value=\"$FORM{'username'}\" size=40><br>\n";
print "City: <input type=text name=\"city\" value=\"$FORM{'city'}\" ";
print "size=15>, State: <input type=text name=\"state\" ";
print "value=\"$FORM{'state'}\" size=2> Country: <input type=text ";
print "value=USA name=\"country\" value=\"$FORM{'country'}\" ";
print "size=15><p>\n";
print "Comments have been retained.<p>\n";
print "<input type=hidden name=\"comments\" ";
print "value=\"$FORM{'comments'}\">\n";
print "<input type=submit> * <input type=reset><hr>\n";
print "Return to the <a href=\"$guestbookurl\">Guestbook</a>.";
print "\n</body></html>\n";

# Log The Error
if ($uselog eq '1') {
&log('no_name');
}

exit;
}

# Log the Entry or Error
sub log {
$log_type = $_[0];
open (LOG, ">>$guestlog");
if ($log_type eq 'entry') {
print LOG "$ENV{'REMOTE_HOST'} - [$shortdate]<br>\n";
}
elsif ($log_type eq 'no_name') {
print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No Name<br>\n";
}
elsif ($log_type eq 'no_comments') {
print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No ";
print LOG "Comments<br>\n";
}
}

# Redirection Option
sub no_redirection {

# Print Beginning of HTML
print "Content-Type: text/html\n\n";
print "<html><head><title>Thank You</title></head>\n";
print "<body><h1>Thank You For Signing The Guestbook</h1>\n";

# Print Response
print "Thank you for filling in the guestbook. Your entry has\n";
print "been added to the guestbook.<hr>\n";
print "Here is what you submitted:<p>\n";
print "<b>$FORM{'comments'}</b><br>\n";

if ($FORM{'url'}) {
print "<a href=\"$FORM{'url'}\">$FORM{'realname'}</a>";
}
else {
print "$FORM{'realname'}";
}

if ( $FORM{'username'} ){
if ($linkmail eq '1') {
print " &lt;<a href=\"mailto:$FORM{'username'}\">";
print "$FORM{'username'}</a>&gt;";
}
else {
print " &lt;$FORM{'username'}&gt;";
}
}

print "<br>\n";

if ( $FORM{'city'} ){
print "$FORM{'city'},";
}

if ( $FORM{'state'} ){
print " $FORM{'state'}";
}

if ( $FORM{'country'} ){
print " $FORM{'country'}";
}

print " - $date<p>\n";

# Print End of HTML
print "<hr>\n";
print "<a href=\"$guestbookurl\">Back to the Guestbook</a>\n"; print "- You may need to reload it when you get there to see your\n";
print "entry.\n";
print "</body></html>\n";

exit;
}


Alvast bedankt Fred
 
Jelmer -

Jelmer -

04/06/2005 15:11:00
Quote Anchor link
Dat lijkt inderdaad veel op PHP, maar is wel degelijk PERL. En helaas zijn er hier waarschijnlijk niet zoveel mensen die je daar mee kunnen helpen aangezien dit een website is over PHP.

Ik denk dat je dan op zoek zal moeten gaan naar een perl-handleiding en de perl equivalent van stristr (zoek string in langere string) zal moeten opzoeken.
 

04/06/2005 15:37:00
Quote Anchor link
Bedankt jelmer
ik heb nu dzperl en een perl dir op de pc, dus kan nu ff lekker klooien en testen: dan geeft hij ook meteen fouten weer: is wel makkelijk.
Dus ik zal maar ff opzoek gaan naar een perl forum :)
I.i.g. bedankt voor jullie hulp

Fred
 
Mitch X

Mitch X

04/06/2005 15:43:00
Quote Anchor link
Of je wacht even op Arend :)
Hij is onze PERL freak ^^
 
Elwin - Fratsloos

Elwin - Fratsloos

04/06/2005 15:51:00
Quote Anchor link
Mitch:
Of je wacht even op Arend :)
Hij is onze PERL freak ^^
Hehehe... ben jij mij even voor.. :)

Edit:
Maar dan kan je vaak lang wachten.. ;)

Elwin
Gewijzigd op 04/06/2005 15:51:00 door Elwin - Fratsloos
 
Jelmer -

Jelmer -

04/06/2005 16:18:00
Quote Anchor link
Ja, pm-en mag niet meer hè ^^,
 

04/06/2005 18:33:00
Quote Anchor link
okay, dan w8 ik wel ff op Arend :)
 

04/06/2005 21:07:00
Quote Anchor link
Nou ik ben al op de goed weg, het is wel omslachtig, maar nu moet ik dus nog ff een array o.i.d. maken met nog een $ command
Kijk maar hoe ik het nu doe :(

if ( $FORM{'comments'} =~ /TEXAS/i){
&no_comments
}
if ( $FORM{'comments'} =~ /poker/i){
&no_comments
}
if ( $FORM{'comments'} =~ /cialis/i){
&no_comments
}
if ( $FORM{'comments'} =~ /casino/i){
&no_comments
}
if ( $FORM{'comments'} =~ /valium/i){
&no_comments
}
if ( $FORM{'comments'} =~ /prozak/i){
&no_comments
}
if ( $FORM{'comments'} =~ /adipex/i){
&no_comments
}
if ( $FORM{'comments'} =~ /phentermine/i){
&no_comments
}
if ( $FORM{'comments'} =~ /ambien/i){
&no_comments
}

Groetjes Fred
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.