i
در حال برنامه نویسی و آماده سازی نسخه جدید «وبگو» هستیم، در این نسخه قابلیت ها و ظاهر سایت به کلی متفاوت و کاملتر خواهد بود، این فرآیند زمانبر و از مدتی پیش شروع شده و همچنان ادامه دارد، روند پیشرفت پروژه در این قسمت به صورت درصدی مشخص است و به تناوب به روزرسانی می شود.
parsgreen.com
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشند که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
article

ایجاد لینک دانلود مدت دار با PHP و MySQL

mysql-php-limit-download

احتمالا تا به حال سایت هایی را دیده اید که لینک دانلود آنها به اصطلاح مدت دار بوده و پس از گذشت چند ساعت یا چند روز دیگر نمی توان با آن لینک، فایل مورد نظر را دانلود کرد، این سیستم به انگیزه های مختلف ممکن است مورد نیاز باشد، از جمله اینکه می توان بین کاربران مختلف با توجه به حالت دانلود (رایگان یا با پرداخت هزینه) تفاوت قائل شد، یا هر زمان که نیاز بود، بدون حذف فیزیکی فایل از سرور، لینک دانلود آن را غیر فعال کرد، همچنین این حالت معمولا باعث جلوگیری از بروز ترافیک سنگین و درخواست های متعدد برای دانلود فایل ها می شود که این خود بر بهبود عملکرد سرویس های دانلود تاثیر مثبت دارد، به هر صورت فارغ از انگیزه شما برای انجام این کار، در ادامه آموزش، خواهیم دید که چگونه می توان با کمک PHP و MySQL، سیستم ایجاد لینک دانلود مدت دار را طراحی نمود.

ایجاد دیتابیس و جداول لازم


طبق معمول برنامه های مبتنی بر دیتابیس MySQL، اولین گام ما ایجاد و تعریف ساختار پایگاه داده است که در اینجا با توجه به نیازمان ابتدا از طریق برنامه phpMyAdmin یا با استفاده از کدهای PHP، دیتابیس download را می سازیم (در این آموزش فرض بر این است که از طریق برنامه phpMyAdmin پایگاه داده را ساخته اید)، سپس کدهای زیر را (در صورت نیاز پس از اعمال تنظیمات اتصال) در دایرکتوری فرضی time-limit-download و با نام table_create.php در ریشه هاست یا در سرور مجازی اجرا می کنیم (باید این دایرکتوری را در فولدر www یا public_html و فایل را داخل آن داشته باشید).
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>وبگو | ساخت جدول دانلود مدت دار فایل</title>
<!-- https://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
.ltr{
    direction:ltr;
}
</style>
</head>
<body>
<?php
@$con = mysqli_connect('localhost', 'root', '', 'download');
//خطای اتصال
if(mysqli_connect_errno()){
    echo 'اتصال با دیتابیس برقرار نشد:
    <br>
    <div class="ltr">
    '.mysqli_connect_errno().' - '.mysqli_connect_error().'
    </div>';
}
//اتصال برقرار است
else{
    $query = mysqli_query($con, "CREATE TABLE file_storage(
    id INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(id),
    client_ip VARCHAR(255),    
    original_name VARCHAR(255),
    temp_name VARCHAR(255),
    date_time BIGINT(20)) ENGINE=MyISAM");

    if(mysqli_errno($con)){
        echo 'بروز خطا در ایجاد جدول:
        <br>
        <div class="ltr">'.mysqli_errno($con).' - '.mysqli_error($con).'</div>';        
    }
    else{
        $link = 'http://'.$_SERVER["SERVER_NAME"].'/time-limit-download/test.zip';
        echo 'جدول با موفقیت ساخته شد.
        <br>
        <div class="ltr">
        <a href="'.$link.'">'.$link.'</a>
        </div>';
    }
}

