نمایش نتایج 1 تا 13 از 13

نام تاپیک: نحوه بک آپ گیری توسط کاربران

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    ایران - یزد
    پست
    68

    نحوه بک آپ گیری توسط کاربران

    لطفا راهنمایی بفرمایید چگونه دستوری را با php بنویسم که کاربران با اجرای آن بتوانند از یک جدول در دیتابیس سایت بک آپ آخرین تغییرات را به صورت یک فایل mysql دریافت کنند. متشکرم


  2. #2
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    نقل قول: نحوه بک آپ گیری توسط کاربران

    اینجا یه تابع نوشته که نام جدول رو میگیره و فایل بک آپ(شامل دستورات insert مانند بک آپی که توی PhpMyAdmin میگیرید) بهتون میده.

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    ایران - یزد
    پست
    68

    نقل قول: نحوه بک آپ گیری توسط کاربران

    نقل قول نوشته شده توسط dousti_design مشاهده تاپیک
    اینجا یه تابع نوشته که نام جدول رو میگیره و فایل بک آپ(شامل دستورات insert مانند بک آپی که توی PhpMyAdmin میگیرید) بهتون میده.
    ضمن تشکر
    من اون تابع رو در یک فایل php ذخیره کردم و در سایت فراخوانی کردم اما هیچ اتفاقی نیافتاد. البته من مبتدی هستم اگه راهنمایی بیشتری بفرمایید ممنون می شم.

    این هم کد تغییر یافته

    <?php
    backup_tables('localhost', 'ali','123456','T_afrad');

    /* backup the db OR just a table */
    function backup_tables($host,$user,$pass,$name,$tables = 'T_afrad')
    {

    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($name,$link);

    //get all of the tables
    if($tables == '*')
    {
    $tables = array();
    $result = mysql_query('SHOW TABLES');
    while($row = mysql_fetch_row($result))
    {
    $tables[] = $row[0];
    }
    }
    else
    {
    $tables = is_array($tables) ? $tables : explode(',',$tables);
    }

    //cycle through
    foreach($tables as $table)
    {
    $result = mysql_query('SELECT * FROM '.$table);
    $num_fields = mysql_num_fields($result);

    $return.= 'DROP TABLE '.$table.';';
    $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
    $return.= "\n\n".$row2[1].";\n\n";

    for ($i = 0; $i < $num_fields; $i++)
    {
    while($row = mysql_fetch_row($result))
    {
    $return.= 'INSERT INTO '.$table.' VALUES(';
    for($j=0; $j<$num_fields; $j++)
    {
    $row[$j] = addslashes($row[$j]);
    $row[$j] = ereg_replace("\n","\\n",$row[$j]);
    if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
    if ($j<($num_fields-1)) { $return.= ','; }
    }
    $return.= ");\n";
    }
    }
    $return.="\n\n\n";
    }

    //save file
    $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
    fwrite($handle,$return);
    fclose($handle);
    }
    ?>

  4. #4
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    نقل قول: نحوه بک آپ گیری توسط کاربران

    این کد:

    <?php
    backup_tables('localhost','root','','test');


    /* backup the db OR just a table */
    function backup_tables($host,$user,$pass,$name,$tables = '*')
    {

    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($name,$link);

    //get all of the tables
    if($tables == '*')
    {
    $tables = array();
    $result = mysql_query('SHOW TABLES');
    while($row = mysql_fetch_row($result))
    {
    $tables[] = $row[0];
    }
    }
    else
    {
    $tables = is_array($tables) ? $tables : explode(',',$tables);
    }

    //cycle through
    foreach($tables as $table)
    {
    $result = mysql_query('SELECT * FROM '.$table);
    $num_fields = mysql_num_fields($result);

    $return.= 'DROP TABLE '.$table.';';
    $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
    $return.= "\n\n".$row2[1].";\n\n";

    for ($i = 0; $i < $num_fields; $i++)
    {
    while($row = mysql_fetch_row($result))
    {
    $return.= 'INSERT INTO '.$table.' VALUES(';
    for($j=0; $j<$num_fields; $j++)
    {
    $row[$j] = addslashes($row[$j]);
    $row[$j] = ereg_replace("\n","\\n",$row[$j]);
    if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
    if ($j<($num_fields-1)) { $return.= ','; }
    }
    $return.= ");\n";
    }
    }
    $return.="\n\n\n";
    }

    //save file
    $handle = fopen('db-backup.sql','w+');
    fwrite($handle,$return);
    fclose($handle);
    }
    ?>
    <a href="db-backup.sql">Download Sql Backup</a>


    یک فایل متنی با پسوند .sql در مسیر اجرای فایل با نام db-backup.sql ایجاد میکنه.
    نام سرور: localhost
    نام کاربری: root
    پسورد: بدون پسورد(خالی)
    نام دیتابیس: test
    نام جداول: تمامی جدول ها(*)

  5. #5

    نقل قول: نحوه بک آپ گیری توسط کاربران

    یعنی کاربران بکاپ بگیرن بصورت یک فایل SQL و بعدا بتونن اون رو در سایت اجرا کنن؟
    خب اینطوری که خودش یه حفرهء کامل و راحت واسه SQL Injection میشه.
    یعنی مثلا کاربر میتونه هر فرمان SQL دلخواهی رو توی فایل بذاره یا دستکاری کنه.

  6. #6
    کاربر دائمی آواتار abolfazl-z
    تاریخ عضویت
    دی 1390
    محل زندگی
    فکر
    پست
    1,056

    نقل قول: نحوه بک آپ گیری توسط کاربران

    نقل قول: نحوه بک آپ گیری توسط کاربران
    یعنی کاربران بکاپ بگیرن بصورت یک فایل SQL و بعدا بتونن اون رو در سایت اجرا کنن؟
    خب اینطوری که خودش یه حفرهء کامل و راحت واسه SQL Injection میشه.
    یعنی مثلا کاربر میتونه هر فرمان SQL دلخواهی رو توی فایل بذاره یا دستکاری کنه.
    طبق گفته بالا چنین کاری اشتباه هست ! شما باید طوری دیگر اطلاعات را خروجی بدهید! سپس با الگوریتم های خاصی واکشی کنید در ضمن درهنگام واکشی باید جلوی هر گونه خطر (sql ...) را بگیرید!

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    ایران - یزد
    پست
    68

    نقل قول: نحوه بک آپ گیری توسط کاربران

    نقل قول نوشته شده توسط abolfazl-z مشاهده تاپیک
    طبق گفته بالا چنین کاری اشتباه هست ! شما باید طوری دیگر اطلاعات را خروجی بدهید! سپس با الگوریتم های خاصی واکشی کنید در ضمن درهنگام واکشی باید جلوی هر گونه خطر (sql ...) را بگیرید!
    مگر برای sql اینجکشن دستیابی به یوزر و پسورد نیاز نیست در کد php که این اطلاعات به کاربر نشان داده نمی شه
    کاربر اطلاعات رو در ویندوز اپلیکیشن بصورت افلاین استفاده می کنه.
    و بک آپ گیری هم الان انجام شد ولی مشکل اینجاست که فایل اس کیو ال دریافتی رو چگونه از دلفی به دیتابیس اکسس وارد کنم.

  8. #8
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    نقل قول: نحوه بک آپ گیری توسط کاربران

    نقل قول نوشته شده توسط علی رضائی مشاهده تاپیک
    مگر برای sql اینجکشن دستیابی به یوزر و پسورد نیاز نیست در کد php که این اطلاعات به کاربر نشان داده نمی شه
    کاربر اطلاعات رو در ویندوز اپلیکیشن بصورت افلاین استفاده می کنه.
    و بک آپ گیری هم الان انجام شد ولی مشکل اینجاست که فایل اس کیو ال دریافتی رو چگونه از دلفی به دیتابیس اکسس وارد کنم.
    برای بک آپ گیری توسط کاربر این روش اصلا توصیه نمیشه و من هم حواسم به پست آغازین نبود که نوشتین توسط کاربر.
    برای sql injection این روش یک باگ( باگ که چه عرض کنم، اتوبان) بزرگ هست.
    نام جداول، نام فیلدها، نوع فیلدها و... در اختیار کاربر قرار میگیره و همینطور میتونه یک کوئری رو به اجرا در بیاره.
    من خروجی اکسل رو توصیه میکنم که اطلاعات در یک فایل .csv ذخیره بشه و در موقع بازیابی هم خونده بشه.
    البته باز هم باید مراقب injection باشید.
    برای این کار میتونید از کلاس قدرتمند PHPEXCEL استفاده کنید.

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    ایران - یزد
    پست
    68

    نقل قول: نحوه بک آپ گیری توسط کاربران

    ممنون از راهنمایی هاتون.
    من به توصیه های امنیتی دوستان توجه کردم و از روش خروجی به فرمت csv استفاده کردم
    حالا برای فراخوانی اطلاعات از csv به جداول دیتابیس اکسس از داخل دلفی مشکل دارم. اگه راهنمایی کنید ممنون می شم.

  10. #10

    نقل قول: نحوه بک آپ گیری توسط کاربران

    اصلا این بکاپ گیری توسط کاربر واسه چیه؟
    هر کاربری هر موقع بخواد میتونه بکاپ بگیره و هر موقع بخواد میتونه بکاپ رو به خورد سیستم بده و ریستور کنه؟
    بعد اونوقت اگر اطلاعات داخل فایل بکاپ جعلی بود یا دستکاری شده بود هیچ مشکل امنیتی بوجود نمیاد؟
    راستی اینو درنظر گرفتید که کسی فایل بکاپ دستکاری شده که به اسم کاربر دیگری درآورده رو نتونه اجرا کنه؟
    اصلا برنامهء شما چیه کاربرانش کیا هستن؟ افرادی شناخته شده و مورد اعتماد، یا نه؟

  11. #11
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    ایران - یزد
    پست
    68

    نقل قول: نحوه بک آپ گیری توسط کاربران

    کاربرا نمی تونن اطلاعات رو به سایت ارسال کنن فقط اطلاعات رو دریافت می کنن و به دیتابیس اکسس یک نرم افزار آموزشی وارد می کنن. تا بتونن با سرعت بیشتری کار کنن و از طرفی اساتید دیتا ها رو از روی اینترنت بروز می کنن و کاربرا هر وقت خواستند آخرین اصلاحات رو با بک آپ گیری از سایت مجددا وارد نرم افزار می کنن.

  12. #12

    نقل قول: نحوه بک آپ گیری توسط کاربران

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

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    ایران - یزد
    پست
    68

    نقل قول: نحوه بک آپ گیری توسط کاربران

    البته برگردوندن بک آپ توسط کاربران انجام می شه ولی نه برای دیتابیس سایت بلکه برای دیتابیس ویندوز اپلیکیشن . و بهتره که منو در مورد مشکل مطرح شده راهنمایی کنید.
    مشکل رو به یه شکل دیگه مطرح می کنم. کسی میدونه چه جوری می شه خروجی دیتابیس my sql رو به اکسس انجام بده. درحال حاضر با فایل زیر به صورت اکسل انجام می شه ولی من می خوام اکسس باشه.ممنون از صرف وقتی که برای راهنمایی می کنید.
    <?php
    //--------------------------------------------------------------------------
    // This is where you specify your Database connection stuff
    //
    // mysql_connect -- Open a connection to a MySQL Server / die -- Alias of exit()
    //
    //--------------------------------------------------------------------------
    $db_name = "db1"; //This is your database Name
    $link = mysql_connect("localhost", "username", "pass") or die("Could not connect to server!");
    mysql_set_charset('utf8',$link);
    //This is your table name. This is a one table config to do more table you will need to rework the code.
    $table_name = 'medical';
    $select_db = mysql_select_db($db_name, $link); // mysql_select_db -- Select a MySQL database
    mysql_query("SET NAMES 'utf8'");
    $query = "SELECT * FROM " . $table_name;
    $result = mysql_query($query, $link) or die("Could not complete database query"); //mysql_query -- Send a MySQL query
    $num = mysql_num_rows($result); //mysql_num_rows -- Get number of rows in result
    $num2=mysql_num_fields($result);
    $query="SHOW COLUMNS FROM ".$table_name;
    $result1=mysql_query($query);
    //$fields=mysql_fetch_array($result1);
    $header="";
    for ($i = 0; $i < $num2; $i++) {
    $header .= mysql_field_name($result, $i) . "\t";
    }
    if ($num != 0) {
    //--------------------------------------------------------------------------
    // XML Header Tag Goes Here
    //--------------------------------------------------------------------------
    $_xml ="<?xml version='1.0' encoding='UTF-8' standalone='yes'?>\r\n";
    $_xml.="<dataroot xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>\r\n";
    //--------------------------------------------------------------------------
    // This while loop loops throught the data found from the above query and
    // generates the XML Doc.
    //--------------------------------------------------------------------------
    while ($row = mysql_fetch_array($result)) { //mysql_fetch_array -- Fetch a result row as an associative array, a numeric array, or both.
    while ($row=mysql_fetch_array($result)){
    $_xml .="\t<Table1>\r\n";
    mysql_data_seek($result1,0);
    $i=0;
    while($f=mysql_fetch_array($result1)){
    if($row[$i]<>'') $_xml.="\t\t<".$f[0].">".$row[$i]."</".$f[0].">\r\n";
    $i++;
    }
    $_xml.="\t</Table1>\r";
    }
    }
    $_xml.="</dataroot>";
    header("Content-Type: application/vnd.ms-excel; charset=utf-8");
    header("Content-Disposition: attachment; filename=filename.xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    header("Lacation: excel.htm?id=yes");
    print "$_xml";
    } else {
    echo "No Records found";
    }
    ?>

تاپیک های مشابه

  1. سوال: ثبت و پی گیری تغییرات انجام شده توسط کاربران برنامه
    نوشته شده توسط hd1246 در بخش Access
    پاسخ: 6
    آخرین پست: شنبه 24 فروردین 1392, 08:09 صبح
  2. گزارش گیری توسط Crystal Report در زبان php
    نوشته شده توسط naeim12345 در بخش گزارش سازی با Crystal Report
    پاسخ: 1
    آخرین پست: جمعه 01 اردیبهشت 1391, 20:44 عصر
  3. سوال: نحوه دانلود فایل های آپلود شده توسط کاربران
    نوشته شده توسط moseland در بخش PHP
    پاسخ: 1
    آخرین پست: پنج شنبه 15 بهمن 1388, 20:22 عصر
  4. آموزشی : ارسال فایل به سرور توسط کاربران
    نوشته شده توسط MFCGalaxy در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: چهارشنبه 19 فروردین 1383, 15:31 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •