Huhu Leutz!
Hab ein großes Problem.. Seit geraumer Zeit wird unsre Shoutbox von
www.pfeit.at immer vollgespammt.. eigenldich wird aber auf Links geprüft.. wenn auch primitiv (bin ganz und gar kein php fux) vll kann mir jemand helfen und ne Spam Sperre einbauen.
Ursprünglich war das die Shoutbox die user-173 für Jex-Treme gecodet hat..
code:
shoutbox.php
<div class="marg">
<?PHP
#----------------------------------------------#
# Copyright 2005 by Maximilian 'Erdo' Fitting #
# just made for jex-treme.de! #
# Dieses Script darf nur auf jex-treme.de zum #
# Download angeboten werden! Der Verweis auf #
# die Seite unten im Script darf *nicht* #
# entfernt werden! #
# Version 1.0 #
#----------------------------------------------#
#
# Wenn du einen Eintrag löschen möchtest,
# musst du einfach nur auf die Raute #
# neben dem Eintrag klicken und das Passwort
# eingeben.
/* Config */
# Hierbei musst du aufpassen, dass du immer das NACH dem Komma
# änderst! Ändere NIE das GROßGESCHRIEBENE vor dem Komma,
# sonst geht hier nix mehr
define ('SPAMTIME', 1); //Nach wie viel Minuten der nächste Eintrag?
define ('ADMIN', ''; //Passwort zum Löschen der Einträge
define ('PATH', ''; //Pfad zum Ordner, in dem diese Datei liegt
define ('HTML', 0); //Soll HTML erlaubt werden? 0 = Nein, 1 = Ja
define ('LIMIT', 40); //Wie viele Einträge sollen angezeigt werden?
define ('SPLIT', 30); //Nach wie vielen ununterbrochenen Zeichen soll ein Absatz erfolgen?
define ('MYSQLHOST', 'localhost'; //Host von MySQL Datenbank, meist localhost
define ('MYSQLUSER', ''; //Username von MySQL Datenbank
define ('MYSQLPWD', ''; //Passwort von MySQL Datenbank
define ('MYSQLDB', ''; //Name der Datenbank MySQL
define ('TABLE', 'pfeitshout'; //Name der Tabelle für Einträge
/* Start Connection */
$connection = mysql_connect(MYSQLHOST, MYSQLUSER, MYSQLPWD) or die ('Keine Verbindung möglich!';
mysql_select_db(MYSQLDB) or die ('Die Datenbank existiert nicht!';
/* Install Table */
$test = @mysql_query('SELECT * FROM `' . TABLE . '`';
$error = mysql_errno();
if($error == 1146) {
if (mysql_query ('CREATE TABLE `' . TABLE . '` (
`id` int(11) unsigned NOT NULL auto_increment,
`userip` varchar(150) NOT NULL default \'\',
`time` int(11) NOT NULL default \'0\',
`nickname` varchar(250) NOT NULL default \'\',
`message` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM ;') {
echo 'Tabelle wurde hinzugefügt. Jetzt sollte die Shoutbox funktionieren.';
} else {
echo 'Tabelle konnte nicht hinzugefügt werden: ' . mysql_error();
}
}
/* Functions */
function cutLongWords ($text, $bruch) {
$count = 0;
for ($i = 0; $i < strlen($text); $i++) {
if (substr($text, $i,1)== ' ' {
$count = 0;
} else {
$count++;
}
if ($count > $bruch) {
$text = substr($text, 0, $i) . '<br>' . substr($text, $i, strlen($text));
$count = 0;
}
}
return $text;
}
function getSpam ($userip) {
$diff = time() - (SPAMTIME*60);
$query = mysql_query ('SELECT COUNT(*) AS cnt FROM `' . TABLE . '` WHERE `userip` = "' . $userip . '" AND `time` > ' . $diff);
$count = mysql_fetch_assoc ($query);
if ($count['cnt'] == 1) {
return false;
} else {
return true;
}
}
function getTime ($timestamp) {
$yesterday = mktime (0, 0, 0, date("m", date("d"-1, date("Y");
if (date('dny', $timestamp) == date('dny', time())) {
return 'Heute ' . date('H:i', $timestamp) . ' Uhr';
} else if (date('dny', $timestamp) == date('dny', $yesterday)) {
return 'Gestern ' . date('H:i', $timestamp) . ' Uhr';
} else {
$monate = array(1=>"Jan", 2=>"Feb", 3=>"Mär", 4=>"Apr", 5=>"Mai", 6=>"Jun", 7=>"Jul", 8=>"Aug", 9=>"Sep", 10=>"Okt", 11=>"Nov", 12=>"Dez"
return ' ' . date('d', $timestamp) . '. ' . $monate[date('n', $timestamp)] . ' ' . date('y', $timestamp) . ' um ' . date('H:i', $timestamp) . ' ';
}
}
/* Save Entries */
if (isset ($_POST['send']) and !isset($_GET['del'])) {
$_POST['nickname'] = trim ($_POST['nickname']);
$_POST['nickname'] = addslashes ($_POST['nickname']);
$_POST['message'] = trim ($_POST['message']);
$_POST['message'] = addslashes ($_POST['message']);
/* Links in der Nachricht? */
$nolink = eregi('<a', $_POST['message']);
if($_SERVER['REMOTE_ADDR'] == "87.243.150.229"
{
$sari = true;
}
else
$sari = false;
if ((empty ($_POST['nickname'])) or (empty ($_POST['message'])) or ($_POST['message'] == 'Nachricht' or ($_POST['nickname'] == 'Nickname') {
echo 'Du musst beide Felder ausfüllen. <a href="' . $_SERVER['PHP_SELF'] . '?' . $_POST['url'] . '">zurück</a>';
} else {
if (!getSpam ($_SERVER['REMOTE_ADDR'])) {
echo 'Du darfst nur alle ' . SPAMTIME . 'min schreiben. <a href="' . $_SERVER['PHP_SELF'] . '?' . $_POST['url'] . '">zurück</a>';
} else {
if(!$nolink == true){
if($sari == false){
mysql_query ('INSERT INTO `' . TABLE . '` (`userip`, `time`, `nickname`, `message`) VALUES ("' . $_SERVER['REMOTE_ADDR'] . '", ' . time() . ', "' . $_POST['nickname'] . '", "' . $_POST['message'] . '"';
echo '<script language="javascript" type="text/javascript">window.location.href = "' . $_SERVER['PHP_SELF'] . '?' . $_POST['url'] . '";</script>';
}
}
}
}
/* Delete one Entry */
} else if (isset ($_GET['del'])) { ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?del=<?php echo $_GET['del']; ?>" name="delete" method="POST">
Passwort: <input type="password" name="password" class="field" value="" size="25"><br>
<input type="submit" name="delete" value="Löschen" class="field">
</form>
<?php
if (isset ($_POST['delete'])) {
if ($_POST['password'] == ADMIN) {
mysql_query ('DELETE FROM `' . TABLE . '` WHERE `id` = ' . $_GET['del']);
echo 'Eintrag wurde gelöscht.';
} else {
echo 'Falsches Passwort!';
}
}
/* Read out Entries */
} else if (!isset ($_GET['del']) and !isset ($_POST['send'])) {
$query = mysql_query ('SELECT id, time, nickname, message FROM `' . TABLE . '` ORDER BY `time` DESC LIMIT 0, ' . LIMIT);
echo mysql_error();
while ($row = mysql_fetch_assoc ($query)) {
$row['message'] = cutLongWords ($row['message'], SPLIT);
if (!HTML) {
$row['text'] = htmlspecialchars ($row['text']);
}
echo '<div class="sb_nick">' . stripslashes ($row['nickname']) . '</div>';
echo "\n";
echo '<div class="sb_date">' . getTime($row['time']) . '</div>';
echo "\n";
echo '<div class="sb_message">' . stripslashes ($row['message']) . '</div><br />';
echo "\n\n";
} } ?>
</div>
entry.php
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" name="send" method="POST">
<input type="hidden" name="url" value="<?php echo $_SERVER['QUERY_STRING']; ?>">
<input type="text" class="field" name="nickname" onFocus="if (value == 'Name' {value =''}" value="Name" size="16" maxlength="20"><br>
<input type="text" class="field" name="message" onFocus="if (value == 'Nachricht' {value =''}" value="Nachricht" size="16" maxlength="100"><br>
<center><input type="submit" class="field" name="send" value="Eintragen">
</form>
bitte um HILFE!