PDA

View Full Version : بدست آورد نام آخرین فایلی که از سایت دانلود شده



abbas3zaar
دوشنبه 09 فروردین 1395, 07:04 صبح
سلام. فرض کنید یه سایت دارید که فایل دانلود میشه ازش (مثلا قالب سایت)
در پنل مدیریت چجوری میتونیم آخرین فایلی که دانلود شده رو نشون بدیم؟

مثلا در پنل مدیریت بنویسه:

آخرین فایل دانلود شده از سایت قالب چندستونه Stacker (http://barnamenevis.org/) می باشد.



و چجوری میتونیم آخرین رکورد های درج شده در جدول دیتابیس رو به دست بیاریم؟ مثلا برای کاربران بگیم:

آخرین کاربر عضو شده در سایت abbas (http://barnamenevis.org/) می باشد

Unique
دوشنبه 09 فروردین 1395, 10:14 صبح
برای فایل ها یک روش اینه که یک جدول برای ثبت دانلود ها داشته باشیم و آخرین رکورد را بگیریم و بگیم آخرین فایل دانلود شده اینه. رختنش توی جدول خوبیش اینه که میشه نشون داد امروز یا چند ساعت گذشته یا هفته و ماه گذشته یا در هر ماهی چند تا فایل دانلود شده یا چقدر پهنای باند برده و از این چیزا. کافیه در زمان دانلود یک رکورد شامل اطلاعات مربوط به فایل و زمان دانلود ثبت کنیم.

اگه هم دنگ و فنگ نمیخوای هر بار درخواست دانلود داشته اسم فایل را بنویس توی یک فایل txt و بعد توی کنترل پنل به مدیر نشون بده. با این روش دیگه نمیشه کار خاص دیگه ای انجام داد.

برای کاربران هم خوب جدول کاربران را داریم و میتونیم آخرین کاربر را بر اساس حالا تاریخ ثبت نام و اگه تاریخ ثبت نام نداریم بر اساس sort ستون id به صورت نزولی به دست بیاریم.

qti3e.qti3e
دوشنبه 09 فروردین 1395, 12:05 عصر
سلام کاری می تونید انجام بدید استفاده از فابل .htaccess است
خوب اینکه چطور هم به این صورته که شما یک فال .htaccess مینویسید که درخواست ها رو به یک فابل PHP بفرسته


RewriteEngine On
RewriteBase /


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ download.php?url=$1 [L,QSA]



فایل بالا تمام request ها رو به فایل download.php میفرسته در زمانی که فابل وجود نداشته باشه
پس شما باید فایل های آپلود شده روتوی یه پوشه مثلا files بگذارید و این فابل و فایلdownload.php رو در دایرکوتری جداگونه ای مثلا download
و فابل download.php میونه به صورت زیر باشه:


if(isset($_GET['url'])){
$file = '../files/'.$_GET['url'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
file_put_contents('download.log',@file_get_content s('download.log')."\n$file");
exit;
}else{
if($file == 'API_last_file'){
$lines = @file('download.log');
echo $lines[count($lines)-1];
}else{
http_response_code(404);
echo '404 Not Found!';
}
}
}else{
http_response_code(403);
echo '403 Forbidden error!<br>Your client does not have permission to get this URL from this server. That’s all we know.';
}
و با باز کردن download/API_last_file آخرین فایل دانلود شده اسمش به نمایش در خواهد آمد سوال داشتید می تونید بپرسید

abbas3zaar
دوشنبه 09 فروردین 1395, 19:08 عصر
سلام کاری می تونید انجام بدید استفاده از فابل .htaccess است
خوب اینکه چطور هم به این صورته که شما یک فال .htaccess مینویسید که درخواست ها رو به یک فابل PHP بفرسته


RewriteEngine On
RewriteBase /


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ download.php?url=$1 [L,QSA]



فایل بالا تمام request ها رو به فایل download.php میفرسته در زمانی که فابل وجود نداشته باشه
پس شما باید فایل های آپلود شده روتوی یه پوشه مثلا files بگذارید و این فابل و فایلdownload.php رو در دایرکوتری جداگونه ای مثلا download
و فابل download.php میونه به صورت زیر باشه:


if(isset($_GET['url'])){
$file = '../files/'.$_GET['url'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
file_put_contents('download.log',@file_get_content s('download.log')."\n$file");
exit;
}else{
if($file == 'API_last_file'){
$lines = @file('download.log');
echo $lines[count($lines)-1];
}else{
http_response_code(404);
echo '404 Not Found!';
}
}
}else{
http_response_code(403);
echo '403 Forbidden error!<br>Your client does not have permission to get this URL from this server. That’s all we know.';
}
و با باز کردن download/API_last_file آخرین فایل دانلود شده اسمش به نمایش در خواهد آمد سوال داشتید می تونید بپرسید

اصلا با فایل htaccess کار نکردم تا به حال. میشه مبتدی تر توضیح بدین؟
این روش با روشی که دوستمون در پست قبلی گفتن چه تفاوتهایی و چه مزایا و معایبی داره؟