Artikelbewertungen sicherer machen

Thema wurde von survival74, 13. Juni 2012 erstellt.

  1. survival74
    survival74 Erfahrener Benutzer
    Registriert seit:
    26. April 2011
    Beiträge:
    245
    Danke erhalten:
    36
    Danke vergeben:
    69
    Hallo,

    Artikelbewertungen werden leider immer sofort veröffentlicht. Das Captcha bietet etwas Schutz vor Spambots, aber nicht vor Menschen. Auch die Beschränkung auf Kundengruppen mit Konto (also keine Gast-Bewertungen) bietet da nur einen geringen Schutz, da Kundenkonten schnell mit Fake-Daten anlegbar sind.

    Die Artikelbewertungen sind somit vergleichbar mit Kommentaren in Blogs. Und für die ist der Blog-Inhaber verantwortlich. Gleiches "Recht" dürfte vermutlich auch in Shops gelten.
    Im harmlosesten Fall kann jemand die Artikelbewertungen missbrauchen um schnell die Produkte mies zu machen, im schlimmsten Fall sind es bösartige Kommentare die gegen bestehendes Recht verstoßen. In beiden Fällen bekommt man es aber meist nicht schnell genug mit um zu reagieren.

    Ich finde es höchst bedenklich und absolut unerwünscht, dass praktisch JEDER Besucher den Inhalt des Shops SOFORT für alle sichtbar verändern kann!!!

    Daher der Feature-Request. die Artikelbewertung moderierbar zu machen:
    Nach dem Absenden einer Artikelbewertung soll diese nur gespeichert aber nicht angezeigt werden. Als Bestätigung sollte eine Meldung eingeblendet werden, dass die Bewertung erst nach einer Überprüfung freigeschaltet wird. Gleichzeitig wird der Shop-Admin über die neue Bewertung per Mail informiert. Im Backend kann man dann die Artikelbewertungen einzeln freischalten. Noch nicht freigeschaltete Bewertungen sollten natürlich an keiner Stelle zu sehen sein, also weder in der Box, noch unter oder bei dem Produkt oder auf der Reviews-Übersicht.

    Etwas vergleichbares habe ich für XTC gefunden (http://www.xtc-modified.org/forum/index.php?topic=2090.0), aber leider
    - ist es nicht für GX2
    - und ich kann es nicht auf GX2 portieren, dafür fehlen mir die Programmierkenntnisse
    - scheint für den Bewerter keine Meldung ausgegeben zu werden, dass die Bewertung erst noch überprüft werden muss
    - bekommt der Admin keine Mail über die neue Artikelbewertung
     
  2. Danny
    Danny Erfahrener Benutzer
    Registriert seit:
    17. Juni 2011
    Beiträge:
    1.398
    Danke erhalten:
    179
    Danke vergeben:
    213
    @ GAMBIO:

    Dieses Feature würde auf jeden Fall Sinn machen und ich würde mir dies auch unbedingt wünschen. Rein rechtlich ist dies wirklich eine Grauzone, wo ein findiger Anwalt auch ganz schnell etwas hinein projetzieren könnte. Also Daumen hoch und die Artikelbewertungen in Zukunft moderierbar machen...*pls*:D
     
  3. sileo
    sileo Erfahrener Benutzer
    Registriert seit:
    22. März 2012
    Beiträge:
    2.266
    Danke erhalten:
    274
    Danke vergeben:
    205
    Ups, wir wollen die Artikelbewertungen zukünftig nutzen und ich habe gedacht (leider noch nicht nachgelesen) es wäre so, wie survival74 fordert.

    Das ist ja böse, also da stimme ich zu, dass hier eine Änderung dringendst Sinn macht.
     
  4. der24hshop.de
    der24hshop.de Erfahrener Benutzer
    Registriert seit:
    9. Januar 2012
    Beiträge:
    59
    Danke erhalten:
    12
    Danke vergeben:
    40
    Ich bin hier auch sofort dabei! Die Freischaltung der Artikelbewertungen könnte doch nach dem gleichen Prinzip "Kommentare Gästebuch" freischalten ablaufen, oder? :rolleyes:
     
  5. Daniel (Gambio)
    Daniel (Gambio) Erfahrener Benutzer
    Registriert seit:
    8. April 2011
    Beiträge:
    1.901
    Danke erhalten:
    1.621
    Danke vergeben:
    424
    Finde ich auch Sinnvoll. Wir werden das mal mit aufnehmen und besprechen.
     
  6. survival74
    survival74 Erfahrener Benutzer
    Registriert seit:
    26. April 2011
    Beiträge:
    245
    Danke erhalten:
    36
    Danke vergeben:
    69
    Hallo Daniel,

    es freut mich, dass du das auch sinnvoll findest. Gibt es schon einen neuen Status?! Ich will ja nicht nerven oder drängeln - aber gerne Mailbeez einsetzen um Produktbewertungen zu sammeln ;)

    Und bevor ich die Produktbewertungen etwas prominenter in den Vordergrund stelle würde ich halt schon gerne dieses offene Scheunentor geschlossen wissen.
     
  7. Daniel (Gambio)
    Daniel (Gambio) Erfahrener Benutzer
    Registriert seit:
    8. April 2011
    Beiträge:
    1.901
    Danke erhalten:
    1.621
    Danke vergeben:
    424
    Nein, das werden wir auch nicht in den nächsten Tagen umsetzen können, wird auf jeden Fall etwas dauern.
     
  8. survival74
    survival74 Erfahrener Benutzer
    Registriert seit:
    26. April 2011
    Beiträge:
    245
    Danke erhalten:
    36
    Danke vergeben:
    69
    #8 survival74, 16. Juni 2012
    Zuletzt bearbeitet: 17. Juni 2012
    Moderierbare Artikelbewertungen

    Die Problematik hat mir keine Ruhe gelassen und warten wollte ich auch nicht. Daher habe ich mich dran gesetzt und so lange getüftelt bis alles funktioniert. Nachfolgend kommt nun das Ergebnis meiner Anstrengungen, moderierbare Artikelbewertungen für GX2 !

    Wie immer bei solchen Anleitungen gilt auch hier: ich habe zwar alles nach bestem Wissen und Gewissen getestet und beschrieben, trotzdem erfolgt der Einbau auf eigene Gefahr und Risiko. Dateien und Datenbank vorher sichern nicht vergessen! Und am Besten erstmal in einer reinen Testumgebung einbauen!!

    Die Anleitung basiert auf diesem Modul für XTC:
    http://www.xtc-load.de/2009/09/bewertungen-als-admin-freischalten/

    Die dort vorhandene zip-Datei herunterladen und auspacken. Teile davon werden nachher benötigt!


    1. Folgenden SQL Befehl ausführen:

    Code:
    ALTER TABLE `reviews` ADD `reviews_status` INT( 1 ) NOT NULL DEFAULT '0';
    Damit bekommt die Tabelle reviews eine neue Spalte "review_status", die standardmäßig mit "0" gefüllt ist, das geht auch automatisch bei neuen Bewertungen.

    In den nächsten Schritten müssen die Dateien angepasst werden, die die Artikelbewertungen ausgeben. Und zwar so, dass nur der review_status "1" (der Status der freigegebenen Bewertungen) angezeigt wird:

    2. /reviews.php (alle Reviews)

    suche nach:
    Code:
    $reviews_query_raw = "select r.reviews_id, left(rd.reviews_text, 250) as reviews_text, r.reviews_rating, r.date_added, p.products_id, pd.products_name, p.products_image, r.customers_name from ".TABLE_REVIEWS." r, ".TABLE_REVIEWS_DESCRIPTION." rd, ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd where p.products_status = '1' and p.products_id = r.products_id and r.reviews_id = rd.reviews_id and p.products_id = pd.products_id and pd.language_id = '".(int) $_SESSION['languages_id']."' and rd.languages_id = '".(int) $_SESSION['languages_id']."' order by r.reviews_id DESC";
    ersetze mit:
    Code:
    $reviews_query_raw = "select r.reviews_id, left(rd.reviews_text, 250) as reviews_text, r.reviews_rating, r.date_added, p.products_id, pd.products_name, p.products_image, r.customers_name from ".TABLE_REVIEWS." r, ".TABLE_REVIEWS_DESCRIPTION." rd, ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd where p.products_status = '1' and p.products_id = r.products_id and r.reviews_id = rd.reviews_id and p.products_id = pd.products_id and r.reviews_status = '1' and pd.language_id = '".(int) $_SESSION['languages_id']."' and rd.languages_id = '".(int) $_SESSION['languages_id']."' order by r.reviews_id DESC";
    3. /product_reviews.php (Liste der Reviews)

    suche nach:
    Code:
    $reviews_query = xtc_db_query("select reviews_rating, reviews_id, customers_name, date_added, last_modified, reviews_read from ".TABLE_REVIEWS." where products_id = '".(int) $_GET['products_id']."' order by reviews_id DESC");
    ersetze mit:
    Code:
    $reviews_query = xtc_db_query("select reviews_rating, reviews_id, customers_name, date_added, last_modified, reviews_read from ".TABLE_REVIEWS." where products_id = '".(int) $_GET['products_id']."' AND reviews_status = '1' order by reviews_id DESC");
    4. /product_reviews_info.php (eine Review)

    suche nach:
    Code:
    $reviews_query = "select rd.reviews_text, r.reviews_rating,  r.reviews_id, r.products_id, r.customers_name, r.date_added,  r.last_modified, r.reviews_read, p.products_id, pd.products_name,  p.products_image from ".TABLE_REVIEWS." r left join ".TABLE_PRODUCTS." p  on (r.products_id = p.products_id) left join  ".TABLE_PRODUCTS_DESCRIPTION." pd on (p.products_id = pd.products_id and  pd.language_id = '".(int) $_SESSION['languages_id']."'),  ".TABLE_REVIEWS_DESCRIPTION." rd where r.reviews_id = '".(int)  $_GET['reviews_id']."' and r.reviews_id = rd.reviews_id and  p.products_status = '1'";
    ersetze mit:
    Code:
    $reviews_query = "select rd.reviews_text, r.reviews_rating,  r.reviews_id, r.products_id, r.customers_name, r.date_added,  r.last_modified, r.reviews_read, p.products_id, pd.products_name,  p.products_image from ".TABLE_REVIEWS." r left join ".TABLE_PRODUCTS." p  on (r.products_id = p.products_id) left join  ".TABLE_PRODUCTS_DESCRIPTION." pd on (p.products_id = pd.products_id and  pd.language_id = '".(int) $_SESSION['languages_id']."'),  ".TABLE_REVIEWS_DESCRIPTION." rd where r.reviews_id = '".(int)  $_GET['reviews_id']."' and r.reviews_id = rd.reviews_id and  p.products_status = '1' AND reviews_status = '1'";
    

    5. /templates/EyeCandy/source/classes/ReviewsContentView.inc.php (Box)

    suche nach:
    Code:
    r.reviews_id = rd.reviews_id AND
    füge danach ein:
    Code:
    r.reviews_status = '1' AND
    6. /includes/classes/product.php (Anzeige im Produkt)

    suche nach (kommt 2x vor!!!):
    Code:
    where r.products_id = '".$this->pID."'
    ersetze (beide Fundstellen) jeweils mit:
    Code:
    where r.products_id = '".$this->pID."' and r.reviews_status = '1'
    6.1 /includes/classes/product.php
    Zusatzschritt nur für diejenigen, die die Durchschnittssterne über dem Preis anzeigen lassen (nach der Anleitung aus dem anderen Forum)!!

    suche nach:
    Code:
    r.products_id = '". $this->pID ."'");
    füge davor (oder eine Zeile darüber) ein:
    Code:
    r.reviews_status = '1' AND 
    Nachfolgend ist das Backend dran, damit die neuen Bewertungen dann auch freigeschaltet werden können:

    7. /inc/xtc_set_reviews_status.inc.php
    die Datei aus dem zip-Paket nehmen und hochladen

    8. /admin/reviews.php
    die Datei aus dem zip-Paket nehmen, hochladen und damit die vorhandene ersetzen

    9. /lang/german/admin/reviews.php

    suchen nach:
    Code:
    ?>
    davor einfügen:
    Code:
    define('TABLE_HEADING_STATUS','freischalten');
    Damit funktioniert es schonmal. Damit der Besucher nicht auf die Bewertungsübersichtsseite weitergeleitet wird und sich womöglich wundert wo seine Bewertung ist, soll er stattdessen einen Hinweis angezeigt bekommen. Das geht sicherlich auch professioneller, ich habe es auf diese Weise gelöst:

    10. im Content-Manager eine neue Content-Seite anlegen
    in der Art "Vielen Dank für Ihre Bewertung" mit dem Inhalt "Die Bewertung war erfolgreich und wird nach einer Überprüfung später freigeschaltet". Die Gruppen-ID merken, bei mir ist es die 303

    11. /product_reviews_write.php
    suchen nach:
    Code:
    if($error!=true) xtc_redirect(xtc_href_link(FILENAME_PRODUCT_REVIEWS, htmlentities($_POST['get_params'])));
    ersetzen mit (natürlich eigene Content-Gruppen-ID aus Schritt 10. nehmen!):
    Code:
     if($error!=true) xtc_redirect("shop_content.php?coID=303");
    Alles hochladen, Cache leeren (ggf, auch beim Testen, vor allem die Seite /reviews.php (bzw. die dazugehörige cache-html) musste ich immer manuell per ftp löschen um sie sofort zu aktualisieren.) und fast fertig. Nach dem Testen dann noch:

    12. einmalig alle bereits vorhandenen Bewertungen per SQL-Befehl freischalten:
    Code:
    UPDATE `reviews` SET `reviews_status` = '1';
    Leider habe ich keine Ahnung wie man dem System beibringen kann, nach dem Absenden der neuen Bewertung den Admin per Mail darüber zu informieren?

    Durch diese Sicherung kann man nun auch bedenkenlos Gastbewertungen zulassen und ggf. auch das Captcha abschalten. Sind dann gleich zwei Hürden weniger für den Kunden!
     
  9. Danny
    Danny Erfahrener Benutzer
    Registriert seit:
    17. Juni 2011
    Beiträge:
    1.398
    Danke erhalten:
    179
    Danke vergeben:
    213
    Hi,

    so viel Einsatz an einem Samstag Abend... Respekt:D
    Werde es mit Sicherheit in Kürze mal testen. Die letzte Funktion, mit der Benachrichtigung an den Admin wäre wirklich noch eine tolle Sache. Mal schauen...ggf. bekommt es ja einer hin. Ich danke dir jedoch schon mal, für die tolle Leistung...!
     
  10. survival74
    survival74 Erfahrener Benutzer
    Registriert seit:
    26. April 2011
    Beiträge:
    245
    Danke erhalten:
    36
    Danke vergeben:
    69
    Auch Hi,

    "an einem Samstag Abend" ist gut... Angefangen habe ich gestern Nachmittag, dann die halbe Nacht dran gesessen und heute den ganzen Tag über. Mit Unterbrechungen natürlich wie Schlafen, Essen, Einkaufen etc. Jemand der richtig programmieren kann und sich mit System auskennt hätte das garantiert in einem Bruchteil der Zeit geschafft. Aber egal, mir war das Thema halt sehr wichtig... Und jetzt gönne ich mir mal etwas Wochenende :)
     
  11. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.629
    Danke erhalten:
    11.350
    Danke vergeben:
    1.614
    Super,
    hatte ich auch auf meinem Zettel fürs Wochenende, bin aber noch nicht sehr weit gekommen. :)

    Könnte es sein, dass die Codes für "4. /product_reviews_info.php (eine Review)" vertauscht sind?
     
  12. survival74
    survival74 Erfahrener Benutzer
    Registriert seit:
    26. April 2011
    Beiträge:
    245
    Danke erhalten:
    36
    Danke vergeben:
    69
    ups, tatsächlich. Gut aufgepasst! Habe es soeben oben im Beitrag korrigiert.
     
  13. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.629
    Danke erhalten:
    11.350
    Danke vergeben:
    1.614
    Funktioniert einwandfrei, Vielen Dank
     
  14. balou...sagt "Auf Wiedersehn"
    balou...sagt "Auf Wiedersehn" Erfahrener Benutzer
    Registriert seit:
    7. Juni 2011
    Beiträge:
    1.766
    Danke erhalten:
    374
    Danke vergeben:
    134
    @survival74

    sehr saubere arbeit. bin begeistert. funzt alles tadellos. thx.

    vielleicht sollte gambio die paar codeschnippsel mit im shopsystem aufnehmen. bin dafür
     
  15. jox
    jox G-WARD 2012
    Registriert seit:
    26. April 2011
    Beiträge:
    1.676
    Danke erhalten:
    119
    Danke vergeben:
    159
    Ich verstehe den Sinn dieser Änderung immer noch nicht so ganz.

    Werden die vielen Änderungen dazu gemacht, damit die geschriebenen Bewertungen nicht sofort angezeigt werden, sondern erst nach Freischaltung durch den Admin?

    Updatesicher ist das ganze auch nicht, oder?
     
  16. survival74
    survival74 Erfahrener Benutzer
    Registriert seit:
    26. April 2011
    Beiträge:
    245
    Danke erhalten:
    36
    Danke vergeben:
    69
    ja

    nein
     
  17. jox
    jox G-WARD 2012
    Registriert seit:
    26. April 2011
    Beiträge:
    1.676
    Danke erhalten:
    119
    Danke vergeben:
    159
    Muß ich den entpackten Ordner zuerst per FTP installieren (überschreiben)?
     
  18. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.629
    Danke erhalten:
    11.350
    Danke vergeben:
    1.614
    Du übernimmst aus dem entpackten Ordner nur 2 Dateien, wie in der Anleitung beschrieben.
     
  19. jox
    jox G-WARD 2012
    Registriert seit:
    26. April 2011
    Beiträge:
    1.676
    Danke erhalten:
    119
    Danke vergeben:
    159
    Also nur:
    /inc/xtc_set_reviews_status.inc.php
    /lang/german/reviews.php

    ?
     
  20. survival74
    survival74 Erfahrener Benutzer
    Registriert seit:
    26. April 2011
    Beiträge:
    245
    Danke erhalten:
    36
    Danke vergeben:
    69
    #20 survival74, 18. Juni 2012
    Zuletzt bearbeitet: 18. Juni 2012
    ja und nein, bitte die Anleitung LESEN, da stehen alle Schritte drin: