لایسنس‌گذاری اسکریپت PHP

اسکریپت خود را روی دامنه یا سرور مشخص قفل کنید و برای نسخه آزمایشی تاریخ انقضا بگذارید.

فروش اسکریپت PHP یک مشکل قدیمی دارد: خریدار می‌تواند همان فایل را روی ده سایت دیگر نصب کند یا به دیگران بدهد. لایسنس‌گذاری اسکریپت PHP این مشکل را از ریشه حل می‌کند. وقتی خروجی انکدشده را روی دامنه خریدار قفل می‌کنید، کپی همان فایل روی هر دامنه دیگری با خطای لایسنس متوقف می‌شود؛ و اگر تاریخ انقضا هم بگذارید، می‌توانید نسخه دمو و اشتراک زمان‌دار بفروشید.

لایسنس‌گذاری اسکریپت یعنی چه؟

لایسنس‌گذاری یعنی به خروجی انکدشده بگویید تحت چه شرایطی اجازه اجرا دارد. این شرط‌ها می‌تواند نام دامنه، آدرس IP سرور، یا یک بازه زمانی باشد. هنگام انکد، این قوانین داخل فایل خروجی نوشته می‌شوند و در زمان اجرا توسط لودر بررسی می‌شوند.

تفاوت کلیدی این روش با سیستم‌های لایسنس معمولی همین‌جاست. در روش سنتی، شما یک کلاس PHP می‌نویسید که لایسنس را چک می‌کند؛ اما آن کلاس خودش کد PHP است و هر کسی می‌تواند بازش کند و حذفش کند. اما وقتی شرط اجرا در سطح لودر تعریف شده باشد، چیزی برای حذف کردن وجود ندارد چون بررسی بیرون از کد قابل ویرایش انجام می‌شود.

به همین دلیل ترتیب کار اهمیت دارد: اول باید کد انکد شود، بعد قوانین لایسنس روی همان خروجی اعمال شود. لایسنس‌گذاری روی سورس خام هیچ محافظتی ایجاد نمی‌کند.

لایسنس چطور بررسی می‌شود؟

وقتی یک درخواست به اسکریپت انکدشده می‌رسد، ionCube Loader پیش از اجرای کد، شرایط ثبت‌شده را با وضعیت فعلی سرور مقایسه می‌کند. اگر دامنه فعلی با دامنه مجاز یکی نبود یا تاریخ گذشته بود، اجرا متوقف و پیام خطای لایسنس نمایش داده می‌شود.

این بررسی بسیار سبک است و اثر محسوسی روی سرعت ندارد، چون فقط یک مقایسه ساده در ابتدای بارگذاری فایل انجام می‌شود. مهم‌تر اینکه چون در لایه لودر اتفاق می‌افتد، نه در کد شما، تغییر دادنش نیازمند دستکاری خود لودر است که کار عملی‌ای نیست.

جریان صدور لایسنس اسکریپت PHP از خرید مشتری تا انکد با قفل دامنه و تحویل فایل قفل‌شده
مسیر صدور لایسنس اختصاصی برای هر خریدار.

انواع محدودسازی و کاربرد هرکدام

انتخاب نوع قفل به مدل فروش شما بستگی دارد. انتخاب اشتباه یا باعث دردسر پشتیبانی می‌شود یا محافظت را ناکافی می‌گذارد.

نوع محدودیتمناسب برایمزیتنکته
قفل دامنهمحصولات وب روی هاست اشتراکیدامنه ثابت می‌ماند و مدیریتش ساده استتغییر دامنه مشتری نیازمند صدور مجدد است
قفل IP سرورپروژه اختصاصی روی سرور مشتریمناسب محیط‌های داخلی بدون دامنهتغییر IP سرور اجرا را متوقف می‌کند
تاریخ انقضانسخه آزمایشی و اشتراک زمان‌دارفروش دوره‌ای را ممکن می‌کندباید فرایند تمدید مشخصی داشته باشید
ترکیب دامنه و انقضادموی محدود به یک سایتسخت‌گیرانه‌ترین حالتبرای دمو ایده‌آل است
مقایسه انواع محدودسازی اجرای اسکریپت PHP شامل قفل دامنه، قفل IP، تاریخ انقضا و حالت ترکیبی
انتخاب نوع قفل بر اساس مدل فروش و محیط اجرای مشتری.

قفل دامنه یا قفل IP؟

برای اکثر محصولات وب، قفل دامنه انتخاب اول است چون دامنه چیزی است که مشتری روی آن سرمایه‌گذاری کرده و به‌راحتی عوضش نمی‌کند. قفل IP بیشتر برای پروژه‌های on-premise کاربرد دارد؛ جایی که نرم افزار روی سرور داخلی یک سازمان نصب می‌شود و ممکن است اصلا دامنه عمومی نداشته باشد. توضیح کامل‌تر این تصمیم در مقاله قفل کردن اسکریپت PHP روی یک دامنه آمده است.

نکته درباره ساب‌دامنه اگر مشتری روی ساب‌دامنه هم اجرا می‌کند، هنگام صدور لایسنس این را در نظر بگیرید. در غیر این صورت اسکریپت روی ساب‌دامنه اجرا نمی‌شود و تیکت پشتیبانی می‌گیرید.

