[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Gästebuch Spam? - Seite 2 - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

15. Mai 2006, 16:22

Hi Peter,

alles klar, ich werd bei gelegenheit dort mal die neuste Version einstellen.

Gruß,
Markus

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

16. Mai 2006, 15:45

Hi Zusammen,
kills hat geschrieben:alles klar, ich werd bei gelegenheit dort mal die neuste Version einstellen.
Ich habe die neusten Version der folgenden Addon hochgeladen, als neues Release:
- Addon Framework
- Glossar
- Gbook
- Url_Rewrite

Gruß,
Markus

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

19. Mai 2006, 11:12

Eine Rückmeldung und eine Frage:

1.
Ich hab die Captcha-Funktion in das Huskyfarm-Gästebuch ohne Probleme einbauen können. War ganz einfach; vielen Dank für diese Funktion. Das heußt, dass dieses Gästebuch nun also mit Captcha und Freischalt-Funktion läuft. Mal sehen, wie sich Captcha bewährt, vielleicht kann man ja auf die Freischaltung verzichten.
Ich könnte dieses Gästebuch natürlich auch hier zur Verfügung stellen; allerdings hab ich (und vor allem Markus) einige spezielle Anpassungen für diese Website gemacht, und es ist auch das Gästebuch für die Redaxo-Vorgänger-Version 3.1, so dass ich nicht weiß, dass ob das nun auch ohne weiteres woanders funktionieren wird.


2.
Wollte die Captcha-Funktion nun noch in ein Redaxo-Gästebuch Version 2.7 einbauen, und da wird keine Grafik erzeugt. Hab alle Schritte genauso gemacht wie auf der Huskyfarm-Website, deswegen die Frage:
Markus, weißt Du, wieso die Captcha-Klasse anscheinend in Redaxo 2.7 nicht funktioniert?

Danke und schöne Grüße,
Peter.

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

19. Mai 2006, 11:22

Hej Peter,

nur kurz was mir aufgefallen ist.

- Ich kann das Bild nicht neu generieren, wenn ich es nicht lesen kann

- Keine Möglichkeit mir den Inhalt des Bildes vorlesen zu lassen

vg Thomas

andre.5tz
Beiträge: 33
Registriert: 28. Nov 2005, 22:20

19. Mai 2006, 11:35

Hi,

die Captcha-Funktion ist sicher nicht barrierefrei, daher würde ich die nicht so gerne verwenden.

Für den Freigabemechanismus hab ich gerstern einen Vorschlag an Markus geschickt. Wenn er Zeit hat, wird er sicher drüber gucken und entscheiden, ob man das für das Redaxo-Gästebuch verwenden kann.

Zum Spam-Schutz, ich hab gestern in einem anderen Forum folgenden Anregungen gesehen:
Würde sowas funktionieren? Dann könnte man so eine Spam-Schutz ja evtl. noch in das Gästebuch mit einbauen.

Gruß
André

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

19. Mai 2006, 11:37

Hi Thomas,
tbaddade hat geschrieben:- Ich kann das Bild nicht neu generieren, wenn ich es nicht lesen kann
Was meinst Du damit?
tbaddade hat geschrieben:- Keine Möglichkeit mir den Inhalt des Bildes vorlesen zu lassen
Ja, srtimmt. Aber mit einem alt- oder title-Tag würde man ja auch den Sinn des Ganzen wieder etwas aushebeln.
Ich meine: Barrierefreiheit schön und gut, aber wie hoch ist der Anteil der Sehbehinderten, die etwas in ein Gästebuch schreiben? Da geht dann doch die Spam-Freiheit des Gästebuchs zu einem für den Administrator vertretbarem Aufwand vor, finde ich.

Habe aber in der aktuellen Internet Professionell einen Ansatz gelesen, der mit einer Zeitsperre arbeitet. Klingt nicht schlecht, da man für den Eintrag ja ein paar Sekunden braucht, ein Spam-Roboter dagegen nicht wartet. Aber irgendwann wird dieser Trick dann auch bekannt sein.

Liebe Grüße,
Peter.

Benutzeravatar
alex2911
Beiträge: 567
Registriert: 20. Jul 2005, 04:13
Wohnort: Österreich
Kontaktdaten: Website

19. Mai 2006, 13:44

Es ist eine neue captcha-Klasse in Entwicklung die auch vorlesen kann.
Alternativ könnte man ja ein paar Buchstaben aufnehmen und dann abspielen lassen. Das Problem dabei: man müsste die sound-files quasi dynamisch umschreiben - sonst merken die Robots wieder an den Dateinamen die geforderten Buchstaben...

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

19. Mai 2006, 14:09

Hej Peter,
pbickel hat geschrieben:
tbaddade hat geschrieben:- Ich kann das Bild nicht neu generieren, wenn ich es nicht lesen kann
Was meinst Du damit?
Wenn man einen Buchstaben nicht genau erkennen kann, Unterscheidung Groß- und Kleinbuchstaben z.Bspl., dann sollte man sich selbst ein Bild neu generieren können, bis man eines hat, was man genau erkennt. Sonst darf ich bei Gelegheit meinen Eintrag nochmal schreiben.
pbickel hat geschrieben:
tbaddade hat geschrieben:- Keine Möglichkeit mir den Inhalt des Bildes vorlesen zu lassen
Ich meine: Barrierefreiheit schön und gut, aber wie hoch ist der Anteil der Sehbehinderten, die etwas in ein Gästebuch schreiben?
Den würde ich gar nicht so tief ansetzen. Ich kenne jemanden der schreibt nicht nur in Gästebücher und Foren, er verwendet sogar Redaxo und programmiert eigene Erweiterungen ;-)

