Gästebuch Modul für V4.4.2 /v4.4.3

progman
Beiträge: 1
Registriert: Mi 4. Jan 2006, 19:21
Wohnort: hofgeismar
Kontaktdaten:

snoopys Guestbook für Contenido 4.6.2

Beitrag von progman » Mi 4. Jan 2006, 19:30

Ich habe ein Problem. Das snoopys Guestbook läuft nich unter der Version 4.6.2 es erscheint bei der modulgenerierung die Ansage, dass die benutzten Funktion/Variablen in der 4.6.2 Version nicht mehr existieren.

Was kann ich machen oder besser, wie kann ich den Output bereich umschreiben, dass das funktioniert???

schon mal vorab vielen Dan an alle.
progman

hier der Code vom Ausgabe-output
<br><p><B>Einträge mit ICONS haben Links auf E-Mail und URL</B></p>

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Guestbook Ausgabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
* Modified : Feb. 29th 2004 by Lars D. Forseth <lars@forseth.de>
************************************************/
$accessGranted = false;
$permissions = $auth->auth["perm"];
$permissions = explode(',', $permissions);
foreach ($permissions as $perm)
if ($perm == "sysadmin" || $perm == "admin[".$client."]")
$accessGranted = true;

switch ($eintrag) { // das erste mal beim aufruf ist $eintrag undefiniert
case "";
$eintrag = "0"; // deswegen wertzuweisung 0
}
$zps = "CMS_VALUE[4]"; // anzeige der einträge pro Seite

$max = ($eintrag + $zps);
$meineseite=$auth->url();
if (!$accessGranted) { $where = " WHERE active=1 AND client=$client"; }
else { $where = " WHERE client=$client"; }
if($accessGranted) {
$sql = "UPDATE ".$cfgTab_guestbook." SET active=".$active." WHERE id='".$gbid."' LIMIT 1";
$db->query($sql);
}
$a = "view";

// wenn view als aktion übergeben wird bzw. beim erstmaligen Seitenaufruf
if($a == "view")
{
//Zählen der Datensätze
$sql = "SELECT count(*) AS total FROM ".$cfgTab_guestbook.$where;
$db->query($sql);
$db->next_record();
$eintraege = $db->f("total");
echo "<br>";
echo "<table>";

//Unternavigation zusammenbauen
$gbnav = "";
$gbnav .= "<table width=420px cellspacing=0 cellpadding=0><tr>";
if ($max >= $eintraege)
$gbnav .= "<td class=textbold><p> Einträge: ".($eintrag+1)."-".($eintraege)." von ".$eintraege."</p></td>";
else
$gbnav .= "<td class=textbold><p> Einträge: ".($eintrag+1)."-".($max)." von ".$eintraege."</p></td>";
$gbnav .= "<td class=textbold align=right><p>";
$pages = $eintraege / $zps;
if ($pages > 1) {
$gbnav .= "gehe zu Seite ";
for ($ii = 0; $ii < $pages; $ii++) {
if ($ii != ($eintrag / $zps)) {
$gbnav .= "<a href=\"$meineseite&a=view&eintrag=";
$gbnav .= ($ii * $zps);
$gbnav .= "\">[".($ii+1)."]</a> ";
}
}
}
$gbnav .= "</p></td>";

//Ausgabe Navigation
// echo $gbnav;

// Daten aus der Datenbank abfragen mit der Einschränkung $eintrag (d.h. welche ausgegeben werden sollen) und $zps (anzahl der anzuzeigenden elemente)
$sql = "SELECT name, email, url, date, location, comments, id, active FROM $cfgTab_guestbook $where order by date desc LIMIT $eintrag,$zps";
$db->query($sql);

// Auslesen des Ergebnisse pro Reihe und Generierung der Seite
while ($db->next_record()) {
echo "<p><table width=80% border=0 cellpadding=0 cellspacing=0>";

echo "<td class=textbold><span ID=fontCMS_VALUE[1]>".$db->f("name")."</span><br><span ID=fontCMS_VALUE[2]>".$db->f("date")."</span></td>";
echo "<td align=right valign=top>";
if($accessGranted) {
if ($db->f("active") == 0) { $imgsrc = $cfgPathContenido.$cfgPathImg."deactivate.gif"; }
if ($db->f("active") == 1) { $imgsrc = $cfgPathContenido.$cfgPathImg."activ.gif"; }
echo "<a href=$meineseite&active=".(($db->f("active")*-1)+1)."&gbid=".$db->f("id")."&eintrag=".$eintrag."><img src=$imgsrc border=0></a>";
}

if ($db->f("url") != "") { echo "<a href=\"http://".$db->f("url")."\" target=_blank><img src=".$cfgClient[1]["frontendpath"]["img"]."CMS_VALUE[5] border=0 hspace=5></a>"; }
if ($db->f("email") != "") { echo "<a href=\"mailto:".$db->f("email")."\"><img src=".$cfgClient[1]["frontendpath"]["img"]."CMS_VALUE[6] border=0></a></td>"; }

echo "</tr>";
echo "<tr><td class=text ID=fontCMS_VALUE[3] colspan=3 valign=top><p>".stripslashes($db->f("comments"))."</p></td></tr>";

//Eintrag aktivieren/deaktivieren
{
if ($a == "view") { $imgsrc = $cfgPathContenido.$cfgPathImg."line_top.gif"; }
echo "<tr><td colspan=2><a href=\"#top\"><img src=$imgsrc border=0></a></td></tr>";
}
echo "</table></p><br>";
}

//Ausgabe Navigation
echo $gbnav;
}

