Code für Abgabe von Kommentaren Code für Abgabe von Kommentaren
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Code für Abgabe von Kommentaren

Started by cmfa, January 31, 2011, 09:18:32 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

cmfa

hi,

über die Suchfunktion bin ich auf einen interessanten Artikel gestoßen :D, der für mich und meine Galerie genau zutrifft.  Was muss am Code geändert werden für den Einsatz in 1.5x und wo genau muss er hin, damit ich ihn verwenden kann? Aus dem Artikel geht es nicht wirklich hervor. In der upload.php hatte es so keine Auswirkung.


// Funktion zur Pruefung auf Spender-Usergruppe und Kommentarfaktor.
define('GROUP', 5, true);     // ID der Spendergruppe
define('COMMENTS', 3, true);  // Anzahl der Kommentare die pro Bild noetig sind
$user_id = USER_ID;
$table_u = "cpg14x_users";
$table_c = "cpg14x_comments";
$table_p = "cpg14x_pictures";
$column = "user_group_list";
$query = "SELECT {$column} FROM {$table_u} WHERE user_id = {$user_id}";
$result = cpg_db_query($query);
$result = mysql_fetch_array($result);
if ($result[0] != GROUP) {
   $query_c = "SELECT COUNT(*) FROM {$table_c} WHERE author_id = {$user_id}";
   $result_c = cpg_db_query($query_c);
   $result_c = mysql_fetch_array($result_c);
   $query_p = "SELECT COUNT(*) FROM {$table_p} WHERE owner_id = {$user_id}";
   $result_p = cpg_db_query($query_p);
   $result_p = mysql_fetch_array($result_p);
   $faktor = $result_c[0] / $result_p[0];
   $require_faktor = $result_p[0] * COMMENTS - $result_c[0];
     if ($faktor < COMMENTS) {
       cpg_die(ERROR, " Du hast $result_c[0] Kommentare geschrieben und $result_p[0] Bilder hochgeladen, das ist ein Kommentarfaktor von $faktor<br />Leider zu wenig um weitere Bilder hochzuladen. Du musst mindestens $require_faktor weitere(n) Kommentar(e) schreiben.<br />Alternativ gibt es eine Spendenmoeglichkeit fuer die Galerie.<br />Fuer einen Jahresbeitrag von 10 Euro, wirst Du von jeglichen Uploadbeschraenkungen befreit !", __FILE__, __LINE__);
}
}



VG

CMFA

Αndré

Der Code ist ehrlich gesagt unnötig aufgebläht und dadurch nur schwer nachvollziehbar. Beschreibe einfach genau was du vorhast. Also wieviele Kommentare pro Bild bzw. wieviele Bilder pro Kommentar. Soll das für alle Benutergruppen gelten oder nur für bestimmte? Wenn ja, welche? Und so weiter.

Das dein Code nicht funktioniert könnte vor allem an den hartkodierten Tabellennamen liegen, oder auch daran, dass es in cpg1.5x 2 verschiedene Uploadmethoden gibt und deshalb ggf. 2 mal Code angepasst werden muss.

cmfa

Hi,

gut Frage wie viele Kommentare man ansetzen möchte und wie viele Punkte man abziehen möchte.
Gehen wir mal pro Kommentar von 5 Punkten aus. Pro Upload von 3 Punkte aus. Spendengruppe benötige ich,vorerst nicht.
Damit wären wir eigentlich schon durch.

CMFA

Αndré

Es wäre wirklich hilfreich wenn du mir etwas Arbeit abnehmen würdest, indem du zum einen meine Fragen komplett beantwortest und dann auch in einer Form, dass ich nicht erst alles nochmal durchlesen und auch die verlinkten Themen durchlesen muss.

Du möchtest also, dass deine Benutzer (alle? also auch der Admin? was ist mit Gästen?) pro Kommentar 5 Punkte auf ihr Konto gutgeschrieben bekommen und pro Upload 3 Punkte vom Konto abgezogen bekommen. Stimmt das so?

cmfa

Hi,

sorry, wenn ich nicht richtig bzw vollständig geantwortet habe, das war nicht meine Absicht.
Es soll für alle registrierten User gelten.
Ideal wäre es, wenn man das über Boolean Felder in den Gruppen lösen könnte und dort die Punktzahl auch hinterlegen könnte. Gäste haben keine Uploadberechtigung. Bei der Punktzahl bin ich noch flexibel. Ja 6 Punkte pro Kommentar sind gut und 3 für einen Upload. Es ist Flash und HTML Upload erlaubt.

CMFA

Αndré

#5
Quote from: cmfa on February 01, 2011, 11:43:19 AM
Es soll für alle registrierten User gelten.
Meinst du damit die Benutzergruppe "Registered" oder alle Benutzer, außer Gäste und den Administratoren? Je nachdem wieviele Gruppen du hast, kommt das auf dasselbe hinaus. Trotzdem ist eine präzise Antwort für die Erstellung des Codes erforderlich.


Quote from: cmfa on February 01, 2011, 11:43:19 AM
Ideal wäre es, wenn man das über Boolean Felder in den Gruppen lösen könnte und dort die Punktzahl auch hinterlegen könnte.
Ich weiß was du meinst, allerdings solltest du dir nochmal durchlesen, was man im Datentyp Boolean abspeichern kann ;) Auch hier gilt wieder: leg die Felder in deiner Datenbank an (z.B. mit phpMyAdmin) und sag mir, wie du das Feld genannt hast.


Quote from: cmfa on February 01, 2011, 11:43:19 AM
6 Punkte pro Kommentar sind gut und 3 für einen Upload.
Das wären dann also +2 Punkte pro Kommentar und -1 Punkt pro Upload 8)

cmfa

Hi,

alle Benutzer. Die Benutzer befinden sich bei mir in Gruppe "Registered" bist auf zwei Admins.
Bei Boolean war ich der bisher der Meinung "Yes" und "No" zu haben.
Yes für Funktion aktiv und no für nicht aktiv. Welche Datentyp sollen die Felder haben, ist die Tabelle egal?
Wir könnten Tabelle Comments nutzen mit Comment_point (DECIMAL), Upload_piont(DECIMAL) und Function_Point(Boolean) nennen.
Mh, das letzte seh ich so  8) +6 Punkte -3Punkte, das Punktesystem ist doch sicher später noch änderbar?

CMFA

Αndré

Wie ich bereits in dem anderen Thema geschrieben habe ist es vollkommen überflüssig die Punkte irgendwo zu speichern. Es reicht vollkommen aus in Echtzeit zu überprüfen, wieviele Dateien und Kommentare es von einem bestimmten Nutzer gibt und dann zu entscheiden ob er noch Dateien hochladen darf oder nicht.

Quote from: cmfa on February 01, 2011, 12:27:22 PM
Die Benutzer befinden sich bei mir in Gruppe "Registered" bist auf zwei Admins.
Wozu dann
Quote from: cmfa on February 01, 2011, 11:43:19 AM
Ideal wäre es, wenn man das über Boolean Felder in den Gruppen lösen könnte und dort die Punktzahl auch hinterlegen könnte.
? Ist doch sinnlos den Wert in der Datenbank zu speicher, wenn sich der Mod eh nur auf eine Gruppe auswirkt.


Quote from: cmfa on February 01, 2011, 12:27:22 PM
Mh, das letzte seh ich so  8) +6 Punkte -3Punkte, das Punktesystem ist doch sicher später noch änderbar?
Ja und nein. Wie oben beschrieben wird es keine Punkte in dem Sinne geben, sondern es gibt nur das Verhältnis von Kommentaren zu Dateien. Ob nun 6:3, 2:1 oder 1000:500 - es kommt am Ende immer auf dasselbe raus.

cmfa

Hi,

das mit den Gruppen kann ich ab ändern, gut machen wir drei Gruppen daraus.
Wozu der Aufwand? Es soll etwas erzieherisch wirken, wenn man sich am "Clubleben" beteiligt kann man auch was erwarten.
Ok wenn es keine Punkte gibt.
Das Verhältnis ja dann klar.


