یک طراح وب

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

بیایید کمی سربه‌سر دزدهای پوسته بگذاریم – یک کُد کوچولو!

نوشته‌ی علیها در February 21, 2010 روی سی اس اس، پی اچ پی

ساعت‌ها وقت می‌گذاریم برای نوشتن دستورات ِ سی‌اس‌اس ِ پوسته‌مان. مسلماً دوست نداریم یک نفر بیاید در عرض چند ثانیه کدهای‌مان را کش برود. حالا ما می‌خواهیم یک کاری بکنیم که وقتی آقای دزد، پرونده‌ی سی‌اس‌اس را در مرورگرش باز کرد، به‌جای کدها، مثلاً یک شکلک عین بُز لبخند بزند برایش :)

برای این‌کار از پی‌اچ‌پی و اچ‌تی‌اکسس استفاده می‌کنیم.

فرض می‌کنیم یک صفحه‌ای داریم به‌نام index.php؛ کدهای اچ‌تی‌ام‌ال زیر را هم در آن داریم:

<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
سلام جهان!
</body>
</html>

حالا کد پی‌اچ‌پی زیر را به بالای index.php اضافه می‌کنیم، یعنی قبل از شروع شدن <html> باید قرار بگیرد:

<?php
session_start();
$_SESSION["csskey"] = "user";
?>

با این‌کار برای کاربر در هنگام ورود یک سشن با نام csskey که برابر با user است، ست کردیم.

سپس یک فایل با نام style.php می سازیم و تکه‌کد پی‌اچ‌پی زیر را در ابتدای آن قرار می‌دهیم و بعد از آن، دستورات سی‌اس‌اس‌مان را اضافه می‌کنیم:

<?php
session_start();
header("Content-type: text/css");
if ($_SESSION["csskey"] != "user") {die(":-)");}

$_SESSION["csskey"] = "somethingelse";
?>

body {background-color: #000; color: #fff; direction: rtl;}

فکر کنم متوجه شده باشید که چه اتفاقی قرار است بی‌اُفتد. Content-type را از نوع text/css می‌گذاریم تا مرورگر آن را به‌عنوان یک فایل سی‌اس‌اس تفسیر کند.
سپس می‌گوییم اگر csskey برابر با user نبود، دستورات سی‌اس‌اس را بارگذاری نکن و در خروجی «:-)» را چاپ کن.
اما اگر csskey برابر با user بود، آن‌وقت دوباره csskey را برابر با somethingelse می‌کنیم و در خروجی دستورات سی‌اس‌اس را برمی‌گردانیم.

و در آخر فقط کافی است دو خط زیر را به فایل .htaccess اضافه کنیم:

RewriteEngine on
RewriteRule style.css style.php

درواقع ما عملاً هیچ فایلی به‌نام style.css نداریم و با کمک اچ‌تی‌اکسس style.php را تبدیل به style.css می‌کنیم.

شاید تنها ایرادی که این روش داشته باشد این است که برای هربار بارگذاری شدن سایت، باید تعدادی دستور پی‌اچ‌پی اجرا و کامپایل شود و این برای سایت‌هایی که بازدید بالا دارند اصلاً خوب نیست چرا که فشار زیادی به سرور وارد می‌شود و مورد دیگر اینکه حتی با استفاده از این روش نیز دستورات سی‌اس‌اس‌مان همچنان با فایرباگ قابل روئیت می‌باشند!

این روش را ایشان ارائه کرده‌اند.

