Seite 20 von 20

snoopys Guestbook für Contenido 4.6.2

Verfasst: Mi 4. Jan 2006, 19:30
von progman
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>";

bei mir läuft es wieder

Verfasst: Do 5. Jan 2006, 13:34
von DonBender
ä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

Problem mit E-mail-Adresse

Verfasst: Sa 14. Jan 2006, 14:11
von anna87
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

Verfasst: Mi 22. Mär 2006, 20:10
von koffer
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

Gästebuch gehackt

Verfasst: Fr 26. Mai 2006, 18:06
von media-konzept
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

spam lösung

Verfasst: Mi 14. Jun 2006, 05:39
von macbill
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?

Captcha

Verfasst: Sa 22. Jul 2006, 14:13
von hari
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.

Re: Adminrechte

Verfasst: Fr 15. Sep 2006, 13:50
von sandra07
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?

Re: Adminrechte

Verfasst: Fr 15. Sep 2006, 14:24
von oio
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

Re: Warum habe ich denn immer noch diesen Fehler?

Verfasst: Fr 15. Sep 2006, 16:20
von sandra07
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); 
} 

Verfasst: Fr 15. Sep 2006, 16:27
von oio

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

Verfasst: Fr 15. Sep 2006, 16:47
von sandra07
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? :?:

Verfasst: Fr 15. Sep 2006, 17:00
von oio
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;

Verfasst: Fr 15. Sep 2006, 17:14
von sandra07
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!

Einbindung von Catcha-Rechenaufgabe

Verfasst: Do 21. Dez 2006, 22:11
von hari
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?