VG

CMFA



Αndré

Ich weiß ehrlich gesagt nicht, was du mir mit deinem letzten Beitrag sagen willst. Gerade noch waren deine Benutzer alle in einer Gruppe. Jetzt plötzlich willst du drei Gruppen daraus machen? Ich meine, mir ist das im Endeffekt egal wie du deine Galerie strukturierst. Ich möchte nur irgendwann mal eine klare Antwort, was du überhaupt willst. Bei jeder nachfrage nach Details kommen von dir neue Anforderungen/Ideen. Bedenke bitte, dass ich das hier freiwillig und ohne Bezahlung mache. Irgendwann vergeht mir die Lust, wenn du nicht auf den Punkt kommst.

cmfa

Hi,

ja ich weiß das du es freiwillig machst. :)
Dann legen wir uns fest. Für alle Benutzer in einer Gruppe.
Sonst habe ich alle Fragen beantwortet?

Die anderen Ideen die mir gerade noch gekommen sind zu einem späteren Zeitpunkt im neuen Thread
Vg

CMFA

Αndré


cmfa

Hi,

Quote from: cmfa on February 01, 2011, 12:27:22 PM

alle Benutzer. Die Benutzer befinden sich bei mir in Gruppe "Registered" bist auf zwei Admins.


Αndré

Das wären dann
Quote from: Αndré on February 01, 2011, 12:00:36 PM
alle Benutzer, außer Gäste und den Administratoren
richtig?

cmfa


Αndré

Dann wäre hier meine Lösung. Sie unterscheidet sich nicht wirklich von dem, was ich in dem anderen Thema vorgeschlagen hatte.

Öffne upload.php, finde
if (!USER_CAN_UPLOAD_PICTURES && !USER_CAN_CREATE_ALBUMS) {
    cpg_die(ERROR, $lang_errors['perm_denied'], __FILE__, __LINE__);
}

und füge danach folgendes ein
if (USER_ID && !GALLERY_ADMIN_MODE) {
    $uploads = mysql_result(cpg_db_query("SELECT COUNT(*) FROM {$CONFIG['TABLE_PICTURES']} WHERE owner_id = ".USER_ID), 0);
    $comments = mysql_result(cpg_db_query("SELECT COUNT(*) FROM {$CONFIG['TABLE_COMMENTS']} WHERE author_id = ".USER_ID), 0);
    if ($comments/$uploads < 2) {
        cpg_die(ERROR, "Du hast zu wenig Kommentare um weitere Dateien hochzuladen", __FILE__, __LINE__);
    }
}


Quote from: Αndré on March 19, 2010, 04:22:31 PM
Zusätzlich sollte man dann auch noch vor dem Einfügen in die Datenbank überprüfen, ob noch genügend "Punkte" vorhanden sind (db_input.php). Ansonsten könnte ein Besucher mehrere Upload-Formulare öffnen und somit deine Grenze umgehen.

cmfa

Hi,

danke es funktioniert erstmal so weit. Jedoch bekomme ich auf dem Testsystem in folgender Konstellation die angehängte Fehlermeldung, die über den gesamten Bildschirm geht.
User hat 2 Kommentare gemacht und will mittels Flash 3 Bilder hochladen. Das die Fehlermeldung kommt ist ja klar aber, aber sie sagt irgend etwas anders aus.(Kein hinweis auf die kommentarfunktion) Kann man das abstellen bzw. so ändern das die Fehlermeldung verständlich ist?

CMFA

Αndré

Das liegt mit Sicherheit nicht an dieser Änderung. Lade die originale upload.php-Datei hoch und schau ob der Fehler dann auch auftritt.

cmfa

hi,

Datei neu geladen und Fehlermeldung ist weg.
Leider kommt die Meldung wenn der neue Code drin ist.

VG

Αndré

Hänge bitte deine upload.php-Datei mit den Änderungen an deine nächste Antwort an.