echo "</table>";

?>
Ausgabe INPUT
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : Guestbook Ausgabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
* Modified : Feb. 29th 2004 by Lars D. Forseth <lars@forseth.de>
************************************************/


echo "<input type=\"hidden\" name=\"CMS_VAR[0]\" value=\"".$value."\">";
echo "<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">";
echo "</SELECT></td></tr>";
echo "
<tr>
<td>Anzahl Einträge/Seite: </td>
<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\"></td></tr>";

$query = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE filetype = 'gif'";

$db->query($query);

while ($db->next_record()) {
//$bild replaces old $filename
$bild[$db->f("idupl")] = "upload/".$db->f("dirname").$db->f("filename");

} // end while

function d_checked($which) {
if ($which != "") {
return "checked";
}
} // end function

echo "<tr>\n";
echo "<td>WWW-Image</td>\n";
echo "<td><select name=\"CMS_VAR[5]\">\n";

if (is_array($bild)) {
foreach ($bild as $key => $value) {
if ("CMS_VALUE[5]" == $value) {
echo "<option selected=\"selected\" value=\"". $value ."\">". $value ."</option>";
} else {
echo "<option value=\"". $value ."\">". $value ."</option>";
} // end if
} // end foreach
} // end if

echo "</select></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Mail-Image</td>\n";
echo "<td><select name=\"CMS_VAR[6]\">\n";

if (is_array($bild)) {
foreach ($bild as $key => $value) {
if ("CMS_VALUE[6]" == $value) {
echo "<option selected=\"selected\" value=\"". $cfgClient[1]["frontendpath"]["img"].$value ."\">". $value ."</option>";
} else {
echo "<option value=\"". $value ."\">". $value ."</option>";
} // end if
} // end foreach
} // end if

echo "</select></td>\n";
echo "</tr>\n";

echo "</table>";
I am the fact, you're the fiction

DonBender
Beiträge: 24
Registriert: Mi 13. Apr 2005, 03:35
Kontaktdaten:

bei mir läuft es wieder

Beitrag von DonBender » Do 5. Jan 2006, 13:34

ähnlich wie bei dir, hat mein gästebuch im frontend keine datensätze ausgeben und im backend kam auch die meldung der veralteten variablen/funktionen

es liegt wohl an der variable $cfgTab_guestbook

