Bilder-Voting / Fotos bewerten

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

Bilder-Voting / Fotos bewerten

Beitrag von derSteffen » Do 14. Feb 2013, 17:51

Hallo Community,

die Frage wurde vor längerer Zeit schon mal gestellt und ich wollte fragen ob jemand dafür eine Idee hat.
Es geht um das voten / bewerten von Bildern. Man könnte natürlich für jedes Bild einen Artikel anlegen und das mit dem Bewertungsmodul dann realisieren aber schöner wäre es, wenn man mit Hilfe einer Bildergalerie einem Bild eine "Stimme" geben kann. Eine IP-Sperre wäre natürlich von Vorteil! Es geht eigentlich nur um das Zählen der Klicks auf einem Bild (bzw. würde ich auf ein Bild ein Vote-Icon platzieren). Hätte da jemand eine Idee oder ein Tipp für mich?

Vielen Dank

MfG Steffen

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Bilder-Voting / Fotos bewerten

Beitrag von Spider IT » Do 14. Feb 2013, 18:09

Hallo Steffen,

ich würde das (evtl. per Ajax übermittelt) über das Feld "Interne Bemerkung" in der Dateiverwaltung machen.
Dazu muss die Galerie dieses Feld auslesen, den darin gespeicherten Wert (als Integer) um eins erhöhen, und den neuen Wert speichern.
Das Auslesen hab ich schonmal gemacht, das findest du in mein Modul eCards (daraus werden die individuellen Einstellungen gelesen), aber das Speichern noch nicht (sollte aber auch kein Problem sein).

Gruß
René

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

Re: Bilder-Voting / Fotos bewerten

Beitrag von derSteffen » Do 14. Feb 2013, 19:36

Hallo René,

könnte man denn die Anzahl der Klicks dann auch ausgeben? Also. z.B. zum Ende des Votings, dass man die Klicks/Zahlen auf den Fotos sieht ... eigentlich doch ja, oder?! Ist ja in der DB dann schon drinn.

Wäre denn eine IP-Speere für 24h ebenfalls möglich (eventuell zusätzlich mit Cookie-Sperre).

Ich habe hier schon einen sehr guten Ansatz gefunden, wo ich glaube dass man das in einer Contenido-Bildergalerie mit einabauen könnte. Einfach den Dislike-Button weglassen und mit einer IP-Sperre zusätzlich ausstatten und man hätte eine externe Lösung. Oder man kombiniert das mit deinem Ansatz.

Vielen Dank

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Bilder-Voting / Fotos bewerten

Beitrag von Spider IT » Do 14. Feb 2013, 20:48

Hallo Steffen,

die Klicks mit auszugeben sollte einfach sein, denn man kann sie in dem Galeriemodul mit auslesen.
Eine IP-Sperre könnte schwieriger werden, denn dafür musst du zu jedem Bild pro Klick die IP-Adresse und Uhrzeit speichern, um sie dann beim Klick zuerst abzugleichen.
Möglich wäre das schon, aber dafür brauchst du dann eine externe (Text-)Datei oder optimalerweise eine separate Datenbanktabelle (3 Spalten für Bilddateipfad, IP-Adresse und Datum/Uhrzeit).

Gruß
René

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Bilder-Voting / Fotos bewerten

Beitrag von McHubi » Fr 15. Feb 2013, 10:24

Hallo zusammen,

gebe ich René Recht. Ich habe so eine Bewertung einmal - vor recht langer Zeit - selbst einmal umgesetzt. Auch mit IP-Sperre, Blacklist und was auch immer in eigenen DB-Tabellen. Fazit: Solange kein Captcha oder ähnliches dazwischen geschaltet wird: vergiss es. Ein Blocken der IP hilft auch nur wenig, weil es in der Regel nur eine mehrfache Bewertung eines Bildes verhindert. Ein Bot springt Dir die ganze Galerie durch und klickert munter drauf los. Letztlich müsstest Du dann auch später alle Botklicks die in der Blacklist gelandet sind aus den insgesamt abgegebenenen Bewertungen herausfiltern um eine korrekte "menschliche" Bewertung zu erhalten.

