Hallo zusammen,
nach Wochenlangen Tests schreibe ich mal, wie ich das Upload Limit gelöst habe.
Das Limit löst 2 Dinge:
1. Wieviele Bilder kann der User pro Tag hochladen
2. Wieviele Bilder kann der User insgesamt hochladen
Das Grundgerüst, mit dem Kategorien Upload habe ich hier aus dem Forum.
Ich weiß nicht mehr genau von wem das war, trotzdem möchte ich mich dafür bedanken.
In der member.php habe ich folgendes geändert:
suche:
if ($action == "uploadform") {
if ($cat_id != 0 && (!isset($cat_cache[$cat_id]) || !check_permission("auth_upload", $cat_id))) {
show_error_page($lang['no_permission']);
exit;
}
und ersetzte es mit:
if ($action == "uploadform") {
if ($cat_id != 0 && (!isset($cat_cache[$cat_id]) || !check_permission("auth_upload", $cat_id))) {
show_error_page($lang['no_permission']);
exit;
}
else
if ($cat_id != 0 && (!isset($cat_cache[$cat_id]) || !check_permission("auth_upload", $cat_id) || !check_cat_limit($user_id))) {
show_error_page($lang['toomuch']);
exit;
}
else
if ($cat_id != 0 && (!isset($cat_cache[$cat_id]) || !check_permission("auth_upload", $cat_id) || !check_picture_limit($date_check,$user_id))) {
show_error_page($lang['today_too_much']);
exit;
}
füge unmittelbar vor dem Text: if ($action == "uploadform") {
folgendes ein:
(4images_ ist der Präfix der Tabelle, das muß angepasst werden)
/******************************************* Funktion für Tagesupload Limit ******************/
$user_id = $user_info['user_id'];
$date_check = mktime(0,0,0,date("m"),date("d"),date("Y"));
function check_picture_limit($date_check, $user_id) {
$sql = "SELECT image_id FROM 4images_images WHERE image_date>=$date_check AND user_id=$user_id";
$result = mysql_query($sql);
$today_images_user = mysql_num_rows($result);
////////////////////////////////////// auch die freizuschaltenden Bilder limitieren ///////////////
$sql = "SELECT image_id FROM 4images_images_temp WHERE image_date>=$date_check AND user_id=$user_id";
$result = mysql_query($sql);
$today_images_user_temp = mysql_num_rows($result);
$today_images_user=$today_images_user + $today_images_user_temp;
///////////////////////////// Die 2 legt die Anzahl der Uploads pro Tag fest //////////////////////////
if ($today_images_user >= 2) {
return false;
}else{
return true;
}
}
/**************************************Funktion fuer Gesamt Upload Limit ********************************/
$user_id = $user_info['user_id'];
function check_cat_limit($user_id) {
$sql = "SELECT image_id FROM 4images_images WHERE user_id = $user_id";
$result = mysql_query($sql);
$cat_images_user = mysql_num_rows($result);
///////////////////////////// Die 100 legt die Anzahl Gesamt-Uploads fest //////////////////////////
if($cat_images_user >= 100) {
return false;
}else{
return true;
}
}
Damit nicht nur das Upload Form gesperrt ist, sondern auch, wenn man mit dem BackButton des Browsers zurück geht,
wird nochmal vor dem speichern geprüft:
Suche:
if ($action == "uploadimage") {
if ($cat_id != 0 && (!isset($cat_cache[$cat_id]) || !check_permission("auth_upload", $cat_id))) {
show_error_page($lang['no_permission']);
exit;
}
Und trage das dahinter ein:
$user_id = $user_info['user_id'];
$date_check = mktime(0,0,0,date("m"),date("d"),date("Y"));
if (!check_picture_limit($date_check,$user_id)) {
show_error_page($lang['today_too_much']);
exit;
}
if (!check_cat_limit($user_id)) {
show_error_page($lang['toomuch']);
exit;
}
füge in der lang/deutsch/main.php Datei dieses ein:
$lang['toomuch'] = "Du hast die maximale Bildanzahl von 100 erreicht, um ein neues hochzuladen, lösche bitte ein altes. ";
$lang['today_too_much'] = "Du hast heute schon 2 Bilder hochgeladen. Morgen kannst Du erneut 2 Bilder hochladen. ";
Das ist alles, vielleicht kann jemand die Anweisungen ins Englische übersetzen? Dann hätten auch die Englisch sprechenden Leser was davon.