nun ist hier mein geänderter Outputbereich:

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL -  OUTPUT
*
* Modulname   :     Guestbook Ausgabe v1.1
* Copyright   :     P.beauvain
* Created     :     14-02-2004
* Modified    :     Mar. 1st 2004 by Lars D. Forseth <lars@forseth.de>
************************************************/
$accessGranted = false;
  $permissions = $auth->auth["perm"];
  $permissions = explode(',', $permissions);
  foreach ($permissions as $perm)
  if ($perm == "sysadmin" || $perm == "admin[".$client."]")
  $accessGranted = true;

switch ($eintrag) {      // das erste mal beim aufruf ist $eintrag undefiniert
  case "";
    $eintrag = "0";      // deswegen wertzuweisung 0
}
$zps = "CMS_VALUE[4]";              // anzeige der einträge pro Seite

$max = ($eintrag + $zps);
$meineseite=$auth->url();
$gbook = $cfg["tab"]["guestbook"];
if (!$accessGranted) { $where = " WHERE active=1 AND client=$client"; }
else { $where = " WHERE client=$client"; }
if($accessGranted) {
$sql = "UPDATE ".$gbook." SET active=".$active." WHERE id='".$gbid."' LIMIT 1";
   $db->query($sql);
}
$abba = "view";

// wenn view als aktion übergeben wird bzw. beim erstmaligen Seitenaufruf
if($abba == "view")
{
  //Zählen der Datensätze
  $sql = "SELECT count(*) AS total FROM ".$gbook.$where;
  $db->query($sql);
  $db->next_record();
  $eintraege = $db->f("total");

//Unternavigation zusammenbauen
  $gbnav = "";
  $gbnav .= "<table width=100% cellspacing=0 cellpadding=0 border=0 style=\"padding-top:10px\"><tr>";
  if ($max >= $eintraege)
  $gbnav .= "<td class=textbold><p class=kurz>  Einträge: ".($eintrag+1)."-".($eintraege)." von ".$eintraege."</p></td>";
  else
  $gbnav .= "<td class=textbold><p class=kurz>  Einträge: ".($eintrag+1)."-".($max)." von ".$eintraege."</p></td>";
  $gbnav .= "<td class=textbold align=right><p class=kurz>";
  $pages = $eintraege / $zps;
  if ($pages > 1) {
    $gbnav .= "gehe zu Seite ";
    for ($ii = 0; $ii < $pages; $ii++) {
     if ($ii != ($eintrag / $zps)) {
       $gbnav .= "<a href=\"$meineseite&a=view&eintrag=";
       $gbnav .= ($ii * $zps);
       $gbnav .= "\">[".($ii+1)."]</a> ";
     }
    }
  }
  $gbnav .= "</p></td></tr></table>";

  //Ausgabe Navigation
//  echo $gbnav;

  // Daten aus der Datenbank abfragen mit der Einschränkung $eintrag (d.h. welche ausgegeben werden sollen) und $zps (anzahl der anzuzeigenden elemente)
  $sql = "SELECT name, email, url, date, location, comments, id, active FROM $gbook $where order by date desc LIMIT $eintrag,$zps";
  $db->query($sql);

echo '<h1>Gästebuch</h1>';

// Auslesen des Ergebnisse pro Reihe und Generierung der Seite
  while ($db->next_record()) {
    echo "<p><table width=99% border=0 cellpadding=0 cellspacing=0 style=\"border: 1px solid rgb(204, 204, 204);\"><tr bgcolor=#EEEEEE>";
    echo "<td class=gb_eintrag>".$db->f("name")."<br>".$db->f("date")."</td>";
    echo "<td align=right valign=top>";
if($accessGranted) {
      if ($db->f("active") == 0)
         {
          $imgsrc = $cfgPathContenido.$cfgPathImg."gbook/deactivate.gif";
         echo "<a href=$meineseite&active=".(($db->f("active")*-1)+1)."&gbid=".$db->f("id")."&eintrag=".$eintrag."><img src=".$cfgPathContenido.$cfgPathImg."gbook/activ.gif border=0 alt=\"Eintrag ist deaktiviert, klicken um Eintrag freizugeben\"></a>&nbsp;";
          echo "<a href=\"#\" onClick=\"window.open('".$cfgClient['path']['frontendpath']."gb_delete_inactive.php?sess=".$sess->id."&id=".$db->f("id")."', 'NewWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=n0,width=150,height=150')\"><img src=$imgsrc border=0 alt=\"Eintrag löschen\"></a>";
         }
      if ($db->f("active") == 1)
         {
          $imgsrc = $cfgPathContenido.$cfgPathImg."gbook/activ.gif";
          echo "<a href=$meineseite&active=".(($db->f("active")*-1)+1)."&gbid=".$db->f("id")."&eintrag=".$eintrag."><img src=$imgsrc border=0 alt=\"Eintrag ist freigegeben, klicken zum deatkivieren\"></a>";
         }
    }

if ($db->f("url") != "") { echo "<a href=\"http://".$db->f("url")."\" target=_blank><img src=".$cfgClient[1]["frontendpath"]["img"]."upload/logos/CMS_VALUE[5] width=50 height=15 border=0 style=\"margin-right:5px; margin-top:5px\"></a>"; }
if ($db->f("email") != "") { echo "<a href=\"mailto:".$db->f("email")."\"><img src=".$cfgClient[1]["frontendpath"]["img"]."upload/logos/CMS_VALUE[6] width=50 height=15 border=0 style=\"margin-right:5px; margin-top:5px\"></a></td>"; }

    echo "</tr>";
    echo "<tr><td colspan=3 valign=top style=\"padding:5px\"><p class=kurz>".$db->f("comments")."</p></td></tr>";
    echo "</table></p>";
  }


  //Ausgabe Navigation
  echo $gbnav;
}
?>
in der cfg_sql.inc.php
hab ich die Gästebuchtabelle so deklariert