Die Schwierigkeit bei der Blacklist ist: Wie willst Du feststellen, ob bei der ersten Bewertung/ dem ersten Auftauchen der IP ein Bot am Werke ist? Gut, ein Hinweis könnte die Bewertung zu nachtschlafener Zeit um 3:14 Uhr in der Früh sein, wenn Deine Seitenbesucher lt. Piwik und Co. dann praktisch nie auf Deiner Seite sind. Auch die Anzahl der Bewertungen innerhalb einer bestimmten Zeitspanne liefert einen Hinweis - kein Mensch bewertet in 30 Sekunden 30 Bilder (und wenn, dann wäre das auch gleichzusetzen mit Spamvoting). Das ist aber alles wie der nasse Daumen im Wind. Und selbst wenn Du eine "böse" IP erwischst, dann kommt sie auf die Blacklist. Beim nächsten Besuch des Bots hat er eine andere Adresse und das Spiel geht von vorne los.

Fazit: Ohne Captcha oder ähnliches kannst Du korrekte, nur durch Menschen veranlasste Bewertungen vergessen.

Gruß,


Markus
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Bilder-Voting / Fotos bewerten

Beitrag von Oldperl » Fr 15. Feb 2013, 17:40

derSteffen hat geschrieben:Hätte da jemand eine Idee oder ein Tipp für mich?
Ein Bilder-Voting hab ich als fertiges Modul, falls du sowas brauchst, und wenn ich es schaffe, dann kann ich ja am Wochenende mal eine Demo aufsetzen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

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

Re: Bilder-Voting / Fotos bewerten

Beitrag von derSteffen » Mi 27. Feb 2013, 18:26

VIelen Dank für alle Hinweise und Antworten. Ich bin am Thema dran!

@ oldperl ... dieses Angebot ist natürlich verlockend. Ich würde natürlich gerne einen Blick auf die Demo werfen, wenn es Dir keine Umstände macht :-)

MfG Steffen

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Bilder-Voting / Fotos bewerten

Beitrag von Oldperl » Fr 1. Mär 2013, 13:17

@derSteffen ... Umstände macht es schon, aber die mach ich mir gern :)
Ich hab aber beim Nachschaun gesehen das es sich um Module und Plugin handelt für ein Bilder-Voting mit Anmeldung der Teilnehmer per Frontend-Formular und Voting in einer Galerie. Falls ich trotz Grippe am Wochenende dazu komme dann richt ich das mal ein, meld mich wieder.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Bilder-Voting / Fotos bewerten

Beitrag von McHubi » Fr 1. Mär 2013, 13:29

Bilder-Voting mit Anmeldung der Teilnehmer per Frontend-Formular
Damit wäre dann auch das Thema "Spam" mehr oder weniger abgefrühstückt, allerdings mit dem Nachteil, dass ein "nur mal vorbei schneiender" Besucher vermutlich kein Voting abgeben wird.

Gute Besserung Ortwin! :D
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

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

Re: Bilder-Voting / Fotos bewerten

Beitrag von derSteffen » Fr 1. Mär 2013, 14:59

Hallo Ihr beiden,

@Oldperl ... eine Registrierung sollte eigentlich erst gar nicht erfolgen. Du könntest mir ja auch per Mail oder PN schreiben, was dass Bilder-Voting kosten würde (ohne Änderungen)

Danke Dir

Gute Besserung weiterhin!

MfG Stefefn

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

Re: Bilder-Voting / Fotos bewerten

Beitrag von derSteffen » Fr 12. Apr 2013, 16:48

Ich habe, bzw. bin jetzt dabei mein Bildervoting zu erstellen.