44 دیدگاه نوشته شده است! می توانید دیدگاه خود را بنویسید »

  • مهدی در 10/02/21 گفت:

    جالب بود; یه ترفند کوچک اما زیرکانه ..

  • پیام در 10/02/21 گفت:

    روش جالبی بود …

  • مرتضا در 10/02/21 گفت:

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

  • جاوید در 10/02/21 گفت:

    چه کاریه!
    خوب با اضافه کردن چند تا خط اضافه به htaccess از استفاده مستقیم از فایلها جلوگیری میکنیم (Leech protect) دردسر اضافی هم نخواهیم داشت :D

  • مجید در 10/02/21 گفت:

    خیلی باحال بود ! مرسی ! همه از فایرباگ استفاده نمی کنن ! اونایی هم که می تونن خوب قدرتش رو دارن ! نوشه جونشون ! :D

  • علیرضا در 10/02/21 گفت:

    @مرتضا
    نه مرتضی من تست کردم و این طور نبود.

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

  • مجید در 10/02/21 گفت:

    یه مشکلی ! من نمی تونم فایل .htaccess رو ویرایش کنم ! ):

  • فرهاد در 10/02/21 گفت:

    راه حل جالبی بود.
    ولی متاسفانه آقای دزد همیشه کلید داره…

  • علیها در 10/02/21 گفت:

    @مجید
    احتمالا به‌خاطر پرمیشنش هست..

  • SHahab در 10/02/22 گفت:

    اگر به جای اون دستور اچ تی اکسس آدرس خود فایل پی اچ پی رو بدیم مشگلی پیش میاد ؟

  • روزبه در 10/02/22 گفت:

    جالب بود :-D

  • علیها در 10/02/22 گفت:

    @SHahab
    با تگ لینک، فایل پی‌اچ‌پی به صفحه لینک نمی‌شه. والبته حتما باید پسوند پی‌اچ‌پی به سی‌اس‌اس تبدیل بشه تا مرورگر بتونه دستورای سی‌اس‌اس داخلش رو رندر کنه.

  • عباس در 10/02/22 گفت:

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

  • امین تبریزی در 10/02/22 گفت:

    فکر کنم این کار بیشتر از همه برا من مفید باشه ولی دستت درد نکنه اون فایرباگش رو حذف کن که حالا حالا دنبالش باشن :دی

  • امین در 10/02/22 گفت:

    مرسی علیها ، مثل همیشه عالی
    گل کاشتی داداش :)

  • Mostafa در 10/02/23 گفت:

    you are best!

  • علي رضا در 10/02/24 گفت:

    بيچاره دزدا خب

  • یاسر در 10/02/24 گفت:

    ببینم با فایر باگ مثلاً نمی‌شه کد رو دید؟
    الآن روی همین وبلاگ امتحان کردم می‌شد دید ولی فکر نمی‌کنم جلوی این کار رو بشه گرفت کلاً.

  • علیها در 10/02/24 گفت:

    @یاسر
    همونطور که گفتم با فایرباگ می‌شه دید.
    ضمنا من برای پوسته‌ی وبلاگ خودم از این روش استفاده نکردم.

  • مصطفا! در 10/02/25 گفت:

    یه سوال: این کدها را چطوری میشه رنگی کرد؟
    پلاگینی چیزی هست که کدها رو رنگی نشون میده؟ ممنون میشم جواب بدی.

  • سلام ممنون از مطلب خوبت…

  • یاسر در 10/02/25 گفت:

    @عÙ�Û�Ù�ا – من نخونده بودم اون آخرش رو.
    ولی کلاً فکر نکنم روشی برای حفظ کردن کد سی‌اس‌اس باشه که جواب بده.

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

  • مجید در 10/02/26 گفت:

    سلام !

    آره مشکل پرمیشن بود ! مرسی ! :)

  • علی در 10/03/06 گفت:

    مرسی
    با امکان جدید یوتیوب (تبدیل صحبتهای ویدیوها به زیرنویس) به روزم.

  • VAHID216 در 10/03/07 گفت:

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

  • Mostafa در 10/03/10 گفت:
  • محمد در 10/03/12 گفت:

    آقا این که بده , شما می تونید از شرط و REMOTE_REFERER این کار رو بکنی ((:

  • samuel در 10/03/24 گفت:

    من فک نمی کنم به این کار بگن دزدی چون اگه این طور بود مرورگرها طوری ساخته می شدن که خاصیت open source نداشته باشن،پس دزدی نیست.

    اگرم نگران هک شدن هستید راههای دیگه ای هم هست که جلوی هکر گرفته بشه، ولی در کل همیشه یکی هس که از شما علمش بیشتر باشه.

  • علیها در 10/03/24 گفت:

    @samuel
    چرا این دقیقا دزدی و در مرحله‌ی بعدی کپی کردن بدون اجازه محسوب می‌شه. اون خاصیت هم که می‌گید اسمش اوپن‌سورس نیست. خروجی‌ای از رندر شدن صفحه توسط مرورگر هست که به شما هم نشونش می‌ده.
    ضمنا این‌چیزها هیچ ارتباطی به هک شدن و اینا ندارن. اون اصلا یه بحث دیگه‌ای هست رفیق!

  • asd در 10/03/24 گفت:

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

  • سعید برهانی در 10/03/26 گفت:

    سلام، میبخشید خارج از موضوع مینویسم، لینک شما رو پایین وبلاگ مرسده به عنوان طراح دیدم، کارتون عالیه، فقط یه چیزی: در لینک درباره مرسده شما نقطه “ب” رو زیر “س” گذاشتید، که این کار از لحاظ تکنیکی در اینجا درست نیست.
    من استاد خوشنویسی هستم و حیفم اومد بهتون نگم، چون رو این قواعد حساسیت خاصی دارم.
    جسارتم رو میبخشید.

  • علیها در 10/03/26 گفت:

    @سعید برهانی
    خواهش می‌کنم. نمی‌دونستم این مورد رو، ممنون که توضیح دادین ;)

  • سلام خسته نباشین می خواستم بدونم که چطوری باید یک فایل css رو آپلود کرد ممنونم اگه میشه توی یکی از نظرات وبلاگ جواب بدین ممنونم

  • Hesam در 10/04/02 گفت:

    چرا صفحه رو چپکی کردید؟

  • س در 10/04/02 گفت:

    سلام دوست من عیدتون مبارک باشه
    میبینم که اینجا را هنوز نیوتون کشف نکرده
    ازتون یه درخواست داشتم اگه ممکن منو راهنمایی کنید
    من وقتی با فایرفاکس یا گوگل کروم وبلاگم رو نگاه می کنم همه چیز مرتبه
    اما وقتی با اکسپلور وارد می شم می بینم که چندتا از پستهای قبل رو نشون نمی ده یا یکی از پستها رو درهم ادغام کرده
    قالب هم عوض کردم جواب نداد
    می گن مربوط به سورس برنامه است!
    ممنون میشم اگه راهنمایی بفرمایید
    با تشکر

  • hidensoft در 10/04/04 گفت:

    بسیار عالی اما این روش خیلی پیش پا افتادست اصلا پیشنهاد نمی کنم

  • HaDi در 10/04/13 گفت:

    میشه یه دمو ازش بزارین ؟
    فکر نکنم عملی باشه

  • علیها در 10/04/13 گفت:

    @HaDi
    خودتون تست بکنید اول، اگر مشکلی بود اونوقت مطرح کنید!

  • Folaani در 10/05/11 گفت:

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

  • علیها در 10/05/11 گفت:

    @Folaani
    صحبتتون درسته اما جاش در اینجا و مربوط به این بحث نیست، این فقط یک ترفند هست و کاربردش هم در مواقع بخصوصی هست و قرار نیست همیشه از این روش استفاده کنیم. خود من طرفدار ارائه‌ی اطلاعات رایگان هستم و محتوای وبلاگ این رو ثابت می‌کنه یحتمل.

  • کری در 10/06/11 گفت:

    روش جالبی بود! واسه سایت‌های کوچیک خوبه

  • هر كسي كه كد رو ويرايش ميكنه پس از ديدن اين مورد ميره نقطه كليدي رو پيدا ميكنه اونم پاك ميكنه

    خلاصه چون سورس باز هست نميشه زياد روش با اين كدها اعتماد كرد

    مرسي

لطفا قبل از نوشتن دیدگاه خود، توجه داشته باشید که دیدگاه‌تان در رابطه با این پست باشد. در غیر این‌صورت می‌توانید از فرم تماس استفاده کنید. ممنون از توجه‌تان :)
my avatar

دیدگاه خود را ارسال کنید