Code: Alles auswählen

$cfg["tab"]["guestbook"]           = $cfg['sql']['sqlprefix']."_guestbook";
Und siehe da, es funktioniert

anna87
Beiträge: 1
Registriert: Sa 14. Jan 2006, 14:02
Kontaktdaten:

Problem mit E-mail-Adresse

Beitrag von anna87 » Sa 14. Jan 2006, 14:11

Hi!
Also das Gästebuch ist echt super, und funktioniert bei mir inzwischen auch halbwegs.
Nur habe ich noch zwei kleine (naja) probleme.

1. Im backend (Editoransicht und Vorschau) wird das Gästebuch nicht
angezeigt, nur die Einträge, die ich dann auch löschen usw. kann.

2. Normale Einträge und Einträge auch mit Smilies funktionieren ja, nur, wenn ich eine E-mail Adresse oder eine URL in das vorgesehene Feld eingebe, wird folgende Fehlermeldung angezeigt:

bei E-mail-Adresse:
Fatal error: Call to undefined function: checkdnsrr() in c:\contenido\htdocs\cms\front_content.php(567) : eval()'d code on line 624

bei URL
Fatal error: Call to undefined function: checkdnsrr() in c:\contenido\htdocs\cms\front_content.php(567) : eval()'d code on line 666

Ich kenne mich in PHP und MySQL nicht wirklich aus, also wär ich echt sehr dankbar, wenn mir wer helfen könnte.
Ich benutze die Contenido-Version 4.4.5. und den Apache Server

mfg,
anna

koffer
Beiträge: 107
Registriert: Mi 3. Sep 2003, 15:39
Kontaktdaten:

Beitrag von koffer » Mi 22. Mär 2006, 20:10

Hi zusammen,

bei mir im errorlog steht hier und da folgender Eintrag:

[21-Mar-2006 10:46:43] Invalid SQL: SELECT count(*) AS total FROM con_guestbook WHERE active=1 AND client=1〈=1<br><br>
[21-Mar-2006 10:46:43] next_record called with no query pending.
[21-Mar-2006 10:46:43] Invalid SQL: SELECT name, email, url, date, location, comments, id, active FROM con_guestbook WHERE active=1 AND client=1〈=1 order by date desc LIMIT 0,10<br><br>
[21-Mar-2006 10:46:43] next_record called with no query pending.