$close = mysqli_close($con);
?>
</body>
</html>
لینک اجرای فایل باید مطابق با نمونه زیر باشد.
http://localhost/time-limit-download/table_create.php
نکته: در این آموزش از اکستنشن mysqli استفاده شده که می توانید مطابق سلیقه از PDO یا حتی اکستنش اولیه mysql استفاده کنید (استفاده از این اکستنشن به جزء در موارد آموزشی و پروژه های قدیمی، توصیه نمی شود).
توضیح:
با اجرای فایل بالا جدولی با نام فرضی file_storage در دیتابیس download ایجاد می شود که این جدول دارای ستون هایی است که در قسمت CREATE TABLE پرس و جوی بالا ملاحظه می کنید، در زیر به صورت مختصر و جهت آشنایی نقش ستون ها را بررسی می کنیم.
ستون id: این ستون به عنوان یک شماره یکتا معمولا در اکثر برنامه های مبتنی بر دیتابیس استفاده می شود (جهت تمایز و مدیریت بهتر داده های مختلف)، نوع این ستون INT است که در این حالت تا مرز 2147483647 ردیف قابل ایجاد است.
ستون client_ip: این ستون برای نگهداری IP کاربر است که در هنگام تطبیق اطلاعات لینک می تواند مورد استفاده قرار گیرد (استفاده از IP صرفا جهت نمونه است و در صورت نیاز می تواند استفاده نشود).
ستون original_name: این ستون نام اصلی فایل را به همراه پسوند آن نگهداری می کند.
ستون temp_name: این ستون برای نگهداری نام hash شده فایل است (hash به عبارت رمزی شده گفته می شود که در مورد استفاده ما به آن token نیز گفته می شود).
ستون date_time: این ستون جهت نگهداری تاریخ و زمان با نمونه فرمت 20140101121110 (ثانیه دقیقه ساعت روز ماه سال) است، از این عدد برای محاسبه مدت زمان انقضای لینک دانلود استفاده می کنیم.

ایجاد لینک دانلود