Das Klappt auf Cookie-Basis auch schon ganz gut, da ich mich diesem Script bedient habe (http://www.phpkobo.com/ajax_likes.php).

Mit diesem Code generiere ich jedes Bild

Code: Alles auswählen

// Manipulation/Ausgabe für die Webseite
echo '<div class="ld-container" tid="'.$imgname.'" action="voting/ajax_likes.php">';
echo '<a href="'.$img2 .'"><img src="$imgb .'" width="'. $imgcropwidth .'" height="'. $imgcropheight .'" /></a>';
echo '<button type="button" class="ld-btn-like" title="I like it"><img class="ld-img-like" src="images/thumbs-up-ss.png"></button> <span class="ld-stats-txt"></span>';
echo '</div>';
Nun möchte ich das aber um eine IP-Sperre erweitern, wobei nicht die seite gesperrt werden soll, sondern für 24h das Bild (man kann also mehre Bilder voten, aber ein und das selbe Bild nur einmal).

Also benötige ich eine SQL-Tabelle wo die Ip gespeichert wird, den Timestamp und die Bild-ID.
bei mir ist die Bild-Id = der Bildname ohne Dateiendung.

Das ist meine MySQL-Tabelle:

Code: Alles auswählen

CREATE TABLE `con_imagevoting` (
  `ip` varchar(20) NOT NULL default '',
  `time` int(15) NOT NULL default '0',
  `imagenameid` varchar(30) NOT NULL default ''
) TYPE=MyISAM;
Aber jetzt weiß ich gar nicht weiter!
A. Wie ich die daten in die Tabelle bekomme
B. Wie ich Ip und Img-Id abfrage und vergleiche
C. was überhaupt passieren soll, wenn Ip und Bild-Ip bereits in der Tabelle sind -> wahrscheinlich den Vote-Button am besten ausblenden!

Könnte mir jemand mit einem Code-Schnipsel einen kleinen oder großen Anstoss geben.

Nachtrag:

Diese beiden Funktionen (gefunden hier: http://tutorials.designnation.de/worksh ... re-Version) helfen mir die Ip zu speichern und abzufragen.

Code: Alles auswählen

<?php
  function check_ip ($ip,$sek,$type,$die) {
    if($ip && $sek && $type) { // Nur fortsetzen wenn alle benötigten Parameter angegeben sind
      $ips = array(); // Ein leeres Array erstellen
      $sql = "SELECT ip FROM con_imagevoting WHERE time > '".( time() - $sek )."' AND imagenameid = '".$type."'"; // Die SQL Abfrage
      $result = mysql_query($sql); // SQL Abfrage in Array Packen
      while($row = mysql_fetch_assoc($result)) { // Einzeln "Bearbeiten"
        array_push($ips,trim($row['ip'])); // Jede IP in das vohon erstellte Array einfügen
      }

      if(in_array($ip,$ips)) { // Wenn IP Gesperrt
        if($die && $die != false) { // Falls der Parameter $die gesetzt ist und er nich false ist
          die("<b>Deine IP (".$ip.") ist gesperrt!</b>"); // Beendet das Script
        } else { // Fals nicht
          return true; // Gib true aus (für eine IF abfrage)
        }
      } else {  // IP Nicht Gesperrt
        return false; // Gib false aus (für eine IF abfrage)
      }
    } else { // Nicht alle benötigten Parameter vorhanden 
      return false; // Gib false aus (für eine IF abfrage)
    }
  }
  
   function add_ip ($ip,$type) {
    if($ip && $type) { // Nur fortsetzen wenn alle Parameter angegeben sind
      // $insert = mysql_query("INSERT INTO con_imagevoting ( ip , time , imagenameid ) VALUES ( '".$ip."' , '".time()."' , '".substr($type,0,10)."' )");
      $insert = mysql_query("INSERT INTO con_imagevoting ( ip , time , imagenameid ) VALUES ( '".$ip."' , '".time()."' , '".$type."' )");
      if($insert) { // Wenn erfolgreich eingefügt wurde
        return true; // Gib true aus (für eine IF abfrage)
      } else {
        return false; // Gib false aus (für eine IF abfrage)
      }
    } else {
      return false; // Gib false aus (für eine IF abfrage)
    }
  }
?>
Hier eine Beispielabfrage:

Code: Alles auswählen

if(check_ip($_SERVER['REMOTE_ADDR'],"3600","$imgname",false)) { 

  echo "Deine IP Ist gesperrt"; 

  //oder andere Befehle

} else {

  echo "Du darfst hier verweilen";

  //oder andere Befehle

}
Klappt auch wunderbar, jetzt weiß ich aber nicht, wie ich die IP nur speichere wenn ich auf den Button klicke! Denn mit

Code: Alles auswählen

add_ip($_SERVER['REMOTE_ADDR'],"$imgname");
speichert er mir das für alle Bilder automatisch, ohne auf einen Button zu klicken! Und vor allem speichert er all Bilder und alle IPs. Ich will aber, dass er immer nur pro Klick auf ein Bild und die IP, Imagname, und Zeit abspeichert und nicht gernerell für alle 45 bilder.

Code: Alles auswählen

echo '<form class="ld-container" tid="'.$imgname.'" action="voting/ajax_likes.php" method="post">';
echo '<a href="'.$img2 .'"><img src="'. $imgb .'" /></a>';
echo '<button type="button" class="ld-btn-like" title="I like it" name="'.$imgname.'"><img class="ld-img-like" src="images/thumbs-up-ss.png"></button> <span class="ld-stats-txt"></span>';

add_ip($_SERVER['REMOTE_ADDR'],"$imgname");
clear_ip();
echo '</form>';
$z++;
Hat noch jemand dafür eine Lösung?!


Vielen Dank

MfG Steffen

Gesperrt