Funktionieren tut das Ding sehr gut...
Was könnte das sein?

Danke,
mfG,
koffer

media-konzept
Beiträge: 90
Registriert: So 20. Mär 2005, 13:24
Wohnort: CH-5430 Wettingen
Kontaktdaten:

Gästebuch gehackt

Beitrag von media-konzept » Fr 26. Mai 2006, 18:06

Hallo Freunde der ewigen Bildschirmpotenz,

ich habe das Gästebuch zwischenzeitlich noch in 3 Contenido Installationen unter Version 4.4.5 am laufen, es funzt prima...wir haben nun aber das Problem auf einem Account, das wir alle paar Tage gegen 150 Viagra und Cialis sowie andere pornographischen Einträge vorfinden und diese mühsam mittels PHPMyAdmin von Hand löschen müssen. Die Cookie Lifetime haben wir auf 5 Tage gesetzt, das scheint dass Problem aber nicht zu lösen....habt Ihre ev. einen Tip was wir tun könnten?

Gruss aus der Schweiz
Felix
two beers or not two beers

macbill
Beiträge: 45
Registriert: Di 11. Jan 2005, 06:47
Kontaktdaten:

spam lösung

Beitrag von macbill » Mi 14. Jun 2006, 05:39

Gibt es für das Gästebuch eigentlich schon eine anti spam Lösung, außer der bestehenden? Momentan sind ja diese dubiosen Tabletten Unternehmer unterwegs, die man nicht anhand ihrer IP aussperren kann. Es gibt da ja eine Möglichkeit, diese Schergen anhand eines generierten Codes beim Eintrag alt aussehen lassen kann. Hat jemand so etwas schon geschrieben?

hari
Beiträge: 39
Registriert: Do 21. Aug 2003, 19:21
Kontaktdaten:

Captcha

Beitrag von hari » Sa 22. Jul 2006, 14:13

Wäre gut, wenn man für die Einträge "Captchas" benutzen koennte, dann wären die Probleme der Spams erledigt. Auch einige Kunden von mir hatten in kurzer Zeit ueber 300 Spam-Einträge.

sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Re: Adminrechte

Beitrag von sandra07 » Fr 15. Sep 2006, 13:50

Hallo zusammen

Ich habe daselbe Problem und nirgens eine Antwort dazu gefunden. Vielleicht habe ich ja auch nur Tomaten auf den Augen? :?:

Im voraus besten Dank für einen Tipp.....
tantalus hat geschrieben:Hallo,

das Gästebuch läuft bei mir prima nur gibt es ein Problem: bei mir kann nur ein Administrator oder ein Sysadmin Gästebucheinträge löschen. Gibt es eine Möglichkeit, dass auch Redakteure das Recht zu löschen erhalten?
Gruss
Sandra

oio
Beiträge: 78
Registriert: So 13. Aug 2006, 20:38
Kontaktdaten:

Re: Adminrechte

Beitrag von oio » Fr 15. Sep 2006, 14:24

sandra07 hat geschrieben:Hallo zusammen

Ich habe daselbe Problem und nirgens eine Antwort dazu gefunden. Vielleicht habe ich ja auch nur Tomaten auf den Augen? :?:

Im voraus besten Dank für einen Tipp.....
tantalus hat geschrieben:Hallo,

das Gästebuch läuft bei mir prima nur gibt es ein Problem: bei mir kann nur ein Administrator oder ein Sysadmin Gästebucheinträge löschen. Gibt es eine Möglichkeit, dass auch Redakteure das Recht zu löschen erhalten?
die rechte werden wahrscheinlich im output des gästebuches geprüft.
dort ansetzen, um die rechte zu erweitern bzw. immer bei $contenido bzw. $edit die löschfunktion anbieten.

cu
cg

sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Re: Warum habe ich denn immer noch diesen Fehler?

