رمز گذاشتن بر روی Sql و ارتباط با فلش

شروع موضوع توسط amator_flash ‏9 اکتبر 2013 در انجمن Action Script 3

  1. amator_flash

    amator_flash Member

    ارسال‌ها:
    129
    تشکر شده:
    15
    امتیاز دستاورد:
    16
    سلام چطوری می شه روی sql lite رمز گذاشت بعد با فلش در ارتباط باشه تا کسی نتونه فاسل دیتا بیس رو باز کنه و مطالب رو داخلش ببینه، خیلی حیاتی هست ، لطفا کمک کنید
     
    نوشته شده توسط amator_flash در ‏9 اکتبر 2013
  2. amator_flash

    amator_flash Member

    ارسال‌ها:
    129
    تشکر شده:
    15
    امتیاز دستاورد:
    16
    یعنی نمیشه؟
     
    نوشته شده توسط amator_flash در ‏10 اکتبر 2013
  3. myfirst

    myfirst Member

    ارسال‌ها:
    110
    تشکر شده:
    104
    امتیاز دستاورد:
    16
    سلام. میشه... من اینکارو انجام دادم.الان سرم شلوغه. یکمی فرصت بدید براتون کلاساشو میذارم تو همین پست.
     
    نوشته شده توسط myfirst در ‏11 اکتبر 2013
    amator_flash از این پست تشکر کرده است.
  4. spryboy

    spryboy کاربر فعال

    ارسال‌ها:
    155
    تشکر شده:
    199
    امتیاز دستاورد:
    16
    سلام

    من چند صفحه از کتاب Adobe AIR 1.5 Cookbook، بعلاوه ی لایبرری لازم رو براتون پیوست کردم، دیگه خودتون بخونید. البته به زبان انگلیسیه.

    موفق باشید
     

    پیوست ها:

    نوشته شده توسط spryboy در ‏11 اکتبر 2013
    amator_flash از این پست تشکر کرده است.
  5. amator_flash

    amator_flash Member

    ارسال‌ها:
    129
    تشکر شده:
    15
    امتیاز دستاورد:
    16
    ممنون که جواب دادید اما این واسه فلکس است ولی من فلش استفاده می کنم :shock:
     
    نوشته شده توسط amator_flash در ‏11 اکتبر 2013
  6. spryboy

    spryboy کاربر فعال

    ارسال‌ها:
    155
    تشکر شده:
    199
    امتیاز دستاورد:
    16
    فرقی نداره. مهم توضیحات اونه که با asـــه. شما توضیحاتش رو بخونید و همون کار رو انجام بدید. بالاخره باید کارتون رو با as انجام بدید دیگه!! من هرچی کتاب و مقاله در این مورد دارم، مثالهاشون با فلکسه. باز هم نگاه میکنم اگر چیزی داشتم که فقط از as استفاده کرده بود، براتون آپلود میکنم.
     
    نوشته شده توسط spryboy در ‏11 اکتبر 2013
    amator_flash از این پست تشکر کرده است.
  7. aliamel

    aliamel کاربر فعال

    ارسال‌ها:
    411
    تشکر شده:
    396
    امتیاز دستاورد:
    63
    به پارامتر ششم از متد ()Open از کلاس SQLConnection دقت کنید.این پارامتر شی ای از نوع ByteArray هست و دقیقا می بایست 16 کارکتر باشد.
    PHP:

    var conn:SQLConnection = new SQLConnection();
    var encryptionKey:ByteArray = new ByteArray();
    encryptionKey.writeUTFBytes("Some16ByteString"); // This technique is not secure!
       conn.openAsync(dbFile, SQLMode.UPDATE, null, false, 1024, encryptionKey);

     
     
    آخرین ویرایش: ‏12 اکتبر 2013
    نوشته شده توسط aliamel در ‏12 اکتبر 2013
    mohammad.sub7 و amator_flash از این پست تشکر کرده اند.
  8. amator_flash

    amator_flash Member

    ارسال‌ها:
    129
    تشکر شده:
    15
    امتیاز دستاورد:
    16
    میشه یه مثال فلشی بذارید؟
     
    نوشته شده توسط amator_flash در ‏12 اکتبر 2013
  9. aliamel

    aliamel کاربر فعال

    ارسال‌ها:
    411
    تشکر شده:
    396
    امتیاز دستاورد:
    63
    اصل قضیه همین 4 خط کد بود.باقیش دستورات sql هست که به عهده خودتون می ذارم.
     
    نوشته شده توسط aliamel در ‏12 اکتبر 2013
    amator_flash از این پست تشکر کرده است.
  10. myfirst

    myfirst Member

    ارسال‌ها:
    110
    تشکر شده:
    104
    امتیاز دستاورد:
    16
    [PHPS]


    package
    {




    import com.adobe.air.crypto.EncryptionKeyGenerator;
    import flash.utils.ByteArray;
    import flash.errors.SQLError;
    import flash.events.SQLEvent;
    import flash.events.SQLErrorEvent;
    import flash.data.SQLResult;
    import flash.filesystem.*;
    import flash.data.*;
    public class DB
    {


    private var _keyGenerator:EncryptionKeyGenerator;
    private var _EncryptionKey:ByteArray;
    private var _MyDB:File;
    private var _Conn:SQLConnection;


    public function DB(Name:String = "MyEncryptedDB" , encryptionKey:String = "[email protected]#$passwordDB$#@!")
    {


    _keyGenerator = new EncryptionKeyGenerator();
    _EncryptionKey = _keyGenerator.getEncryptionKey(encryptionKey);
    _MyDB = File.applicationDirectory.resolvePath(Name);
    _Conn = new SQLConnection();
    _Conn.addEventListener(SQLEvent.OPEN, OpenDB, false, 0, true);
    _Conn.addEventListener(SQLErrorEvent.ERROR, ErrorHandling, false, 0, true);
    _Conn.openAsync(_MyDB , "create" , null , false , 1024 , _EncryptionKey);






    }


    private function OpenDB(e:SQLEvent):void
    {
    _Conn.removeEventListener(SQLEvent.OPEN, OpenDB);
    _Conn.removeEventListener(SQLErrorEvent.ERROR, ErrorHandling);
    //rest of code...


    }//OpenDB


    private function ErrorHandling(e:SQLErrorEvent):void
    {
    _Conn.removeEventListener(SQLEvent.OPEN, OpenDB);
    _Conn.removeEventListener(SQLErrorEvent.ERROR, ErrorHandling);
    trace("error while Creating DB");
    }//OpenDB


    }
















    }

    [/PHPS]
     

    پیوست ها:

    • db.zip
      اندازه فایل:
      کیلوبایت 303.2
      نمایش ها:
      33
    آخرین ویرایش: ‏14 اکتبر 2013
    نوشته شده توسط myfirst در ‏13 اکتبر 2013
    ++Hadi++ و amator_flash از این پست تشکر کرده اند.
  11. amator_flash

    amator_flash Member

    ارسال‌ها:
    129
    تشکر شده:
    15
    امتیاز دستاورد:
    16
    آقا این حل شد ، توی پست قبلی آقای myfirst
    فایلی که گذاشته واسه دانلود کار می کنه . من اشتباه کردم .با تشکر از اقای
    myfirst
    و دیگر دوستان
    :rose:
     

    پیوست ها:

    • DATABASE.rar
      اندازه فایل:
      کیلوبایت 142.3
      نمایش ها:
      15
    • Capture.PNG
      Capture.PNG
      اندازه فایل:
      کیلوبایت 12.5
      نمایش ها:
      7
    آخرین ویرایش: ‏15 اکتبر 2013
    نوشته شده توسط amator_flash در ‏13 اکتبر 2013
  12. amator_flash

    amator_flash Member

    ارسال‌ها:
    129
    تشکر شده:
    15
    امتیاز دستاورد:
    16
    سلام دوباره
    من چند تا مشکل دارم
    1. چرا وقتی که دیتا بیس رو درست می کنم با نرم افزار هایی مثل Lita یا افزونه sql manger مرورگز موزیلا دیگه نمی شود باز کرد؟ اگر نرم افزاری هست لطفا بگید.آخه من می خوام جدول ها و ستون ها رو دستی درست کنم نه با اکشن .
    2._Conn.openAsync(_MyDB , "create",null,false,1024, _EncryptionKey);
    می شود در مورد این خط و فاکتور هاش صحبت کنید .
    این خط _MyDB دارد که نام فایل هست

    "create" هست که نحوه باز کردن دیتا بیس هست که در این حالت برای ایجاد کردن هست.برای خواندن و آپ دیت کردن و یا ایجاد رکورد باید از چی استفاده کرد؟ من تو اینترنت گشتم و به فرمان های زیر رسیدم اما هر کدام اررو می ده.
    air.SQLMode.UPDATE
    air.SQLMode.CREATE
    SQLMode.CREATE
    SQLMode.UPDATE
    SQLMode.READ

    اما این حالت رو "create" ندیدم، می خواستم بدونم که این حالت تو فلش هست ؟ و واسه خواندن یا آپدیت چه دستوری هست؟لطفا اگر می شود یه مثال برای آپ دیت و خواندن و ایجاد رکورد بزنید.
    خیلی ممنونم ، آخه آماتور هستم البته این آدرس رو من کامل خواندم و یاد گرفتم و تو فلش امتحان کردم. اما وقتی رمز می گذارم همه چیز می ریزه به هم.
    http://www.i-phone.ir/forums/thread4273.html
     
    آخرین ویرایش: ‏19 اکتبر 2013
    نوشته شده توسط amator_flash در ‏19 اکتبر 2013
  13. myfirst

    myfirst Member

    ارسال‌ها:
    110
    تشکر شده:
    104
    امتیاز دستاورد:
    16
    سلام.
    جواب 1: وقتی شما کل دیتابیس رو کد کردی طبیعیه که باز نشه!!! هدف شما از کد کردنش این بوده که باز نشه دیگه!. پیشنهاد: کارتون رو بدون encryption انجام بدید، در نهایت پروژه که تموم شد همه چیزو کد کنید...
    جواب 2:
    flash.data​
    .SQLMode.UPDATE
    flash.data.SQLMode.CREATE
    SQLMode.CREATE
    SQLMode.UPDATE
    SQLMode.READ
    همه این موارد مقدارهای ثابتی از نوع رشته ای هستند. اگر شما این کد رو اجرا کنی دقیقا مقدار "create" رو برات برمیگردونه
    [PHPS]
    import flash.data.SQLMode;
    trace(SQLMode.CREATE);

    [/PHPS]

     
    نوشته شده توسط myfirst در ‏20 اکتبر 2013
    amator_flash از این پست تشکر کرده است.
  14. amator_flash

    amator_flash Member

    ارسال‌ها:
    129
    تشکر شده:
    15
    امتیاز دستاورد:
    16
    ممنون از جواب هایی که دادید.
    سوال 1 حل شد. اما من وقتی شواختم و جدول ها رو هم ساختم . چطور
    encryption کنم، آخه این کد یک عدد دیتا بیس جدید می سازه، چطور می شه یک دیتا بیس که ساخته شده رو encryption کنم.
    اما سوال 2 حل نشد.نفهمیدم که چطور می شه که من یک رکورد بخونم یا ایجاد کنم.می تونید یه مثال بزنید که یک رکورد رو ایجاد و بخونم.
     
    نوشته شده توسط amator_flash در ‏20 اکتبر 2013
  15. myfirst

    myfirst Member

    ارسال‌ها:
    110
    تشکر شده:
    104
    امتیاز دستاورد:
    16
    سلام. برای کار اول بجای "update" ، "create" رو چک کنید ببینید جواب میده. (پیشنهاده! در موردش مطمئن نیستم)

    برای سوال دوم
    [PHPS]
    private var _Statement:SQLStatement;


    public function AddUserData(name, family, username, password, score, pic):void
    {
    _Statement = new SQLStatement();
    _Statement.sqlConnection = _Conn;
    _Statement.clearParameters();
    var query:String = "SELECT * FROM Users_TBL WHERE UserName ==" + "\"" + username + "\"";
    _Statement.text = query;
    _Statement.addEventListener(SQLEvent.RESULT, CheckUserExist);
    _Statement.addEventListener(SQLErrorEvent.ERROR, ErrorHandling);
    _Statement.execute();

    function CheckUserExist(e:SQLEvent):void
    {
    _Statement.removeEventListener(SQLEvent.RESULT, CheckUserExist);
    _Statement.removeEventListener(SQLErrorEvent.ERROR, ErrorHandling);
    var query:String;
    var q:SQLStatement = e.target as SQLStatement;
    var result:SQLResult = q.getResult();
    _Statement = new SQLStatement();
    _Statement.sqlConnection = _Conn;
    _Statement.clearParameters();
    if (result.data == null)
    {
    query = "INSERT INTO Users_TBL (Name , Family , UserName , Password , PersonalPic , Description )" + "values(" + "'" + name + "'," + "'" + family + "'," + "'" + username + "'," + "'" + password + "'," + "'" + pic + "'," + "'" + score + "')";
    _Statement.addEventListener(SQLEvent.RESULT, UserAddedToDB, false, 0, true);
    }
    else
    {
    query = "UPDATE Users_TBL SET" + " Name =" + "\"" + name + "\"," + " Family =" + "\"" + family + "\"," + " Password =" + "\"" + password + "\"," + " PersonalPic =" + "\"" + pic + "\"," + " Description =" + "\"" + score + "\"" + " WHERE UserName ==" + "\"" + username + "\"";
    _Statement.addEventListener(SQLEvent.RESULT, UserInfoUpdated, false, 0, true);
    }
    _Statement.text = query;
    _Statement.addEventListener(SQLErrorEvent.ERROR, ErrorHandling, false, 0, true);
    _Statement.execute();
    } //CkeckUserExist
    } //AddUserData
    [/PHPS]

    این تیکه کد یه تعداد string به عنوان ورودی می گیره، بعد دیتابیس رو چک میکنه. اگه رکورد از قبل وجود داشته باشه update میشه وگرنه یه رکورد جدید به دیتابیس اضافه میشه.
     
    آخرین ویرایش: ‏20 اکتبر 2013
    نوشته شده توسط myfirst در ‏20 اکتبر 2013
    amator_flash از این پست تشکر کرده است.
  16. spryboy

    spryboy کاربر فعال

    ارسال‌ها:
    155
    تشکر شده:
    199
    امتیاز دستاورد:
    16
    سلام
    یک دیتابیس رو فقط در زمان ایجاد کردن (create) میتونید رمزنگاری کنید. بعد از ایجاد شدن هم، دیگه نمیشه رمزنگاری اون رو حذف کرد. البته میتونید کلید رمزنگاری رو عوض کنید. اگر میخواید یک دیتابیس موجود رو رمزنگاری کنید، باید یک دیتابیس جدید و رمزنگاری شده، ایجاد کنید و داده های دیتابیس قبلی رو داخلش کپی کنید. ( با اکشن اسکریپت)

    موفق باشید
     
    نوشته شده توسط spryboy در ‏20 اکتبر 2013
    amator_flash از این پست تشکر کرده است.
  17. amator_flash

    amator_flash Member

    ارسال‌ها:
    129
    تشکر شده:
    15
    امتیاز دستاورد:
    16
    ممنون که جواب دادید، میشه یک فایل فلشی بذاربد. من به صورت عملی ببینم.
     
    نوشته شده توسط amator_flash در ‏26 اکتبر 2013

به اشتراک بگذارید