مراحل صدور لایسنس برای مشتری

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

  1. دریافت دامنه خریدار هنگام فروش، دامنه‌ای که اسکریپت روی آن نصب می‌شود را از مشتری بگیرید.
  2. آپلود سورس فایل یا پروژه ZIP را در پنل انکد آنلاین بارگذاری کنید.
  3. انتخاب نسخه هدف PHP نسخه‌ای را انتخاب کنید که سرور مشتری اجرا می‌کند.
  4. تعیین قوانین لایسنس دامنه مجاز و در صورت نیاز تاریخ انقضا را وارد کنید.
  5. تحویل خروجی فایل قفل‌شده را به مشتری بدهید؛ روی هیچ دامنه دیگری اجرا نمی‌شود.
  6. ثبت سوابق دامنه و تاریخ هر لایسنس را نگه دارید تا تمدید و پشتیبانی آسان باشد.

اسکریپت خود را قفل کنید

خروجی انکدشده با قفل دامنه بگیرید تا فقط روی سایت خریدار اجرا شود.

شروع انکد و لایسنس‌گذاری

ساخت نسخه آزمایشی با تاریخ انقضا

نسخه آزمایشی یکی از موثرترین ابزارهای فروش نرم افزار است، اما فقط وقتی امن باشد که پس از پایان دوره واقعا از کار بیفتد. با تعیین تاریخ انقضا هنگام انکد، خروجی بعد از آن تاریخ اجرا نمی‌شود.

یک نکته فنی را در نظر بگیرید: بررسی تاریخ به ساعت سیستم سرور متکی است. اگر مشتری کنترل کامل سرور را داشته باشد، در تئوری می‌تواند ساعت سرور را عقب ببرد. برای محصولات حساس، بهتر است تاریخ انقضا را با یک بررسی سمت سرور خودتان ترکیب کنید تا اعتبار واقعی از سرور شما تایید شود.

مدل فروشپیشنهاد لایسنس
خرید یک‌باره و دائمیقفل دامنه بدون تاریخ انقضا
اشتراک سالانهقفل دامنه به همراه انقضای یک‌ساله و فرایند تمدید
دموی هفت‌روزهقفل دامنه به همراه انقضای کوتاه
نصب داخلی سازمانیقفل IP سرور

محدودیت‌ها و نکاتی که باید بدانید

صادق بودن درباره محدودیت‌ها هم به تصمیم درست شما کمک می‌کند و هم از وعده اشتباه به مشتری جلوگیری می‌کند.

اول اینکه لایسنس‌گذاری جای انکد را نمی‌گیرد. اگر کد انکد نشده باشد، هر شرطی که بگذارید داخل سورس قابل حذف است. دوم اینکه هیچ روشی امنیت مطلق نمی‌دهد؛ هدف بالا بردن هزینه شکستن محافظت است تا از ارزش محصول بیشتر شود. سوم اینکه هر تغییر در دامنه یا سرور مشتری نیازمند صدور خروجی جدید است، پس فرایند پشتیبانی خود را از قبل مشخص کنید.

نکته پشتیبانی قبل از فروش، سیاست تغییر دامنه را روشن کنید. مثلا «هر مشتری سالی یک بار می‌تواند رایگان درخواست تغییر دامنه بدهد». نبود این سیاست، بیشترین دلیل نارضایتی در فروش اسکریپت قفل‌شده است.

برای آشنایی با ملاحظات سازگاری نسخه‌ها هنگام تحویل خروجی به مشتری، مقاله سازگاری ionCube با PHP 8.3 و 8.4 را ببینید. مستندات رسمی گزینه‌های لایسنس هم در سایت رسمی ionCube در دسترس است.

جمع بندی: لایسنس‌گذاری اسکریپت PHP وقتی معنا دارد که روی کد انکدشده اعمال شود. برای محصولات وب قفل دامنه، برای پروژه‌های داخلی قفل IP و برای دمو و اشتراک تاریخ انقضا انتخاب کنید. چون بررسی در سطح لودر انجام می‌شود، دور زدنش عملا ممکن نیست؛ اما یادتان باشد سیاست تغییر دامنه و تمدید را از قبل با مشتری شفاف کنید تا پشتیبانی برایتان دردسر نشود.

سوالات متداول

اگر مشتری دامنه‌اش را عوض کند چه می‌شود؟

اسکریپت روی دامنه جدید اجرا نمی‌شود و باید خروجی تازه‌ای با دامنه به‌روز برایش صادر کنید. به همین دلیل بهتر است سیاست تغییر دامنه را از ابتدا در شرایط فروش مشخص کنید.

قفل دامنه قابل دور زدن است؟

چون بررسی در سطح لودر و روی فایل انکدشده انجام می‌شود و سورس خوانا در دسترس نیست، دور زدن آن عملا بسیار سخت است. هیچ روشی امنیت مطلق نمی‌دهد، اما این روش هزینه نفوذ را بسیار بالا می‌برد.

می‌توانم چند دامنه را برای یک مشتری مجاز کنم؟

بله. می‌توان لایسنس چنددامنه‌ای صادر کرد یا ساب‌دامنه‌ها را هم مجاز کرد. این را هنگام سفارش مشخص کنید.

برای لایسنس‌گذاری باید انکدر ionCube بخرم؟

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

تاریخ انقضا با تغییر ساعت سرور دور زده می‌شود؟

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

لایسنس روی سرعت اجرا اثر می‌گذارد؟

خیر. بررسی لایسنس یک مقایسه ساده در ابتدای بارگذاری فایل است و اثر محسوسی بر زمان پاسخ ندارد.