Beitrag von sandra07 » Fr 15. Sep 2006, 16:20

Hallo

Danke, ich habe nochmals ein Problem, und zwar dieses:
Deltapapa hat geschrieben:

Code: Alles auswählen

[22-Jul-2005 04:11:40] MySQL error 1064: You have an error in your SQL syntax near 'WHERE id='' LIMIT 1' at line 1
UPDATE con_guestbook SET active= WHERE id='' LIMIT 1 
Kann ich mir leider nicht erklären, hat jemand von euch eine idee?

Danke Dirk
Bei mir sieht die Fehlermeldung so aus:

Code: Alles auswählen

 [15-Sep-2006 16:33:43] MySQL error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id='' LIMIT 1' at line 1
UPDATE con_guestbook SET active= WHERE id='' LIMIT 1
Wahrscheinlich liegt es an irgend einem Hochkomma in diesem Bereich? Kann mir jemand weiterhelfen?

Code: Alles auswählen

if($accessGranted) { 
$sql = "UPDATE ".$cfgTab_guestbook." SET active=".$active." WHERE id='".$gbid."' LIMIT 1"; 
   $db->query($sql); 
} 
Gruss
Sandra

oio
Beiträge: 78
Registriert: So 13. Aug 2006, 20:38
Kontaktdaten:

Beitrag von oio » Fr 15. Sep 2006, 16:27

Code: Alles auswählen

SET active=".$active." 
zu

Code: Alles auswählen

SET active='".$active."' 
siehe beispiel im selben sql-statement bei $gbid

cu
cg

sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Beitrag von sandra07 » Fr 15. Sep 2006, 16:47

Hallo

Super, vielen Dank, hat geklappt!!

Nun zum ersten Problem zurück, das habe ich noch nicht hin bekommen. Habe versucht folgende Zeilen zu ändern, hat aber nicht funktioniert :?

Code: Alles auswählen

$accessGranted = false; 
  $permissions = $auth->auth["perm"]; 
  $permissions = explode(',', $permissions); 
  foreach ($permissions as $perm) 
  if ($perm == "sysadmin" || $perm == "admin[".$client."]") 
  $accessGranted = true; 
habe ich den admin auf redakteur geändert (so heisst der Benutzer):

Code: Alles auswählen

$accessGranted = false; 
  $permissions = $auth->auth["perm"]; 
  $permissions = explode(',', $permissions); 
  foreach ($permissions as $perm) 
  if ($perm == "sysadmin" || $perm == "redakteur") 
  $accessGranted = true; 
Bin ich hier völlig am falschen Ort? :?:
Gruss
Sandra

oio
Beiträge: 78
Registriert: So 13. Aug 2006, 20:38
Kontaktdaten:

Beitrag von oio » Fr 15. Sep 2006, 17:00

irgendwo steht wahrscheinlich:

Code: Alles auswählen

if($accessGranted)
da machste ein

Code: Alles auswählen

if($edit)
draus, es sei denn das oder if($contenido) steht da eh schon.

den part mit dem accessGranted kannst du dann ganz raus nehmen.
es hat dann jeder im adminbereich die lösch-, etc.-funktionen.

und ich hoffe mal, dass man das edit, bzw. contenido nicht per get einschleusen kann ...

cu
cg

edit: und die suche benutzen ... :)
und dies lesen:
http://www.contenido.org/forum/viewtopi ... +redakteur

Code: Alles auswählen

$accessGranted = false; 
$permissions = $auth->auth["perm"]; 
$permissions = explode(',', $permissions); 
foreach ($permissions as $perm) 
f ($perm == "sysadmin" || $perm == "client[".$client."]") 
$accessGranted = true;

sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Beitrag von sandra07 » Fr 15. Sep 2006, 17:14

Wie vorher geschrieben, habe ich mir doch fast gedacht, dass ich mal wieder Tomaten auf den Augen hatte. Habe es echt nicht gefunden... :oops: :oops:

Vielen Dank für die schnelle Hilfe und ein schönes Weekend!
Gruss
Sandra