پس از ایجاد دیتابیس و جدول، اکنون باید کدی داشته باشیم که آدرس های موقت دانلود مدت دار فایل را برایمان ایجاد کند، در واقع در این مرحله به طور مثال کاربر لینک فرضی زیر را از سرور درخواست می کند و در پاسخ، لینک مدت دار به او نشان داده می شود.
نمونه لینک درخواستی کاربر:
http://localhost/time-limit-download/test.zip
نمونه آدرس ایجاد شده برای دانلود مدت دار:
http://localhost/time-limit-download/gCvHGkaDADuTbmq3dQsdSXyZ/test.zip
لذا کدهای زیر را در فایلی با نام download_link.php در دایرکتوری time-limit-download درج کنید.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>وبگو | ایجاد لینک دانلود مدت دار</title>
<!-- https://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
.ltr{
    direction:ltr;
}
</style>
</head>
<body>
<?php
//تابعی برای ایجاد عبارت رندوم
function randomStr($length){
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $random_string = '';
    for($i = 0; $i < $length; $i++){
        $random_string .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $random_string;
}

@$file = $_GET['file'];
if(!isset($file)){
    echo 'مشکلی در دریافت اطلاعات فایل وجود دارد!';
}
else{
    @$con = mysqli_connect('localhost', 'root', '', 'download');
    //خطای اتصال
    if(mysqli_connect_errno()){
        echo 'اتصال با دیتابیس برقرار نشد:
        <br>
        <div class="ltr">
        '.mysqli_connect_errno().' - '.mysqli_connect_error().'
        </div>';
    }
    //اتصال برقرار است
    else{
        $temp = randomStr(24);
        $date = date('YmdHis');
        //مدت زمان اعتبار لینک به ثانیه
        $time = date('YmdHis', time() - 60);
        //ایمن سازی
        $file = mysqli_real_escape_string($con, $file);
        $ip = mysqli_real_escape_string($con, $_SERVER["SERVER_ADDR"]);
        
        //حذف ردیف هایی که تاریخ اعتبار آنها گذشته است
        $query = mysqli_query($con, "DELETE FROM file_storage WHERE date_time < '$time'");
                
        //بررسی ip
        $query = mysqli_query($con, "SELECT temp_name FROM file_storage WHERE client_ip = '$ip' AND original_name = '$file' LIMIT 1");
        $count = mysqli_num_rows($query);
        //استفاده از لینک موجود
        if($count > 0){
            while($row = mysqli_fetch_array($query)){
                $temp = $row['temp_name'];
                //آپدیت زمان
                $update = mysqli_query($con, "UPDATE file_storage SET date_time = '$date' WHERE client_ip = '$ip' AND original_name = '$file' LIMIT 1");
            }
        }
        //ایجاد لینک جدید
        else{
            $query = mysqli_query($con, "INSERT INTO file_storage(
            client_ip, original_name, temp_name, date_time)
            VALUES('".$ip."', '".$file."', '".$temp."', '".$date."')");
        }
        
        if(mysqli_errno($con)){
            echo 'بروز خطا در ذخیره و ایجاد لینک دانلود:
            <br><div class="ltr">'.mysqli_errno($con).' - '.mysqli_error($con).'</div>';
        }
        else{
            $link = 'http://'.$_SERVER["SERVER_NAME"].'/time-limit-download/'.$temp.'/'.$file.'';
            echo 'لینک دانلود با موفقیت ساخته شد:
            <br>
            <div class="ltr">
            <a href="'.$link.'">'.$link.'</a>
            </div>';
        }
    }
    
    $close = mysqli_close($con);    
}
?>
</body>
</html>
توضیح:
منطق به کار رفته در این قسمت خیلی پیچیده نیست، ابتدا فایل درخواستی کاربر از سرور از طریق متد GET دریافت شده و پیش از ایجاد لینک جدید، وجود IP کاربر و نام فایل مشابه در دیتابیس بررسی می شود، اگر فایل مشابهی با این IP در دیتابیس باشد، ضمن به روز رسانی مدت زمان اعتبار لینک، از اطلاعات موجود برای نمایش لینک دانلود مدت دار استفاده می شود، در غیر این صورت (یعنی اگر اطلاعاتی مطابق با IP و نام اصلی فایل در دیتابیس موجود نباشد)، لینکی با اطلاعات جدید ساخته و در دیتابیس نیز INSERT می شود.
نکته 1: ملاحظه می کنید که پیش از هر گونه اقدامی، ابتدا دستور حذف ردیف های تاریخ گذشته را اجرا کرده ایم.
نکته 2: مدت اعتبار لینک با تغییر مقادیر عددی در متغیر time قابل تغییر است، در این مثال ما از عدد 60 ثانیه استفاده کرده ایم که می توان مطابق نیاز آن را افزایش یا احیانا کاهش داد.
نکته 3: بررسی وجود IP و لینک موجود به این دلیل ممکن است ضروری باشد که معمولا علاوه بر مرورگر، برنامه های مدیریت دانلود مانند IDM نیز (هم زمان با مرورگر و به صورت مخفیانه) درخواستی به سرور ارسال می کنند که در این صورت برای یک فایل، دو ردیف و دو لینک دانلود مجزا در دیتابیس خواهیم داشت که قاعدتا یک مورد آن زائد است.
نکته 4: همان طور که پیش تر گفته شد، این برنامه صرفا یک الگو است و می توان بر اساس نیاز خود بخش هایی از آن را حذف یا مواردی اضافه نمود (منتها باید نسبت به انجام این مورد مسلط باشید!).

ایجاد فولدر file و کد اجرای دانلود


پس از ایجاد و ذخیره لینک دانلود مدت دار، قاعدتا این لینک باید توسط کاربر نهایی جهت دانلود فایل استفاده شود، لذا بدین منظور در دایرکتوری time-limit-download فولدر دیگری با نام file ساخته و درون آن فایلی با نام download_file.php می سازیم، کدهای این فایل وظیفه بررسی لینک درخواستی و در صورت تائید، ارسال فایل به مرورگر را به عهده خواهند داشت.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>وبگو | دانلود فایل مدت دار</title>
<!-- https://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
.ltr{
    direction:ltr;
}
</style>
</head>
<body>
<?php
@$token = $_GET['token'];
@$file = $_GET['file'];
if(!isset($file) || !isset($token)){
    echo 'مشکلی در دریافت اطلاعات فایل وجود دارد!';
}
else{
    @$con = mysqli_connect('localhost', 'root', '', 'download');
    //خطای اتصال
    if(mysqli_connect_errno()){
        echo 'اتصال با دیتابیس برقرار نشد:
        <br>
        <div class="ltr">
        '.mysqli_connect_errno().' - '.mysqli_connect_error().'
        </div>';
    }
    //اتصال برقرار است
    else{
        $date = date('YmdHis');
        //مدت زمان اعتبار لینک به ثانیه
        $time = date('YmdHis', time() - 60);
        //ایمن سازی
        $token = mysqli_real_escape_string($con, $token);        
        $file = mysqli_real_escape_string($con, $file);
        
        //حذف ردیف هایی که تاریخ اعتبار آنها گذشته است
        $query = mysqli_query($con, "DELETE FROM file_storage WHERE date_time < '$time'");
        
        //بررسی اطلاعات فایل درخواستی کاربر با سرور
        $query = mysqli_query($con, "SELECT temp_name FROM file_storage WHERE original_name = '$file' AND temp_name = '$token' LIMIT 1");
        $count = mysqli_num_rows($query);
        //اطلاعات فایل معتبر است
        if($count > 0){
            //تابع برای بدست آوردن پسوند فایل
            function getExtension($file){
                preg_match('/\.[^\.]+$/i', $file, $ext);
                return $ext[0];
            }
            
            //نوع فایل
            $file_type = NULL;
            switch(getExtension($file_name)){
                case 'zip':
                $file_type = 'application/zip';
                break;
                case 'pdf':
                $file_type = 'application/pdf';
                break;
                case 'jpg':
                $file_type = 'image/jpeg';
                break;
            }
            
            //ارسال فایل به مرورگر برای دانلود
            $file_name = $file;
            header('Content-Description: File Transfer');
            //header('Content-Type: application/octet-stream');
            header('Content-Type: '.$file_type);
            header('Content-Disposition: attachment; filename='.$file_name);
            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_name"));
            ob_clean();
            flush();
            readfile("$file_name");
        }
        //لینک فایل معتبر نیست یا فایل حذف شده
        else{
            echo 'فایل مورد نظر یافت نشد!';
        }
    }
    
    $close = mysqli_close($con);
}
?>
</body>
</html>
توضیح:
عملکرد این کد به این صورت است که پارامتر hash یا همان token ارسالی از کاربر و همچنین نام حقیقی فایل را که از طریق لینک مدت دار دانلود دریافت شده با دیتابیس تطبیق داده و در صورتی که اطلاعات معتبر باشد، فایل موجود در دایرکتوری file را به مرورگر (یا هر واسط کاربری دیگر مانند برنامه های مدیریت دانلود) ارسال می کند.
نکته: لطفا برای کسب اطلاعات بیشتر در خصوص این قسمت از آموزش، مطلب مشابه ای را که پیش تر در سایت منتشر شده مطالعه کنید:
محدود کردن لینک دانلود مستقیم فایل ها با PHP و htaccess

دستور htaccess برای ایجاد لینک های استاتیک


در آخرین گام از ایجاد لینک دانلود مدت دار نیاز به دستورات htaccess زیر در ریشه سایت است تا بتوانیم آدرس های استاتیک (آدرس هایی که در آنها علامت ? نباشد) را ایجاد و استفاده کنیم، لذا بدین منظور اگر فایل htaccess. در ریشه سایت وجود دارد، کافی است دستورات جدید را در انتها اضافه کنید، اما اگر این فایل وجود ندارد باید آن را بسازید و کدها را در آن درج نمائید.
RewriteEngine on
RewriteRule time-limit-download/([^/]+)/([^/]+)(\.zip|\.pdf|\.jpg)$ /time-limit-download/file/download_file.php?token=$1&file=$2$3 [NC,L]
RewriteRule time-limit-download/([^/]+)(\.zip|\.pdf|\.jpg)$ /time-limit-download/download_link.php?file=$1$2 [NC,L]
دو دستور بالا به ترتیب برای دریافت لینک مدت دار (token و نام اصلی فایل) و لینک عادی فایل (بدون token) کاربرد دارد.
نکته: اگر از فعال بودن Rewrite Engine در سرور مجازی خود مطمئن نیستید، لطفا در این خصوص در وب جستجو کنید.

دانلود نمونه فایل های آموزش


دانلود نمونه فایل های آموزش ایجاد لینک دانلود مدت دار با PHP و MySQL
sectionدسته بندی: آموزش کاربردی » MySQL
related مطالب بیشتر:
» آموزش ساخت پنل ورود و خروج سایت با php و mysql
» آموزش حذف گروهی اطلاعات از MySQL با استفاده از چک باکس
» صفحه بندی مطالب و محتوا با PHP و MySQL
» نحوه رسم چارت و نمودار آماری با php و mysql
» هوشمند سازی پنل ورود و خروج سایت
commentنظرات (۴۱ یادداشت برای این مطلب ارسال شده است)
نویسنده: محمد
زمان: ۲۲:۱۶:۱۱ - تاریخ: ۱۳۹۴/۰۴/۱۷
سلام
ببین تو رو خدا کلی سرچ کردم پیدا نکردم
از قدیم راست گفتن پرسیدن عیب نیست ندانستن عیب است
ممنون واقعا جواب کاملی بود
از این که وقتتونو روی این سوال گذاشتید تشکر
نمی دونم چطور از شما تشکر کنم
شاید برای شما تابع کوچیکی باشه ولی جداً کمک بزرگی به من کردید من ممنونم از شما
یه روز تمام گیر همین بود و منتظر جوابتون ممنون که نا امیدم نکردید
طاعات عبادات و نماز روزه ی شما مقبول درگاه حق
نویسنده: فرهاد
زمان: ۲۳:۵۳:۱۷ - تاریخ: ۱۳۹۴/۰۵/۱۶
سلام
خسته نباشید.
اگر بخواهیم بعد از اینکه هزینه پرداخت شد، بتوان فایل را دانلود کرد، باید چیکار کرد، یا فایل به ایمیل شخص ارسال شود.
خواهشاً لطف نماید و راهنمایی کنید.
پاسخ: 
سلام
سوال کلی است! برای این منظور باید یک برنامه تحت وب طراحی کنید که شامل درگاه پرداخت و بخش کنترل پرداخت ها و نمایش یا ارسال لینک دانلود است، متاسفانه توضیح کوتاهی برای این موارد وجود ندارد!
نویسنده: بابک
زمان: ۰۰:۴۸:۱۶ - تاریخ: ۱۳۹۴/۰۸/۰۹
با سلام و خسته نباشید.
ممنون از زحماتتون
من از این آموزش میخواهم برای تبلیغات استفاده کنم. فقط مشکل در زمان دارم. چیکار کنم که لینک یا تبلیغ بعد از یک ماه غیر فعال یا حذف شود؟
تنظیم زمان در الگوی شما چگونه است؟
با تشکر
پاسخ: 
سلام
برای این کار کافی است با توابع مربوط به زمان (از جمله date و time) در PHP آشنا باشید، در الگوی فعلی با دستور زیر زمان یک دقیقه قبل (از حال حاضر) به صورت یک عدد صحیح به متغیر داده می شود:
$time = date('YmdHis', time() - 60);
عدد 60 در واقع همان میزان ثانیه ای است که از زمان فعلی به عقب برمی گردیم، به این صورت تاریخ به دست آمده با تاریخ موجود در دیتابیس مقایسه می شود و اگر تاریخ دیتابیس عددی کوچکتر از عدد متغیر time باشد، یعنی تاریخ موجود در دیتابیس بیش از یک دقیقه از زمان فعلی گذشته است و لینک معتبر نیست، با این الگو برای یک ماه باید از عدد 60 * 60 * 24 * 30 استفاده کنید یعنی 2592000 ثانیه!
نویسنده: Amin
زمان: ۲۳:۱۱:۱۲ - تاریخ: ۱۳۹۴/۱۰/۱۴
سلام و خسته نباشید
ببخشید یک سوال داشتم
این امکان وجود داره که بجای دانلود فایل با فرمت pdf فقط امکان پرینت گرفتن از اون رو به بازدید کننده داد ؟
یعنی به کمک php فقط بازدید کننده بتونه از فایل pdf بجای دانلود کردن فایل فقط توانایی پرینت گرفتن رو داشته باشه ؟
پاسخ: 
سلام
تا آنجا که اطلاع داریم چنین کاری شدنی نیست! برای پرینت فایل باید ابتدا به نحوی محتوا را در اختیار کاربر قرار دهیم (معمولا به شکل نمایش در مرورگر) که به همین دلیل نمی توان مانع بارگذاری فایل در سیستم کاربر شد!
نویسنده: diaku
زمان: ۱۶:۴۵:۵۱ - تاریخ: ۱۳۹۴/۱۱/۲۰
مطلب خیلی خیلی مفیدی بود.ممنون
نویسنده: سبزواري
زمان: ۱۵:۴۷:۱۱ - تاریخ: ۱۳۹۵/۰۱/۱۵
من ميخواهم در وردپرس براي محصول فروشي براي هر كاربر پس از خريد ( پرداخت آنلاين) يك لينك دانلود ايجاد شود. راهنمايي بفرماييد
پاسخ: 
سوال کلی است! برای این منظور باید ابتدا با نحوه کار سایت پذیرنده پرداخت آنلاین خود آشنا باشید، معمولا پس از پرداخت موفقیت آمیز می توانید کاربر را با اطلاعات خرید به یک صفحه ارجاع دهید و در آن با کدهای PHP و اتصال به سرور درگاه پرداخت، از صحت اطلاعات ارسال شده اطمینان حاصل کرده و سپس لینک دانلود را چاپ کنید، قاعدتا نوشتن هر قسمت از بخش های گفته شده نیازمند آشنایی شما با مباحث برنامه نویسی است.
نکته: با توجه به اینکه شما با وردپرس کار می کنید، ممکن است در انجمن های مربوطه پلاگین های آماده و نمونه کدهایی وجود داشته باشد.
نویسنده: Mohammad reza arabi
زمان: ۱۵:۳۲:۲۳ - تاریخ: ۱۳۹۵/۰۳/۱۴
سلام
خیلی عالی بود.
ولی من میخوام فولدر time-limit-download رو به dl تغییر بدم.
تغییر میدم ولی ارور Not Found 404 رو میده .
چیکار کنم
پاسخ: 
در صورتی که نام حقیقی دایرکتوری را نیز تغییر بدهید و در کدها نیز از این نام (در هر کجا که عبارت اصلی وجود دارد) استفاده کرده باشید، دلیلی برای دریافت خطا وجود ندارد، لذا به احتمال قوی یا نام فولدر تغییر نکرده یا در بخشی از کدها نام قبلی همچنان استفاده می شود!
نویسنده: سئوناب
زمان: ۰۸:۵۵:۳۵ - تاریخ: ۱۳۹۵/۰۳/۳۰
برنامه خوبی ولی من هر کاری کردم اجرا نشد فکر میکنم مشکل از htaccess من زیاد کد htaccess دارم احتمال داره اون کد ها با این کد مشکل داشته باشند
پاسخ: 
کد را به صورت خالص و بدون تداخل با سایر دستورات تست کنید اگر کد عمل کند، مشکل از تداخل دستورات است.
نویسنده: آرایش عروس
زمان: ۰۹:۲۹:۳۰ - تاریخ: ۱۳۹۵/۰۴/۲۱
برای مدت دار کردن بخش کامنت ها باید چیکار کنیم؟
مثلا 1 ماه یا هر زمان دیگری امکان درج کامنت وجود داشته باشه!
پاسخ: 
سوال کلی است! قاعدتا باید با بحث تاریخ و زمان در PHP آشنا باشید و کدها را طوری تعریف کنید که اگر به فرض تاریخ مد نظر گذشته باشد، با استفاده از دستورات شرطی فرم ارسال یادداشت نمایش داده نشود، اینها را باید با کدنویسی و مقایسه تاریخ و زمان تعریف کنید، راه حل ساده ای وجود ندارد که در این قسمت قابل ارائه باشد!
نویسنده: alireza
زمان: ۱۶:۱۵:۲۲ - تاریخ: ۱۳۹۵/۰۵/۳۱
سلام این ارور رو هنگام اجرای فایل php ای که در پوشه مشخصه در روت هاست ریختم بهم میده
http://localhost/time-limit-download/table_create.php
ارور:
1045 - Access denied for user 'root'@'localhost' (using password: NO)
چیکار کنم؟
پاسخ: 
در هاست باید یک نام کاربری و کلمه عبور برای اتصال به دیتابیس داشته باشید (در تابع mysqli_connect آن را تنظیم کنید) که از قسمت کنترل پنل، بخش مدیریت پایگاه داده انجام این کار ممکن است، کاربر root و بدون کلمه عبور معمولا صرفا در سرور مجازی و برای تست در سیستم شخصی کاربرد دارد!
نویسنده: امیررضا
زمان: ۱۴:۵۸:۴۱ - تاریخ: ۱۳۹۵/۰۶/۱۲
سلام و خسته نباشید خدمت شما
واقعا ممنونم بابت قرار دادن این آموزش فقط من مشکلم اینه که هر کاری میکنم فایل با لینک مستقیم دانلود میشه یا میگه فایل مورد نظر یافت نشد! (برای فایل test.zip) برای mp3 هم که لینک مستقیم داد! هم روی هاست و هم روی لوکال هاست همینطوری بود (htaccess هم همون کد داخل پوشه هستش) کلی هم کد ها رو دستکاری کردم و داخل فایل دانلود لینک خط 12 کد رو به این صورت کردم
@$file = $_GET.$_FILES["file"];
اما لینک رو برای Array میسازه و با همین نام داخل دیتابیس ذخیره میکنه
ببخشید طولانی شد؛ ممنون میشم کمکم کنید
پاسخ: 
متاسفانه تنها با دسترسی به سورس کدها و تست آنلاین می توان به علت مشکل و راه حل آن پی برد! ممکن است تنظیمات htaccess در سرور شما یا موارد دیگری به درستی انجام نشده باشد.
paged صفحه 3 از 3




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

7 × 4
 refresh
آگهی
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...
پرشین آی تی
Persianit.net

آموزش و دانلود پروژه های برنامه نویسی سی شارپ (#C)