pbickel hat geschrieben:Da geht dann doch die Spam-Freiheit des Gästebuchs zu einem für den Administrator vertretbarem Aufwand vor, finde ich.
Da gehen unsere Meinungen auseinander

viele grüße Thomas

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

28. Mai 2006, 03:07

Hi zusammen,

ich hab heute von adre.5tz eine Mail bekommen mit ein paar Änderungen fürs Gästebuch.

Diese sind jetzt eingespielt und möchten getestet werden ;)

kurzer Changelog:

Code: Alles auswählen

Patches by andre.5tz vom REDAXO-Forum
	
- divsoup zum größten Teil entfernt
- update.sql - Für Updates von alten Versionen
- rexTablePrefix wird unterstützt
- Emailbenachrichtigung für Admin
- Optionaler Freigabemechanismus
- Email ist kein Pflichtfeld mehr
- Neues Eingabefeld: Wohnort
Captcha Klasse fürs Addon FW gibts nach den Prüfungen...


Gruß,
Markus

diavolokor
Beiträge: 30
Registriert: 30. Apr 2005, 23:00

11. Jun 2006, 18:05

hm, ich habe das mal hochgeladen und es funktioniert alles (emailbenachrichtigung, online/offline schaltung) aber wenn ich zwischen Veröffentlichung nach Freigabe: Ja oder Nein wähle passiert bei Beidem das gleiche, nämlich dass der Eintrag sofort veröffentlicht wird....

woran liegt das ?

grüße

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

11. Jun 2006, 20:07

diavolokor hat geschrieben:wenn ich zwischen Veröffentlichung nach Freigabe: Ja oder Nein wähle passiert bei Beidem das gleiche, nämlich dass der Eintrag sofort veröffentlicht wird....
woran liegt das ?
Ich kann dir sagen das es daran liegt, dass der Status nicht richtig gespeichert wird. Eine Lösung kann ich dir noch nicht nennen.
Ich sehs mir gerade an.
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

11. Jun 2006, 22:56

Die Frage ist, wie bekommt man eine Variable, in dem Falle $status, von einem Modul zum anderen?
So lange sich die 2 Module des GB in einem Artikel befinden, hätt ich dafür eine funktionierende Lösung anzubieten.
Sind die Module (Eingabe und Ausgabe der Gb-Einträge) aber in verschiedenen Artikeln untergebracht, funktioniert meine Lösung nicht mehr.

Also, hier dann ersteinmal eine funktionierende Lösung:
Modul "Gästebuch - Formular"/Ausgabe muss geändert werden von

Code: Alles auswählen

gbook_form_output($f1);
in

Code: Alles auswählen

gbook_form_output($f1, $this->article_id);
In der Datei guestbook/modules/module.form.inc.php muss geändert werden:

Code: Alles auswählen

function gbook_form_output($notificationEmail)
in

Code: Alles auswählen

function gbook_form_output($notificationEmail, $article_id)
dann in dieser Funktion vor $qry = 'INSERT... einfügen:

Code: Alles auswählen

    $slice = OOArticleSlice::getFirstSliceForArticle($article_id);
    $Slice2 = $slice->getNextSlice();
    if ($Slice2->getValue('6') == 1 or $Slice2->getValue('6') == 0) {
      $status = $Slice2->getValue('6');
    } else {
      $status = 1;
    }
In der Zeile $qry ist dann noch der status zu ergänzen:

Code: Alles auswählen

$qry = 'INSERT INTO '.TBL_GBOOK.' SET status = "'.$status.'", author =...
ACHTUNG! Das ganze setzt vorraus das im Artikel zuerst das Modul Gästebuch - Formular und gleich danach das Modul Gästebuch - Eintragsliste eingebunden ist.

Diese Lösung ist nur eine Zwischenlösung und nur für die hier genannte Konstellation der Module funktionstüchtig.


Am Rande habe ich noch festgestellt, dass in der Datei guestbook/modules/module.list.inc.php in der Funktion gbook_list_output bei der Zeile

Code: Alles auswählen

$qry = 'SELECT * FROM '.TBL_GBOOK.' WHERE status = "'. $status .'" ORDER BY id DESC LIMIT '. ($page * $elementsPerPage).', '.$elementsPerPage;
ein Fehler drin ist.
Richtig ist

Code: Alles auswählen

$qry = 'SELECT * FROM '.TBL_GBOOK.' WHERE status = "1" ORDER BY id DESC LIMIT '. ($page * $elementsPerPage).', '.$elementsPerPage;
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

diavolokor
Beiträge: 30
Registriert: 30. Apr 2005, 23:00

12. Jun 2006, 17:00

Vielen Dank für deine Arbeit! :) Allerdings muss es genau anders rum, erst die EINTRAGSLISTE und dann das FORMULAR.

schön :)

grüße

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

12. Jun 2006, 17:16

Hi,

dieser Fehler war mir auch aufgefallen, und ich hatte ihn bereits Markus gemailt (aber vergessen, dies hier im Forum auch kundzutun).

@Sven - meine Idee, wie man unabhängig von der Reihenfolge der Module werden könnte: Wäre es vielleicht nicht das Einfachste, das Setzen des Status bei einem Neueintrag zu ignorieren und stattdessen einfach nur mit Defaultwerten von MySQL zu arbeiten? Dann müsste man beim Ändern der Vorgaben in der Gästebuch-Ausgabe jeweils diesen Defaultwert anders setzen und müsste sich sonst um nichts weiter kümmern.

Viele Grüße,
Peter.

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

12. Jun 2006, 18:47

pbickel hat geschrieben:stattdessen einfach nur mit Defaultwerten von MySQL zu arbeiten? Dann müsste man beim Ändern der Vorgaben in der Gästebuch-Ausgabe jeweils diesen Defaultwert anders setzen und müsste sich sonst um nichts weiter kümmern.
Das Einfache liegt manchmal so verdammt nahe, dass man es nicht sieht 8)
Das ist die beste Lösung.
Habe mir gestern Nachmittag mit anderen Leuten im IRC den Kopf über eine Lösung dazu zerbrochen ... aber darauf ist keiner gekommen :-)
Werd das gleich mal umsetzen.
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