hari
Beiträge: 39
Registriert: Do 21. Aug 2003, 19:21
Kontaktdaten:

Einbindung von Catcha-Rechenaufgabe

Beitrag von hari » Do 21. Dez 2006, 22:11

Benutze immer noch Contenido 4.4.4 und das Gästebuch von Snoopy.

Nun möchte ich dem vielen Spam entgegenwirken und habe ein "Captcha" für eine einfache Lösung gefunden. Doch leider macht Contenido mir ein Strich durch die Rechnung.

Folgende Schritte sind dort beschrieben:

Code: Alles auswählen

Einbau ins Formular

Code fürs Rechen Captcha
Das Rechen Captcha wird für Robots unleserlich per img-Tageingefügt.

<img src="rechen-captcha.php">

Der Pfad rechen-captcha.php muss zur Datei rechen-captcha.php führen, gegebnenfalls muss dieser angepasst werden.


Code fürs Textfeld
Dies ist der Code fürs Textfeld, in welchem das Ergebnis eingeben wird:

<input type="text" name="sicherheitscode" size="4">

Hier muss in der Regel nichts angepasst werden.


Code für eine Tabelle
<tr>
<td><img src="rechen-captcha.php"></td>
<td><input type="text" name="sicherheitscode" size="4"></td>
</tr>

--------------------------

Einbau ins Script

<?php
//ab hier habe ich am Anfang von Output gesetzt, nach php
session_start();
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
   $char = substr($string, $i, 1);
   $keychar = substr($key, ($i % strlen($key))-1, 1);
   $char = chr(ord($char)+ord($keychar));
   $result.=$char;
}
return base64_encode($result);
}
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if($sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
unset($_SESSION['rechen_captcha_spam']);

//
//
//Hier kommt das ursprüngliche Script hin.
//
//

}
?>

Der Key 29jfkd921 muss der Gleiche sein wie bei der rechen-captcha.php. Der Einbau ins bestehende Script ist sehr einfach, es braucht nur eine if-Schleife um das bisherige Script, welche überprüft ob das Ergebnis das eingegeben wurde, der generierten Captcha Rechnung entspricht. Optional kann auch noch ein else Teil angefügt werden, welche den Fehler ausgibt, dass das Ergebnis falsch war.
habe nun versucht im Eingabemodul - Output o.g. Beispiel zu integrieren.
Erhalte jedoch leider nur eine weisse Seite.

Das rechen-captcha.php hat folgenden Inhalt und liegt im Ordner "cms", wo auch die HP liegt.

Code: Alles auswählen

<?php
session_start();
unset($_SESSION['rechen_captcha_spam']);
$zahl1 = rand(10,20); //Erste Zahl 10-20
$zahl2 = rand(1,10);  //Zweite Zahl 1-10
$operator = rand(1,2); // + oder -

if($operator == "1"){
   $operatorzeichen = " + ";
   $ergebnis = $zahl1 + $zahl2;
}else{
   $operatorzeichen = " - ";
   $ergebnis = $zahl1 - $zahl2;
}

function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
   $char = substr($string, $i, 1);
   $keychar = substr($key, ($i % strlen($key))-1, 1);
   $char = chr(ord($char)+ord($keychar));
   $result.=$char;
}
return base64_encode($result);
}

$_SESSION['rechen_captcha_spam'] = encrypt($ergebnis, "29jfkd921"); //Key
$_SESSION['rechen_captcha_spam'] = str_replace("=", "", $_SESSION['rechen_captcha_spam']);

$rechnung = $zahl1.$operatorzeichen.$zahl2." = ?";
$img = imagecreatetruecolor(80,15);
$schriftfarbe = imagecolorallocate($img,13,28,91);
$hintergrund = imagecolorallocate($img,162,162,162);
imagefill($img,0,0,$hintergrund);
imagestring($img, 3, 2, 0, $rechnung, $schriftfarbe);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>
Wer kann mir hierbei helfen? Oder ist dieses Script nicht für Contenido geeignet?

Gesperrt