vpGuestbook - Gästebuchmodul für die 4.6.x

Oldperl
Beiträge: 4014
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von Oldperl » Mo 9. Aug 2010, 13:52

Hallo Armin,

am einfachsten im anderen Beitrag eine entsprechende Anfrage stellen. :roll:
Dort gibt es ja offensichtlich User die das Modul dort bereits Laufen haben und dir dementsprechend helfen können (sollten). :-)

Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

BagHira
Beiträge: 486
Registriert: Do 23. Feb 2006, 19:42
Wohnort: Tirschenreuth / Oberpfalz / Bayern
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von BagHira » Mo 9. Aug 2010, 15:14

Servus Ortwin,
Oldperl hat geschrieben:am einfachsten im anderen Beitrag eine entsprechende Anfrage stellen.
erledigt, guggst du hier: http://forum.contenido.org/viewtopic.ph ... 45#p145721
Gruß Holger

Träumer haben vielleicht keinen Plan, aber Realisten haben keine Vision.

Handgewickelte Glasperlen Facebook Google+

Oldperl
Beiträge: 4014
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von Oldperl » Mo 9. Aug 2010, 15:32

Danke Holger. :-)

Was würde ich ohne Dich machen? ;-)

Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Nakoda
Beiträge: 219
Registriert: Fr 2. Jul 2004, 23:50
Wohnort: Hamburg
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von Nakoda » Di 10. Aug 2010, 10:20

Was würden Leute wie ich ohne Euch alle machen. :D :D
Gruß aus HH

Armin
http://sig.sysprofile.de/quicksys/sysp-102592.png
Contenido 4.8.18

Oldperl
Beiträge: 4014
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Franken, Bayern
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von Oldperl » Di 10. Aug 2010, 15:07

Nakoda hat geschrieben:Was würden Leute wie ich ohne Euch alle machen. :D :D
Ein Buch lesen, eine Fortbildung besuchen oder eine Internetrecherche machen. Naja, oder ein Haufen Geld für "Einen der es weiß" ausgeben.

Aber ich weiß schon, Fragen ist halt einfacher... :mrgreen:

Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das neue Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Nakoda
Beiträge: 219
Registriert: Fr 2. Jul 2004, 23:50
Wohnort: Hamburg
Kontaktdaten:

Re: Erweiterung gegen Spambots

Beitrag von Nakoda » Fr 24. Sep 2010, 13:58

Moin allerseits,

also ich weiß nicht mehr weiter.
Hab mir das schöne vpGuestbook eingebaut.
Das wurde mir dann zugemüllt. Dann habe ich die eBien Erweiterung eingebaut. Es wurde trotzdem zugemüllt.
Nun hab ich auch noch das Bad Behavior 2 für Contenido eingebaut und ratet mal was... :motz:
Ich bin am verzweiflen. Hab mit den gedruckten Installationsanleitungen hier gesessen und den Kram eingebaut. :mrgreen:
Weiß nun wirklich nicht mehr was ich noch machen kann/soll. :cry:
Kann mir jemand helfen :?:
Gruß aus HH

Armin
http://sig.sysprofile.de/quicksys/sysp-102592.png
Contenido 4.8.18

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Erweiterung gegen Spambots

Beitrag von Dodger77 » Fr 24. Sep 2010, 14:55

Hallo Nakoda,

teste doch mal die folgende Version des Eintragsmoduls:

Input:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :	    vpGuestbook 1.9 - Eintrag
* Author      :     Ingo van Peeren
* Copyright   :     Ingo van Peeren (ingo@van-peeren.de)
* Created     :     2005-03-14
* Modified    :     2006-01-16
************************************************/

$cfg["tab"]["vpguestbook"] = $cfg['sql']['sqlprefix']."_vpguestbook";
$db = new DB_Contenido;
$sql = "CREATE TABLE IF NOT EXISTS `".$cfg["tab"]["vpguestbook"]."` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(60) NOT NULL default '',
  `email` varchar(80) NOT NULL default '',
  `url` varchar(80) NOT NULL default '',
  `entry` text NOT NULL,
  `image` varchar(255) NOT NULL default '',
  `comment` text NOT NULL,
  `iphost` varchar(60) NOT NULL default '',
  `user1` varchar(255) NOT NULL default '',
  `user2` varchar(255) NOT NULL default '',
  `user3` varchar(255) NOT NULL default '',
  `active` int(1) NOT NULL default '1',
  `client` int(10) NOT NULL default '0',
  `lang` int(10) NOT NULL default '0',
  `art` int(10) NOT NULL default '0',
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`),
  KEY `client` (`client`),
  KEY `lang` (`lang`),
  KEY `art` (`art`)
) TYPE=MyISAM;";
$db->query($sql);

if (! function_exists('dir_list')) {
  #Build folder list recursively
  function dir_list($dir, $sPrefix, $show_options = 0) {
  global $sSelected, $cfgClient, $client;

	$old_path = getcwd();
        $sPathDir = $cfgClient[$client]["path"]["frontend"].$cfgClient[$client]["upload"].$dir;

	if (is_dir($sPathDir)) {
		chdir($sPathDir);
		$myhandle = opendir('.');

		while (($mydir = readdir($myhandle)) !== false) {
			if (($mydir != ".") && ($mydir != "..")) {
				if (is_dir($mydir)) {
                                        $dirs[] = $dir.$mydir."/";
                                        $prefixs[] = $sPrefix.$mydir;
					$ret = dir_list($dir.$mydir."/", '    '.$sPrefix);
                                        foreach ($ret['dirs'] as $key => $value) {
                                          $dirs[] = $value;
                                          $prefixs[] = $ret['prefixs'][$key];
                                        }
					chdir($sPathDir);
				}
			}
		}
		closedir($myhandle);
	}

	chdir($old_path);
	if ($show_options == 1) {
          array_multisort ($dirs, $prefixs);
          foreach ($dirs as $key => $value) {
  	    if ($sSelected == $value) {
	      echo '<option selected value="'.$value.'">'.$prefixs[$key].'</option>';
	    }
            else {
	      echo '<option value="'.$value.'">'.$prefixs[$key].'</option>';
	    }
          }
        }
        else {
          $ret['dirs'] = $dirs;
          $ret['prefixs'] = $prefixs;
          return $ret;
        }
  }

}

$hier = getcwd ();
if ($cfgClient[$client][tpl][path]) chdir($cfgClient[$client][tpl][path]);
else chdir($cfgClient[$client][path][frontend]."templates/");
$handle = opendir(".");
while ($file = readdir($handle)) {
  if (is_dir($file)) $dirlist[] = $file;
  if (is_file($file)) $filelist[] = $file;
}
closedir($handle);
chdir($hier);
if ($filelist) {
  asort($filelist);
}

$selected = "CMS_VALUE[1]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">";

echo "<tr><td>Templatedatei: ";
echo "<td><select size=\"1\" name=\"CMS_VAR[3]\">";
while (list ($key, $file) = each ($filelist)) {
  echo "<option value=\"$file\"";
  if ("CMS_VALUE[3]" == $file) echo " selected=\"selected\" ";
  echo ">$file</option>";
}
echo "</td></tr>";

echo "<tr>";
echo "<td>Templateklasse:</td><td><INPUT TYPE=\"radio\" NAME=\"CMS_VAR[4]\" VALUE=\"normal\" ";
if ("CMS_VALUE[4]" == "normal") echo "checked=\"checked\" ";
echo "> normale Klasse <input type=\"radio\" name=\"CMS_VAR[4]\" value=\"extended\" ";
if ("CMS_VALUE[4]" == "extended") echo "checked=\"checked\" ";
echo "> eXtended-Template-Klasse (<a href=\"http://www.contenido.org/forum/viewtopic.php?t=5851\" target=\"_blank\">von swelpot</a>)</td></tr>";

echo "<tr><td>Smilies benutzen:</td>";
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[5]\" value=\"1\" ";
if ("CMS_VALUE[5]" == 1) echo "checked=\"checked\" ";
echo "/></td></tr>";

echo "<tr><td>Bilderverzeichnis für Smilies:</td>";
echo "<td><select size=\"1\" name=\"CMS_VAR[6]\" />";
$sSelected = "CMS_VALUE[6]";
dir_list("", '->', 1);
echo "</select></td></tr>";

echo "<tr><td>Avatare benutzen:</td>";
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[18]\" value=\"1\" ";
if ("CMS_VALUE[18]" == 1) echo "checked=\"checked\" ";
echo "/></td></tr>";

echo "<tr><td>Bilderverzeichnis für Avatare:</td>";
echo "<td><select size=\"1\" name=\"CMS_VAR[17]\" />";
$sSelected = "CMS_VALUE[17]";
dir_list("", '->', 1);
echo "</select></td></tr>";

echo "<tr><td>BB-Code aktiv:</td>";
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[7]\" value=\"1\" ";
if ("CMS_VALUE[7]" == 1) echo "checked=\"checked\" ";
echo "/></td></tr>";

echo "<tr><td>Benutzerfeld 1:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[8]\" value=\"CMS_VALUE[8]\" size=\"30\" /></td></tr>";

echo "<tr><td>Benutzerfeld 2:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[9]\" value=\"CMS_VALUE[9]\" size=\"30\" /></td></tr>";

echo "<tr><td>Benutzerfeld 3:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[10]\" value=\"CMS_VALUE[10]\" size=\"30\" /></td></tr>";

echo "<tr valign=\"top\"><td width=\"202\">Emailbenachrichtigung: ";
echo "Ja <input type=\"checkbox\" name=\"CMS_VAR[11]\" value=\"1\" ";
if ("CMS_VALUE[11]" == 1) echo "checked=\"checked\" ";
echo "> An:</td><td>";

echo "<input type=\"text\" name=\"CMS_VAR[12]\" value=\"CMS_VALUE[12]\"></td></tr>";
echo "<tr>";
echo "<td width=\"202\">Cookie gegen doppelte Einträge :</td><td><input type=\"radio\" name=\"CMS_VAR[13]\" value=\"0\" ";
if ("CMS_VALUE[13]" == 0) echo "checked=\"checked\" ";
echo "> aus <input type=\"radio\" name=\"CMS_VAR[13]\" value=\"1\" ";
if ("CMS_VALUE[13]" == 1) echo "checked=\"checked\" ";
echo "> an</td></tr>";

echo "<tr>";
echo "<td width=\"202\">Cookie Lebensdauer (in Minuten) :
</td><td><input type=\"text\" name=\"CMS_VAR[14]\" value=\"CMS_VALUE[14]\" ></td></tr>";

echo "<tr><td>Einträge direkt sichtbar?:</td>";
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[15]\" value=\"1\" ";
if ("CMS_VALUE[15]" == 1) echo "checked=\"checked\" ";
echo "/></td></tr>";

echo "<tr>";
echo "<td width=\"202\">Ausgaben als valides :</td><td><input type=\"radio\" name=\"CMS_VAR[16]\" value=\"0\" ";
if ("CMS_VALUE[16]" == 0) echo "checked=\"checked\" ";
echo "> HTML <input type=\"radio\" name=\"CMS_VAR[16]\" value=\"1\" ";
if ("CMS_VALUE[16]" == 1) echo "checked=\"checked\" ";
echo "> XHTML</td></tr>";

echo "<tr><td>Text-CAPTCHA Frage:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[20]\" value=\"CMS_VALUE[20]\" size=\"30\" /></td></tr>";

echo "<tr><td>Text-CAPTCHA Antwort:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[21]\" value=\"CMS_VALUE[21]\" size=\"30\" /></td></tr>";

echo "</table>";
Output:

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :	    vpGuestbook 1.9 - Eintrag
* Author      :     Ingo van Peeren
* Copyright   :     Ingo van Peeren (ingo@van-peeren.de)
* Created     :     2005-03-14
* Modified    :     2006-01-16
************************************************/

// Mailer-Klasse einbinden
cInclude('classes',  'class.phpmailer.php');

// CMS_VARs initialisieren
$ausgabe_cat            = "CMS_VALUE[1]";
$ausgabe_cont           = "CMS_VALUE[2]";
$tpl_datei              = "CMS_VALUE[3]";
$tpl_art                = "CMS_VALUE[4]";
$smilies_aktiv          = "CMS_VALUE[5]";
$smiliespfad            = "CMS_VALUE[6]";
$bbcode_aktiv           = "CMS_VALUE[7]";
$userfeld1              = "CMS_VALUE[8]";
$userfeld2              = "CMS_VALUE[9]";
$userfeld3              = "CMS_VALUE[10]";
$email_benachrichtigung = "CMS_VALUE[11]";
$emails_an              = "CMS_VALUE[12]";
$cookie_aktiv           = "CMS_VALUE[13]";
$cookie_dauer           = "CMS_VALUE[14]";
$direkt_sichtbar        = "CMS_VALUE[15]";
if ($direkt_sichtbar != 1) $direkt_sichtbar = 0;
$xhtml                  = "CMS_VALUE[16]";
$bilderpfad             = "CMS_VALUE[17]";
$avatare_aktiv          = "CMS_VALUE[18]";

$sCaptchaQuestion       = "CMS_VALUE[20]";
$sCaptchaAnswer         = "CMS_VALUE[21]";
// CMS_VARs initialisieren Ende

// eXtended-Template-Klasse (von swelpot) einbinden
// zur Verwendung siehe:
// http://www.contenido.org/forum/viewtopic.php?t=5851
if ($tpl_art == "extended") cInclude('classes',  'class.ExtendedTemplate.php');
else cInclude('classes',  'class.template.php');

if ($xhtml) $einzeltag = " /";
else $einzeltag = "";

$cfg["tab"]["vpguestbook"] = $cfg['sql']['sqlprefix']."_vpguestbook";
$db = new DB_Contenido;

// Funktionen
function testURL($url) {
  if(eregi("http://", $url))   {
    $url = str_replace ("http://", "", $url);

  }
  if ($url != "") {
    $url = "http://".$url;
  }
  return $url;
}

function cookie_setzen ($dauer) {
  global $sess, $vpgblastentry;

  $vpgblastentry = time()+$dauer*60;
  if ($sess->is_registered("vpgblastentry")) $sess->unregister("vpgblastentry");
  $sess->register("vpgblastentry");

}

function vpgb_js () {

  $js = "
    <script type=\"text/javascript\">
    <!--
    function storeCaret ()
    {
      if (document.getElementById('vpgb_eintrag').entry.createTextRange) document.getElementById('vpgb_eintrag').entry.caretPos = document.selection.createRange().duplicate();
    }

    function insertAtCaret (icon1, icon2)
    {
      if (document.getElementById('vpgb_eintrag').entry.createTextRange && document.getElementById('vpgb_eintrag').entry.caretPos)
      {
        var caretPos = document.getElementById('vpgb_eintrag').entry.caretPos;
        selectedtext = caretPos.text;
        caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == '' ? ' '+icon1 + ' ' : ' '+icon1+' ';
        caretPos.text = caretPos.text + selectedtext + icon2;
      }
      else document.getElementById('vpgb_eintrag').entry.value = document.getElementById('vpgb_eintrag').entry.value + ' '+icon1 + ' ' + icon2+' '
      document.getElementById('vpgb_eintrag').entry.focus();
    }

    function DoPrompt(action) {
    var revisedMessage;
    var post = document.getElementById(\"vpgb_eintrag\");
    var currentMessage = post.entry.value;

    if (action == \"url\") {
        var thisURL = prompt(\"URL der gewünschten Seite angeben\", \"http://\");
        var thisTitle = prompt(\"Titel der Seite angeben\", \"Seitentitel\");
        var urlBBCode = \"[URL=\"+thisURL+\"]\"+thisTitle+\"[/URL]\";
        revisedMessage = currentMessage+urlBBCode;
        post.entry.value=revisedMessage;
        post.entry.focus();
        return;
    }

    if (action == \"email\") {
        var thisEmail = prompt(\"gewünschte E-Mail-Adresse angeben\", \"\");
        var emailBBCode = \"[EMAIL]\"+thisEmail+\"[/EMAIL]\";
        revisedMessage = currentMessage+emailBBCode;
        post.entry.value=revisedMessage;
        post.entry.focus();
        return;
    }

    if (action == \"bold\") {
        var thisBold = prompt(\"den fetten Text angeben\", \"\");
        var boldBBCode = \"[b]\"+thisBold+\"[/b]\";
        revisedMessage = currentMessage+boldBBCode;
        post.entry.value=revisedMessage;
        post.entry.focus();
        return;
    }

    if (action == \"italic\") {
        var thisItal = prompt(\"den kursiven Text angeben\", \"\");
        var italBBCode = \"[i]\"+thisItal+\"[/i]\";
        revisedMessage = currentMessage+italBBCode;
        post.entry.value=revisedMessage;
        post.entry.focus();
        return;
    }

    if (action == \"underline\") {
        var thisUL = prompt(\"den unterstrichenenen Text angeben\", \"\");
        var ulBBCode = \"[u]\"+thisUL+\"[/u]\";
        revisedMessage = currentMessage+ulBBCode;
        post.entry.value=revisedMessage;
        post.entry.focus();
        return;
    }

    }
    -->
    </script>
  ";

  return $js;
}

function smilies_preg_quote($str, $delimiter)
{
	$text = preg_quote($str);
	$text = str_replace($delimiter, '\\' . $delimiter, $text);

	return $text;
}

function smilies_auslesen () {
global $cfgClient, $client, $smiliespfad;

  $fcontents = file($cfgClient[$client]['path']['frontend'] . $cfgClient[$client]['upload'] . $smiliespfad . 'smiles.pak');

  if (is_array($fcontents)) {
    $i = 0;
    foreach($fcontents as $zeile)
    {
      $smilies_daten = explode("=+:", trim(addslashes($zeile)));
      $smilies[$i]['icon'] = $smilies_daten[0];
      $smilies[$i]['erklaerung'] = $smilies_daten[1];
      $smilies[$i]['ersetzung'] = $smilies_daten[2];
      $i++;
    }
  }
  return $smilies;
}

function smilies_ersetzen ($entry) {
global $smilies, $cfgClient, $client, $smiliespfad;

  if (is_array($smilies)) {
    foreach ($smilies as $row) {
      $ers = "/(?<=.\W|\W.|^\W)" . smilies_preg_quote($row['ersetzung'], "/") . "(?=.\W|\W.|\W$)/";
      $entry = preg_replace($ers, '<img src="' . $cfgClient[$client]['upload'] . $smiliespfad. $row['icon'].'" alt="' . $row['erklaerung'] . '" />',$entry);
    }
  }
  return $entry;

}

function smilies_ausgeben ($smilies) {
global $cfgClient, $client, $smiliespfad, $einzeltag;

  $code = "";
  if (is_array($smilies)) {
    foreach($smilies as $smilie)
    {
      if ($smilie['icon'] != $h) $code .= "<a class=\"smilie\" href=\"javascript:insertAtCaret('" . htmlspecialchars($smilie['ersetzung']) . "','')\"><img src=\"" . $cfgClient[$client]['path']['htmlpath'] . $cfgClient[$client]['upload'] . $smiliespfad . $smilie['icon'] . "\" alt=\"" . htmlspecialchars($smilie['erklaerung']) . "\"".$einzeltag."></a>";
      $h = $smilie['icon'];
    }
  }
  return $code;
}

function bbcode_link ($type) {

  $link = "javascript:DoPrompt('".$type."')";

  return $link;
}

function bbcode_ersetzen ($text) {
global $xhtml;

  if ($xhtml) {
    $text = str_ireplace("[b]", "<strong>", $text);
    $text = str_ireplace("[/b]", "</strong>", $text);
    $text = str_ireplace("[i]", "<em>", $text);
    $text = str_ireplace("[/i]", "</em>", $text);
    $text = str_ireplace("[u]", "<u>", $text);
    $text = str_ireplace("[/u]", "</u>", $text);
  }
  else {
    $text = str_ireplace("[b]", "<b>", $text);
    $text = str_ireplace("[/b]", "</b>", $text);
    $text = str_ireplace("[i]", "<i>", $text);
    $text = str_ireplace("[/i]", "</i>", $text);
    $text = str_ireplace("[u]", "<u>", $text);
    $text = str_ireplace("[/u]", "</u>", $text);
  }
  $patterns = array();
  $replacements = array();
  $patterns[0] = "/\[url\]www.([^\[]*)\[\/url\]/i";
  $replacements[0] = "<a href=\"http://www.\\1\" target=_blank>\\1</a>";
  $patterns[1] = "/\[url\]([^\[]*)\[\/url\]/i";
  $replacements[1] = "<a href=\"\\1\" target=_blank>\\1</a>";
  $patterns[2] = "/\[url=([^\[]*)\]([^\[]*)\[\/url\]/i";
  $replacements[2] = "<a href=\"\\1\" target=_blank>\\2</a>";
  $patterns[3] = "/\[email\]([^\[]*)\[\/email\]/i";
  $replacements[3] = "<a href=\"mailto:\\1\">\\1</a>";
  $patterns[4] = "/\[email=([^\[]*)\]([^\[]*)\[\/email\]/i";
  $replacements[4] = "<a href=\"mailto:\\1\">\\2</a>";
  $text = preg_replace($patterns, $replacements, $text);

  return $text;
}

function bilder_liste () {
global $cfgClient, $client, $bilderpfad;

  $basedir = getcwd();
  chdir($cfgClient[$client]['path']['frontend'] . $cfgClient[$client]['upload'] . $bilderpfad);
  $handle = opendir(".");
  while ($file = readdir($handle)) {
    if (is_dir($file)) $dirlist[] = $file;
    if (is_file($file)) $filelist[] = $file;
  }
  closedir($handle);
  $wdir2 = $basedir . "/";
  chdir($wdir2);
  if ($filelist) {
    asort($filelist);
  }
  $i = 0;
  if (is_array($filelist)) {
    while (list ($key, $file) = each ($filelist)) {
      $bilder[$i] = $file;
      $i++;
    }
  }

  return $bilder;
}

function bilder_radio ($bilder) {
global $cfgClient, $client, $bilderpfad, $einzeltag;

  $code = "";
  if (is_array($bilder)) {
    foreach ($bilder as $bild) {
      $code .= "<div style=\"float: left;\"><img src=\"" . $cfgClient[$client]['path']['htmlpath'] . $cfgClient[$client]['upload'] . $bilderpfad . $bild . "\" alt=\"$bild\" ".$einzeltag."><br".$einzeltag."><input type=\"radio\" name=\"test\" value=\"$bild\"".$einzeltag."></div>\n";
    }
    $code .= "<br style=\"clear: all;\"".$einzeltag.">";
  }
  return $code;

}

function bilder_select ($bilder) {
global $cfgClient, $client, $bilderpfad, $einzeltag;

  $code = "";
  if (is_array($bilder)) {
    $code .= "<select size=\"1\" name=\"image\" id=\"image\" onchange=\"document.getElementById('vpgb_image').src= '" . $cfgClient[$client]['path']['htmlpath'] . $cfgClient[$client]['upload'] . $bilderpfad . "' + document.getElementById('vpgb_eintrag').image.options[document.getElementById('vpgb_eintrag').image.selectedIndex].value
    \">\n";
    $h = 0;
    foreach ($bilder as $bild) {
      $code .= "<option value=\"$bild\">$bild</option>\n";
      if ($h == 0) {
        $erstes = $bild;
        $h = 1;
      }
    }
    $code .= "</select>\n";
    $code .= "<img src=\"" . $cfgClient[$client]['path']['htmlpath'] . $cfgClient[$client]['upload'] . $bilderpfad . $erstes . "\" id=\"vpgb_image\" alt=\"\"".$einzeltag.">\n";
  }
  return $code;
}

function benachrichtigung ($name, $email, $url, $entry, $iphost, $user1, $user2, $user3, $image) {
global $emails_an, $userfeld1, $userfeld2, $userfeld3;

  $mailtext = "Es gibt einen neuen Eintrag im Gästebuch:

Name: ".html_entity_decode($name)."
E-Mail: $email
Homepage: $url
IP/Hostname: $iphost
$userfeld1: ".html_entity_decode($user1)."
$userfeld2: ".html_entity_decode($user2)."
$userfeld3: ".html_entity_decode($user3)."
Bild: $image
Eintrag:
".html_entity_decode($entry)."
";

  $mail = new phpmailer();
  $mail->AddAddress($emails_an);
  $mail->From     = $emails_an;
  $mail->FromName = "Gästebuch";
  $mail->Subject  = "Neuer Gästebucheintrag";
  $mail->Body     = $mailtext;
  if(!$mail->Send()){
    $notsend .= $lngNews["mailcouldnotbesend1"].$to.$lngNews["mailcouldnotbesend2"] . "<br>";
  }

}

function eintragen () {
global $db, $cfg, $client, $lang, $idart, $direkt_sichtbar, $email_benachrichtigung, $smilies_aktiv, $bbcode_aktiv, $bilder, $xhtml, $sCaptchaQuestion, $sCaptchaAnswer;

  // Initialisieren der Variablen
  $error = "";

  // Name überprüfen
  if ($_POST['name'] == "") {
    $error = "Bitte geben Sie Ihren Namen an!";
  }
  else {
    $name = htmlentities(strip_tags($_POST['name']));
  }

  // Email überprüfen
  $email_pattern = '/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i';
  if (($_POST['email'] == "") || (preg_match($email_pattern, $_POST['email']))) {
    $email = $_POST['email'];
  }
  else {
    $error = "Bitte geben Sie eine gültige Email-Adresse an!";
  }

  // URL überprüfen
  if ($_POST['url'] != "") {
    $url = htmlentities(strip_tags($_POST['url']));
    $url = testURL($url);
  }

  // Eintrag überprüfen
  if ($_POST['entry'] == "") {
    $error = "Bitte schreiben Sie einen Eintrag!";
  }
  else {
    // testing 
    $iLinksCount = substr_count($_POST['entry'], 'http://');
    $iLinksCount += substr_count($_POST['entry'], 'https://');
    $hentry = strip_tags(htmlentities($_POST['entry']));
    $hentry = str_replace('&#', '&#', $hentry);
    $entry = $hentry;
    if ($smilies_aktiv) $entry = smilies_ersetzen($entry);
    if ($bbcode_aktiv) $entry = bbcode_ersetzen($entry);
  }

  // Bilder prüfen
  if (($_POST['image'] == "") || (in_array ($_POST['image'], $bilder))) {
    $image = $_POST['image'];
  }

  // Uservariablen überprüfen
  $user1 = htmlentities(strip_tags($_POST['user1']));
  $user2 = htmlentities(strip_tags($_POST['user2']));
  $user3 = htmlentities(strip_tags($_POST['user3']));

  // IP und Hostname speichern
  $iphost = $_SERVER["REMOTE_ADDR"];
  $host = @gethostbyaddr($_SERVER["REMOTE_ADDR"]);
  if ($host) $iphost .= " / " . $host;

  if ($iLinksCount > 3 || ($sCaptchaQuestion != '' && $sCaptchaAnswer != '' && $sCaptchaAnswer != $_POST['answer'])) {
    $direkt_sichtbar = 0;
  }

  // der eigentliche Eintrag in die Datenbank
  if ($error == "") {
    $sql = "INSERT INTO ".$cfg["tab"]["vpguestbook"]." (name, email, url, entry, image, iphost, user1, user2, user3, active, client, lang, date) VALUES ('$name', '$email', '$url', '$entry', '$image', '$iphost', '$user1', '$user2', '$user3', $direkt_sichtbar, $client, $lang, NOW())";
    if (! $db->query($sql)) $error = $db->$Error;
    elseif ($email_benachrichtigung) benachrichtigung ($name, $email, $url, $hentry, $iphost, $user1, $user2, $user3, $image);
  }
  return $error;
}
// Funktionen Ende

if ($smilies_aktiv) {
  // Smilies-Array füllen
  $smilies = smilies_auslesen();
}
$bilder = bilder_liste();

$formular_anzeigen = TRUE;

if ($_POST) {
  if ($sess->is_registered("vpgblastentry")) {
    $lastentry = $GLOBALS["vpgblastentry"];
  }
  if (($lastentry >= time()) && ($cookie_aktiv)) $fehler = "Bitte nicht mehrmals hintereinander eintragen!";
  else $fehler = eintragen();
  if ($fehler != "") {
    $formular_anzeigen = TRUE;
    echo "Fehler: " . $fehler;
  }
  elseif ($direkt_sichtbar) {
    echo "Vielen Dank für Ihren Eintrag!";
    $formular_anzeigen = FALSE;
    if ($cookie_aktiv) cookie_setzen ($cookie_dauer);
  }
  else {
    echo "Vielen Dank für Ihren Eintrag! Dieser wird nach Prüfung freigeschaltet.";
    $formular_anzeigen = FALSE;
    if ($cookie_aktiv) cookie_setzen ($cookie_dauer);
  }
}

if ($formular_anzeigen) {
  if ($smilies_aktiv) {
    // Smilies HTML-Ausgabe
    $smiliesform = smilies_ausgeben($smilies);
  }
  if ($smilies_aktiv || $bbcode_aktiv) echo vpgb_js();

  if ($avatare_aktiv) {
    $imageselect = bilder_select($bilder);
    $imageradio = bilder_radio($bilder);
  }

  $nameform = "<input id=\"name\" type=\"text\" name=\"name\" size=\"18\"".$einzeltag.">";
  $emailform = "<input id=\"email\" type=\"text\" name=\"email\" size=\"18\"".$einzeltag.">";
  $urlform = "<input id=\"url\" type=\"text\" name=\"url\" size=\"18\"".$einzeltag.">";
  if ($userfeld1 != "") $user1form = "<input id=\"user1\" type=\"text\" name=\"user1\" size=\"18\"".$einzeltag.">";
  if ($userfeld2 != "") $user2form = "<input id=\"user2\" type=\"text\" name=\"user2\" size=\"18\"".$einzeltag.">";
  if ($userfeld3 != "") $user3form = "<input id=\"user3\" type=\"text\" name=\"user3\" size=\"18\"".$einzeltag.">";
  $entryform = "<textarea id=\"entry\" name=\"entry\" cols=\"30\" rows=\"10\" onselect=\"storeCaret(this);\" onclick=\"storeCaret(this);\" onkeyup=\"storeCaret(this);\"></textarea>";

  $sTextCaptchaForm = "<input id=\"answer\" type=\"text\" name=\"answer\" size=\"18\"".$einzeltag.">";

  $submitform = "<input type=\"submit\" class=\"submit\" name=\"vpgb_submit\" value=\"eintragen\"".$einzeltag.">";

if ($tpl_art == "extended") $tpl = new ExtendedTemplate();
else $tpl = new Template;

  $tpl->reset();
  $tpl->set('s', 'NAMEFORM',      $nameform);
  $tpl->set('s', 'EMAILFORM',     $emailform);
  $tpl->set('s', 'TEXTCAPTCHAFORM',   $sTextCaptchaForm);
  $tpl->set('s', 'TEXTCAPTCHAQUESTION',   $sCaptchaQuestion);
  $tpl->set('s', 'URLFORM',       $urlform);
  $tpl->set('s', 'USER1FORM',     $user1form);
  $tpl->set('s', 'USER2FORM',     $user2form);
  $tpl->set('s', 'USER3FORM',     $user3form);
  $tpl->set('s', 'IMAGERADIO',    $imageradio);
  $tpl->set('s', 'IMAGESELECT',   $imageselect);
  $tpl->set('s', 'SMILIESFORM',   $smiliesform);
  $tpl->set('s', 'ENTRYFORM',     $entryform);
  $tpl->set('s', 'SUBMITFORM',    $submitform);
  $tpl->set('s', 'BBFETT',        bbcode_link("bold"));
  $tpl->set('s', 'BBKURSIV',      bbcode_link("italic"));
  $tpl->set('s', 'BBUNTERSTRICH', bbcode_link("underline"));
  $tpl->set('s', 'BBURL',         bbcode_link("url"));
  $tpl->set('s', 'BBEMAIL',       bbcode_link("email"));

  ?>
  <script type="text/javascript">
  function submitForm (s) {
    s.disabled = true;
    s.value = "Vielen Dank!";
    return true;
  }
  </script>
  <?php
  echo "<form action=\"front_content.php?idcatart=$idcatart\" method=\"post\" id=\"vpgb_eintrag\" onSubmit=\"return submitForm(this.vpgb_submit)\">";
  $tpl->generate('templates/' . $tpl_datei);
  echo "</form>";
}

?>
Damit lässt sich in der Konfiguration ein Frage-Antwort-Paar definieren, dass Spambots dann wahrscheinlich nicht erraten werden. Entsprechende Einträge werden dann zwar in die Datenbank geschrieben, bleiben allerdings offline. Wenn sich Spambots auf die Antwort einschießen sollten, kannst du ja die Frage ändern.

Nakoda
Beiträge: 219
Registriert: Fr 2. Jul 2004, 23:50
Wohnort: Hamburg
Kontaktdaten:

Re: Erweiterung gegen Spambots

Beitrag von Nakoda » Fr 24. Sep 2010, 21:29

Danke für den Tipp. Werd ich morgen gleich mal ausprobieren.
Offline waren sie ja vorher auch schon will sagen erst nach Prüfung wird freigeschaltet. Sicher ist sicher.
Meld mich dann nochmal an dieser Stelle.
Gruß aus HH

Armin
http://sig.sysprofile.de/quicksys/sysp-102592.png
Contenido 4.8.18

Dodger77
Beiträge: 3625
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von Dodger77 » Sa 25. Sep 2010, 08:20

Ach so, aktuell ist das so, dass die Einträge dann natürlich als offline in der Datenbank auftauchen.

Ich habe die Beiträge dann auch mal hierher verschoben.

Nakoda
Beiträge: 219
Registriert: Fr 2. Jul 2004, 23:50
Wohnort: Hamburg
Kontaktdaten:

Re: Erweiterung gegen Spambots

Beitrag von Nakoda » Sa 25. Sep 2010, 09:13

Nakoda hat geschrieben:Danke für den Tipp. Werd ich morgen gleich mal ausprobieren.
Offline waren sie ja vorher auch schon will sagen erst nach Prüfung wird freigeschaltet. Sicher ist sicher.
Meld mich dann nochmal an dieser Stelle.
:( War leider nix.
Hab es heute in der früh ausprobiert und nun sind schon wieder zwei Benachrichtigungen über neue Einträge eingetrudelt.
Gruß aus HH

Armin
http://sig.sysprofile.de/quicksys/sysp-102592.png
Contenido 4.8.18

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von idea-tec » Sa 25. Sep 2010, 20:01

Ich benutze sehr oft einen iPhone-like Lock-Slider
Leider ist auf der Original-Seite: http://www.abonne.com keinerlei Unterseite mehr online. aber hier kann man es sich auf einem Portal im Entwicklungsstatus (das Portal, nicht der Slider) ansehen: http://www.hohezeitportal.de/registrier ... ieter.html
Und hier habe ich es auch drin: http://www.hohezeitportal.de/passwort-v ... essen.html (gleiches Projekt)

Bei Interesse kann ich es dir per PN posten, irgendwo veröffentlichen mag ich es nicht, da es nicht von mir ist und ich nicht weiß was mit dem Urheber los ist (da viele dessen Unterseiten nicht mehr erreichbar sind)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

Nakoda
Beiträge: 219
Registriert: Fr 2. Jul 2004, 23:50
Wohnort: Hamburg
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von Nakoda » Sa 25. Sep 2010, 21:56

Wenn es hilft :!: Immer her damit. Vielleicht kann man das ja ins Modul integrieren :?: :!:
Gruß aus HH

Armin
http://sig.sysprofile.de/quicksys/sysp-102592.png
Contenido 4.8.18

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von idea-tec » So 26. Sep 2010, 08:42

Ich hab noch einen gefunden der auf der gleichen Funktion basiert und öffentlich "rumliegt"
http://www.marcofolio.net/webdesign/the ... query.html
Den kann man sich ziehen und anpassen wie man möchte, wie man ihn braucht.
Man kann einen Button freigeben (2 Aktionen sind nötig um einen Eintrag zu machen) oder man kann das Formular absenden, wenn "unlocked" ist, etc...

Die Idee (nicht meine eigene ;-) )dahinter ist folgende:
- Der Spambot kann nicht wissen wie weit er ziehen muss
Ich lasse mich auch gerne eines besseren belehren, aber mir wäre aktuell auch kein Bot bekannt, der überhaupt ziehen kann.
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von derSteffen » Do 30. Sep 2010, 08:15

Ist ja interessant.

Eine Frage zu dem Slide-Unlock! Basiert das nur auf JavaScript? Wenn man kein JavaScript hat (wie. u.a. ja auch oft die Spam-Bots), was passiert dann, wird dann dieses Schutz einfach ignoriert? Wenn ja, bringt das gegenüber den Spambots ja auch nichts, oder sehe ich das flasch?

MfG Steffen

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: vpGuestbook - Gästebuchmodul für die 4.6.x

Beitrag von idea-tec » Do 30. Sep 2010, 08:44

klar bringt das was, mal nachgedacht .. grübel...

dann stelle mer uns ma jaaanz dumm: wenn man das submit auf disabled setzt und NUR mittels jQuery/JavaScript auf enabled gesetzt werden kann
dann kann auch nur dann das Formular abgesendet werden, wenn ALLES passend ist.

Einen Tot muss man sterben ;-) Entweder ein sicheres Formular oder ein Haufen Einträge.

Aber davon ab, gibt es dafür auch den Bereich <noscript> in den man einen entsprechenden Eintrag schreiben kann und mal ehrlich: Wer kein JS anhat ist heutzutage doch ein Trottel, wo alles mit JS gespickt wird. Das lässt sich nicht mehr vermeiden und NUR altbackene Entwickler denken noch so!!!
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

Gesperrt