قفل کردن اسکریپت PHP روی یک دامنه
قفل کردن اسکریپت روی دامنه یعنی خروجی انکدشده طوری ساخته میشود که فقط روی یک یا چند دامنه مشخص اجرا شود. اگر همان فایل روی دامنه دیگری کپی شود، اجرا نمیشود و پیام خطای لایسنس میدهد. این مؤثرترین راه جلوگیری از توزیع غیرمجاز اسکریپت و افزونهای است که فروختهاید.
این مقاله در یک نگاه
- دامنه مجاز هنگام انکد داخل خروجی ثبت میشود، نه در کد قابل ویرایش.
- بررسی توسط لودر انجام میشود، پس دور زدنش عملا ممکن نیست.
- میتوان سابدامنهها و چند دامنه را همزمان مجاز کرد.
- برای محیط توسعه، localhost را هم به فهرست مجاز اضافه کنید.
- تغییر دامنه مشتری نیازمند صدور خروجی جدید است.
قفل دامنه یعنی چه؟
وقتی اسکریپتی را میفروشید، خریدار به فایلها دسترسی فیزیکی دارد و میتواند آنها را کپی کند. قفل دامنه این مشکل را حل میکند: خروجی طوری ساخته میشود که فقط روی دامنهای که شما مشخص کردهاید اجرا شود.
تفاوت کلیدی این روش با سیستمهای لایسنس معمولی مهم است. در روش سنتی یک کلاس PHP مینویسید که دامنه را چک میکند، اما آن کلاس خودش کد PHP است و قابل حذف. در قفل دامنه ionCube، این شرط داخل ساختار فایل انکدشده ثبت میشود و توسط لودر بررسی میشود؛ یعنی چیزی برای حذف کردن وجود ندارد.
چطور کار میکند؟
هنگام انکد، نام دامنه مجاز در متادیتای خروجی نوشته میشود. در زمان اجرا، پیش از آنکه کد شما اجرا شود، لودر دامنه درخواست فعلی را با مقدار ثبتشده مقایسه میکند. اگر یکی نبود، اجرا متوقف و پیام خطای لایسنس نمایش داده میشود.
این بررسی بسیار سبک است و اثر محسوسی روی سرعت ندارد، چون فقط یک مقایسه رشتهای در ابتدای بارگذاری فایل انجام میشود. برای شناخت نقش لودر در این فرایند، ionCube Loader چیست را ببینید.
چه چیزهایی را میتوان مجاز کرد؟
| حالت | کاربرد | نکته |
|---|---|---|
| دامنه اصلی | فروش تکی به یک مشتری | رایجترین حالت |
| سابدامنهها | مشتری چند زیردامنه دارد | باید هنگام سفارش مشخص شود |
| چند دامنه | لایسنس چنددامنهای | برای مشتریان بزرگتر |
| localhost | محیط توسعه و تست | برای راحتی کار مشتری مفید است |
قفل دامنه یا قفل IP؟
انتخاب بین این دو به محیط اجرای مشتری بستگی دارد. برای محصولات وب که روی هاست اجرا میشوند، قفل دامنه انتخاب اول است چون دامنه چیزی است که مشتری روی آن سرمایهگذاری کرده و بهراحتی عوضش نمیکند.
قفل IP بیشتر برای پروژههای on-premise کاربرد دارد؛ جایی که نرم افزار روی سرور داخلی یک سازمان نصب میشود و ممکن است اصلا دامنه عمومی نداشته باشد. عیب قفل IP این است که با تغییر سرور یا آیپی، اجرا متوقف میشود و نیاز به صدور مجدد دارد.
ترکیب با تاریخ انقضا
قفل دامنه و تاریخ انقضا را میتوان با هم استفاده کرد. نتیجه، نسخهای است که فقط روی دامنه خریدار و فقط تا تاریخ مشخص کار میکند. این ترکیب برای دو سناریو ایدهآل است: نسخه دمو و فروش اشتراکی سالانه.
| مدل فروش | ترکیب پیشنهادی |
|---|---|
| خرید یکباره و دائمی | فقط قفل دامنه |
| اشتراک سالانه | قفل دامنه به همراه انقضای یکساله |
| دموی محدود | قفل دامنه به همراه انقضای کوتاه |
| نصب سازمانی داخلی | قفل IP سرور |
توضیح کامل گزینههای لایسنس در صفحه لایسنسگذاری اسکریپت PHP آمده است.
نکات پشتیبانی
قفل دامنه یک پیامد عملیاتی دارد که باید از قبل برایش برنامه داشته باشید: هر تغییر دامنه از سمت مشتری یعنی صدور خروجی جدید. اگر سیاست روشنی نداشته باشید، این موضوع به منبع اصلی نارضایتی تبدیل میشود.
پیشنهاد میشود در شرایط فروش بنویسید که مثلا هر مشتری سالی یک بار میتواند رایگان درخواست تغییر دامنه بدهد. همچنین سوابق دامنه و تاریخ هر لایسنس صادرشده را نگه دارید تا پاسخگویی سریع باشد. برای دیدن کاربرد این روش در وردپرس، انکد افزونه وردپرس را ببینید. مستندات رسمی هم در سایت ionCube موجود است.
سوالات متداول
اگر مشتری دامنهاش را عوض کند چه میشود؟
اسکریپت روی دامنه جدید اجرا نمیشود و باید خروجی تازهای با دامنه بهروز صادر کنید. بهتر است این سیاست را از ابتدا در شرایط فروش مشخص کنید.
قفل دامنه قابل دور زدن است؟
چون بررسی در سطح لودر و روی فایل انکدشده انجام میشود و سورس خوانا در دسترس نیست، دور زدنش عملا بسیار سخت است.
میتوانم چند دامنه را مجاز کنم؟
بله. میتوان لایسنس چنددامنهای صادر کرد یا سابدامنهها را هم مجاز کرد.
قفل دامنه بهتر است یا قفل IP؟
برای محصولات وب روی هاست، قفل دامنه؛ برای سرورهای اختصاصی و نصب سازمانی داخلی، قفل IP.
قفل دامنه روی سرعت اجرا اثر میگذارد؟
خیر. فقط یک مقایسه ساده در ابتدای بارگذاری فایل است و اثر محسوسی ندارد.
مطالب مرتبط: لایسنسگذاری اسکریپت · انکد افزونه وردپرس · جلوگیری از نال شدن
PHP