12. Jun 2006, 18:51

diavolokor hat geschrieben:Allerdings muss es genau anders rum, erst die EINTRAGSLISTE und dann das FORMULAR.
Auch kein Problem.

Dann machen wir aus dem

Code: Alles auswählen

$Slice2 = $slice->getNextSlice();
ein:

Code: Alles auswählen

    $slice = OOArticleSlice::getFirstSliceForArticle($article_id); 
    $Slice2 = $slice->getPreviousSlice(); 
    if ($Slice2->getValue('6') == 1 or $Slice2->getValue('6') == 0) { 
      $status = $Slice2->getValue('6'); 
    } else { 
      $status = 1; 
    }
Ist jetzt aber ungetestet!
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

12. Jun 2006, 21:08

Koala hat geschrieben:Habe mir gestern Nachmittag mit anderen Leuten im IRC den Kopf über eine Lösung dazu zerbrochen ... aber darauf ist keiner gekommen :-)
Freut mich, dass ich weiterhelfen konnte.
Ich kam auch nur darauf, weil ich bislang die Statusänderung für ein Gästebuch immer manuell vorgenommen habe, weil ich die Programmierung im Modul/Addon gescheut habe, und hab das eben dann einfach direkt in der DB gemacht.

Schöne Grüße,
Peter.

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

12. Jun 2006, 22:20

pbickel hat geschrieben:Ich kam auch nur darauf, weil ich bislang die Statusänderung für ein Gästebuch immer manuell vorgenommen habe, weil ich die Programmierung im Modul/Addon gescheut habe, und hab das eben dann einfach direkt in der DB gemacht.
Habs fertig.

Man benötigt eine neue Funktion und eine Aktion die dem Modul "Gästebuch - Eintragsliste" zugewiesen wird.

So und nun etwas ausführlicher.
In der Datei guestbook/modules/module.list.inc.php wird folgende Funktion eingefügt:

Code: Alles auswählen

/**
 * Speichere Status als Defaultwert in die DB
 * 
 * @param int Status
 */
function gbook_saveStatusInDB($status = 1) {
  
  if (isset ($status) and ($status == 0 or $status == 1)) {
    $qry = "ALTER TABLE `rex_91_gbook` CHANGE `status` `status` TINYINT( 1 ) NOT NULL DEFAULT '$status'";
    $sql = new sql();
    //$sql->debugsql = true;
    $sql->query($qry);
    if ($sql->getErrno()) {
      return false;
    }
    return true;
  } else {
    return false;
  }
}
Nun brauchen wir noch eine neue Action:
Actionsname: Gästebuch - Eintragsliste
Eingabe:

Code: Alles auswählen

<?php
// rufe die Funktion zum setzen des Defaultwertes für den Status auf

$errmsg = '';
if ($REX_ACTION['VALUE'][6] == 0 or $REX_ACTION['VALUE'][6] == 1) {
  require_once $REX['INCLUDE_PATH'].'/addons/guestbook/modules/module.list.inc.php';
  // speichere Status in DB
  // im Fehlerfall gib eine Meldung zurück
  if (!gbook_saveStatusInDB($REX_ACTION['VALUE'][6])) {
//    $errmsg = $I18N->msg("saveStatusInDB_SQLFehler");
  }
} else {
//  $errmsg = $I18N->msg("saveStatusInDB_FalscherStatus");
}

if (isset ($errmsg) and $errmsg != '') {
  echo '<table border="0" cellpadding="5" cellspacing="1" width="770"><tr><td class="warning">$errmsg</td></tr></table><br />';
}
?>
(Die $errmsg habe ich jetzt hier mal auskommentiert. Habe mir in den lang-Dateien entsprechendes dazu notiert. Ist jetzt ersteinmal nicht wichtig.)
PRE/POST: POST
STATUS: EDIT

So, nun noch diese Action dem Modul Gästebuch - Eintragsliste zuweisen.
Fertig. .... oder hab ich noch was vergessen?
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

13. Jun 2006, 14:28

Hi zusammen,

In der Laufzeit die Tabellenstruktur zu ändern halte ich nicht für eine gute Lösung...

Aus Sicherheitsgründen hat der MysqlUser den ein Script verwendet normalerweise nur Rechte für SELECT/UPDATE/INSERT/DELETE. Alles andere sollte sich in der Laufzeit nicht ändern.

Gruß,
Markus

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

15. Jun 2006, 00:44

kills hat geschrieben:Aus Sicherheitsgründen hat der MysqlUser den ein Script verwendet normalerweise nur Rechte für SELECT/UPDATE/INSERT/DELETE. Alles andere sollte sich in der Laufzeit nicht ändern.
Ist ein nachvollziebares Argument.
Habe daraufhin auch schon eine andere Variante entwickelt.
Werd ich dann hier später noch kund tun (is mir jetzt etwas zu spät :-)).
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

andre.5tz
Beiträge: 33
Registriert: 28. Nov 2005, 22:20

15. Jun 2006, 12:13

Hallo,

leider komme ich erst jetzt dazu, auf die Frage von diavolokor zu antworten.
hm, ich habe das mal hochgeladen und es funktioniert alles (emailbenachrichtigung, online/offline schaltung) aber wenn ich zwischen Veröffentlichung nach Freigabe: Ja oder Nein wähle passiert bei Beidem das gleiche, nämlich dass der Eintrag sofort veröffentlicht wird....

woran liegt das ?
In der install.sql ist der Defaultwert für Status auf '1' gesetzt. Es werden alle neuen Einträge daher mit dem Wert '1' gespeichert!
Da '0' = offline und '1' = online bedeutet, werden natürlich alle Einträge angezeigt, da hab ich wohl nicht richtig aufgepasst :?

Die Lösung sollte daher auch ganz einfach sein. Bei einer Intallation müsste vorher noch in der install.sql der Defaultwert für Status auf '0' gesetzt werden, bitte auch mal im CSV ändern.
Bei einem schon installierten Geästebuch kann der Wert in der Datenbank zum Bsp. über phpmyadmin auf '0' gesetzt werden. (Standart = 0)

Ich gehe davon aus, dass es dann funktionieren sollte. Es spielt dann sicher auch keine Rolle, ob das Formular vorher oder nachher kommt oder in einem anderen Artikel liegt.

Gruß
André

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

15. Jun 2006, 20:02

Hi zusammen,
andre.5tz hat geschrieben:Bei einem schon installierten Geästebuch kann der Wert in der Datenbank zum Bsp. über phpmyadmin auf '0' gesetzt werden. (Standart = 0)
Es heisst "Standard" und ist im CVS :)

Gruß,
Markus

diavolokor
Beiträge: 30
Registriert: 30. Apr 2005, 23:00

16. Jun 2006, 08:20

funktioniert! einwandfrei ;)

Dankeschön!

grüße

diavolokor
Beiträge: 30
Registriert: 30. Apr 2005, 23:00

23. Jun 2006, 22:38

Hm...Kann man irgentwie bestimmen, dass nach einem bestimmten Zeitintervall offline gesetzte Beiträge automatisch gelöscht werden ?

Dankeschön.

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

24. Jun 2006, 10:49

Hi,

nein, das geht aktuell nicht und wird auch nie direkt von mir ins Gbook programmiert, da es doch sehr speziell ist... Ich kann mir nicht vorstellen, dass das öfter gebraucht wird...

Aber sollte dennoch auch ganz einfach umsetzbar sein...
Ist mit einem SQL getan...

Gruß,
Markus

Zurück zu „Allgemeines [R3]“