Tagesupload Beschränkung Tagesupload Beschränkung
 

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

Tagesupload Beschränkung

Started by IrrerIvan, June 16, 2007, 08:19:44 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

IrrerIvan

Hallo,
folgende Frage, ich würde gerene den Useren eine Limit für den Upload zuweisen.
Also jeder User " ausser Admins" kann nur max. 5 Fotos pro Tag hochladen, und das ganze halt solange bis sein
Speicherplatz der als Gruppen Quota festgelegt ist verbraucht ist.

Ich habe dazu auch die Posts von Stramm gelesen und versucht den HAck den er angegeben hat umzusetzen nur kommt da keinerlei veränderung dabei rum.
Auch nach dem Einbau des HAck kann jeder nicht Admin mehr als ein Bild  hochladen " 1 Foto war die Vorgabe in dem Hack"

auch die Unix-Timestamp erweiterung brachte kein resultat, es wäre nett um eine hilfreiche Antwort.

Folgende Modifikaton habe ich ausprobiert;

Quote// Test if disk quota exceeded
    if (!GALLERY_ADMIN_MODE) {
        $result = cpg_db_query("SELECT pid FROM {$CONFIG['TABLE_PICTURES']} WHERE owner_name = '" . (USER_NAME) . "'");
        $record = mysql_fetch_array($result);
        $total_space_used = count($record);
        mysql_free_result($result);

        if ($total_space_used > 1 ) {

Gruß

IrrerIvan

PS .
ich verwende jetzt diesen code jetzt
Quote// Test if disk quota exceeded
    if (!GALLERY_ADMIN_MODE) {
        $result = cpg_db_query("SELECT pid FROM {$CONFIG['TABLE_PICTURES']} WHERE owner_id = " . USER_ID . " AND ctime > UNIX_TIMESTAMP() - 86400");
        $record = mysql_fetch_array($result);
        $total_space_used = count($record);
        mysql_free_result($result);

        if ($total_space_used > 5 ) {
            @unlink($image);
            if (is_image($image)) {
                @unlink($normal);
                @unlink($thumb);
            }
            $msg = strtr($lang_errors['quota_exceeded'], array('[quota]' => ($USER_DATA['group_quota']),
                '[space]' => ($total_space_used >> 10)));
            cpg_die(ERROR, $msg, __FILE__, __LINE__);
        }
    }
Mit dem Wert 1 funzt es einwandfrei jedoch möchte ich geren das die User max. 5 Bilder pro Tag uploaden können und das klappt nicht denn
wenn ich den Wert von 1 auf 5 ändere können die hochladen bis der Speicherplatz quota erschöpft ist.

Wo mache ich einen Denkfehler.

Bitte um Hilfe

IrrerIvan

hat kener einen Hinweis für mich??

IrrerIvan

Tja wäre wenigstens Nett wenn Ihr mir irgendwas sagen würdet auch wenn es nur
ist das Ihr derzeit keine Zeit habt, aber garkeine Antwort.

Gruß

Stramm

ha, Zeit ist immer knapp... aber ich kann Dir mal meine 'auf den ersten Blick' Meinung sagen...

statt
AND ctime > UNIX_TIMESTAMP() - 86400
mal
AND ctime > UNIX_TIMESTAMP(ctime) > NOW()-86400

Ob das nun richtig ist??? Keine Ahnung. Ich benutze die obigen MySQL Funktionen nicht besonders oft. Dein Ansatz scheint aber nicht das gewünschte Ergebnis zu produzieren. Dann wäre es doch das einfachste, auf leicht Überprüfbares auszuweichen, z.B. der PHP time() Funktion
AND ctime > ".time() - 86400."
oder so ähnlich

IrrerIvan

Hi Stramm,
also dertimestamp funzt was nicht funktioniert ist,
das ich die max. Uploadzahl der täglichen Fotos von 1 auf 5 erhöhen kann.

Solange
Quoteif ($total_space_used > 1 ) {
eingetragen ist funzt alles prima jedoch wenn ich das auf
Quoteif ($total_space_used > 5 ) {
verändere dann funzt die Beschränkung nicht mehr und die User können auch mehr als 5 fotos pro Tag uploaden.

Gruß

Stramm

Lass Dir mal $total_space_used anzeigen und dann weisst Du, ob Dein Query funktioniert

Scheinbar geht's ja gerade eben nicht

IrrerIvan

okay also wenn ich
Quote$total_space_used
versuche anzeigen zu lassen dann kommt nichts, was aber nicht bedeuten muss
das was falsch läuft.
evtl. habe ich nur die Abfrage falsch gestartet, ich habe das mit $display...
getan.
Sollte die
Quote$total_space_used
nicht funzen, was wäre dann der Ansatz
um auf das gewünschte Ergebniss zu kommen?.

Stramm

Versteh ich nicht! Was hast Du mit '$display' gemacht, woher kommt denn das jetzt auf einmal.

Wenn Dein Query nicht die richtigen Daten in die var $total_space_used packt, dann änderst Du das Query. Das wäre ein vernünftiger Ansatz, wie schon oben geschrieben.

Zum Verständnis nochmals... Dein Query durchsucht die Datenbank. Du holst Einträge raus, die dem Kriterium entsprechen user=x, Zeit/ Datum= letzte 24h
Nun zählst Du die gefundenen Einträge und speicherst diese Zahl in $total_space_used
Wenn user x heute schon 6 Bilder hochgeladen hat und
if ($total_space_used > 5 ) {
keinen Trigger auslöst, dann ist nichts mit $total_space_used falsch (so., da steht nur die Anzahl Ergebniszeilen Deiner Abfrage), sondern Dein Query hat irgendwas schräges abgefragt, aber nicht, was Du eigentlich willst.


IrrerIvan

ah okay
was dann logisch erscheint weil
ja dein Orginal Hardlimit funzt.

Nur dann verstehe ich nicht ganz wenn ich deinen Abfrage zu Grunde lege und dem ganzen nur eine Time Variante hinzufüge
dann sollte das doch eigentlich klappen.
Tut es nur leider nicht, denn wenn ich deinen Code im Orginal belasse wird nach 1 Upload gesagt Limit ereicht
wenn ich dann die Time variante hinzufüge und das Limit trozdem auf 1 stehen lasse dann funzt das auch. Was heisst jeder User könnt innerhalb von 24 Std. nur ein Foto hochladen und dann erst wiedr in 24 Std. das nächste.

So wenn ich nun das Limit von 1 auf 5 verändere ansonsten nichts an dem Code ändere dann funt das nicht mehr und die User können solange Bilder hochladen bis der vorgegebene Speicherplatz " Gruppen Quota" erreicht ist.

Und genau das ist es was mich so stuzig macht.

Gruß

Stramm

Funktioniert denn Deine Time Abfrage?? Wie oben schon mal geschrieben, kommt mir Deine Syntax falsch vor. Deswegen solltest Du das Ergebnis des Queries anzeigen lassen. Ohne es zu überprüfen sind alle veränderungen am nachfolgenden Code sinnlos. Trotzdem gehst Du immer davon aus, dass Dein Query ein Ergebnis liefert, das Deinen Vorstellungen entspricht. Tut es aber nicht (jetzt drehen wir uns wieder im Kreis), da ja der Restcode nicht so klappt wie Du das meinst. Den Rest basierst Du aber auf ein Ergebnis, welches Du nicht kennst und nicht überprüft hast.

Mehr kann ich da echt nicht sagen. Du musst Deine Queries testen und nicht darauf vertrauen, dass sie schon das richtige Ergebnis liefern werden.

Hast Du meine Vorschläge von oben versucht und die Ergebnisse verglichen?

Stramm

um Dich nicht weiter zu verwirren... hier mein Ansatz

In picmgmnt.inc.php ersetze man
        $result = cpg_db_query("SELECT sum(total_filesize) FROM {$CONFIG['TABLE_PICTURES']}, {$CONFIG['TABLE_ALBUMS']} WHERE  {$CONFIG['TABLE_PICTURES']}.aid = {$CONFIG['TABLE_ALBUMS']}.aid AND category = '" . (FIRST_USER_CAT + USER_ID) . "'");
        $record = mysql_fetch_array($result);
        $total_space_used = $record[0];
        mysql_free_result($result);

        if ((($total_space_used + $total_filesize)>>10) > $USER_DATA['group_quota'] ) {

durch

$temp_time = time() - 86400;
        $result = cpg_db_query("SELECT COUNT(*) FROM {$CONFIG['TABLE_PICTURES']} WHERE owner_id = " . USER_ID . " AND ctime >= {$temp_time}");
        $record = mysql_fetch_row($result);
        $uploaded_last24h = $record[0];
        mysql_free_result($result);

        if ( $uploaded_last24h >= $USER_DATA['group_quota'] ) {



im group control panel kann man ab fortan nicht mehr kb einstellen sondern Stück (Beschriftung ist nicht geändert). Gibt man 0 ein, erfolgt keine Beschränkung. Limitiert man nun z.B. die Quota be der Group 'Registered' auf 5 'KB', dann kann ein Angehöriger der Registered Group innerhalb eines 24 Stunden Zeitraumes nur 5 Bildchen hochladen. Fehlermeldungen wären noch anzupassen (limit exceeded etc.)

Evtl. ändert man den 24h Zeitraum auf Tage, sprich am 1.7.2007 kann der user 5 Bilder hochladen, am 2.7 auch. Ganz egal, ob er am 1.7 um 5min vor 12 und am 2.7. um 5min nach 12 hochlädt.

So, dann mal viel Spaß.

IrrerIvan