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

روش های معمول رمزگذاری روی فایل های PHP:

یکی از راه های رمز گذاری روی فایل ها از جمله فایلهای PHP در سرور استفاده از HTTP Authentication می باشد. این کار بوسیله WebService نصب شده روی سرور شما انجام میشود. مانند Apache که بوسیله htaccess و htpasswd روی فایل های موردنظر و یا پوشه رمز گذاری میکند.

مشکل این روش این است که ممکن است در کدهای Symlink و برخی از کدهای ارجایی توسط PHP مشکل ایجاد کند. همچنین تعریف user و password کمی زمانبر است. علاوه بر آن برای هر WebService نیاز دارید کد مخصوص آن را وارد کنید. مثلا کد htaccess مربوط Apache روی NginX کار نمی کند.

یکی دیگر از روش های رمز گذاری استفاده از Session در خود PHP و تعریف user و passowrd است. این راه معمول ترین راهی است که برنامه نویسان استفاده میکنند. تمامی سایت ها و برنامه های وب از Session برای پل ارتباطی بین مرورگر و سرور استفاده میکنند.

منتها این روش هم مشکلاتی ممکن است داشته باشد. اینکه اگر برنامه نویس مراقب نباشد یک هکر براحتی توسط دستورات xss یا آلوده کردن مرورگر کاربر و خواندن نام کاربری/رمز ورود وارد شده، می تواند آن را هک کند.

مزیت استفاده از HTTP Authentication که خود PHP آن را ایجاد کرده :

  • در حد چند خط و بسیار ساده است.

  • وابسته به نوع WebService نیست.​

  •  می توانید قبل اجرای هر دستوری در PHP آن را فراخوانی کنید.

  • نیازی به session ندارد.

  • شما می توانید به عنوان پسورد لایه اول از آن استفاده کنید و سپس پسورد های دیگر خود برنامه فراخوانی شوند.

کد PHP نمونه اول : ...

شاید برای شما هم پیش آمده که بخواهید در یک متن دنبال یک کلمه یا عبارت بگردید و روی آن تغییرات دلخواه را اعمال کنید.

به عنوان مثال در متن دلخواه دنبال عبارت "دینامیت" بگردید و تمام آنها را به رنگ نارنجی دربیاورید و به صفحه ویکی پدیا واژه "دینامیت" لینکش کنید. یا مثال دیگر در موتور جستجوی داخلی سایتتون عبارت های جستجو شده را پررنگ یا Highlight کنید و خیلی کاربرد های دیگر.

یکی از روش های معمول استفاده از توابع کار با رشته حروف یا String هاست که PHP در این ضمینه بسیار قدرتمند است. استفاده از توابعی مانند strpos ، strlen یا نسخه mb_strpos که برای حروف فارسی و عربی بدون ایراد می شود.

ولی تابع (mb_strpos) برای پیدا کردن اولین کلمه ساده و سریع است منتها برای پیدا کردن همه ی کلمات در متن بخصوص متون طولانی، علاوه بر پیچیدگی برنامه، بدلیل حلقه for طولانی مصرف cpu بالایی دارد.

خوش بختانه در این مواقع روش Regular Expression یا همان RegEx با سرعت بالا به کمک ما می آید. در ادامه ی مطلب با نوین ایران باشید که چگونه با چند خط ساده بکمک RegEx (با قابلیت پشتیبانی از حروف فارسی و UTF-8) مسئله را حل کنیم.

همان طور که میدانید یکی از نقاط قوت PHP توابع پیش فرض متعدد در کتابخانه ی آن است. آرایه در PHP کاربرد بسیاری دارد و در واقع کار Stack و Queue (پشته و صف)، لیست پیوندی و... در دل خود دارد. این توابع در برنامه نویسی شما بسیار کاربردی بوده و علاوه بر سهولت استفاده، سبب خواناتر شدن برنامه و سریعتر شدن آن می شود.

توابع کلی کار با آرایه را در سایت رسمی PHP.NET می توانید پیدا کنید ولی همه ی این توابع همیشه مورد استفاده شما نیستند و شاید حوصله بررسی همه را نداشته باشید.

نوین ایران در جدول زیر لیست توابع پرکاربرد کار با آرایه را در PHP برای شما تهیه کرده و توضیح مختصری هم به زبان فارسی در جلوی هر Function آمده است. با کلیک روی Function می توانید وارد صفحه رسمی هر Function در سایت PHP.NET شده و مثال های آن را نیز ببینید.

تابع توضیحات
array() تعریف یک آرایه
array_change_key_case() تغییر تمام اندیس یا کلید های یک آرایه
array_chunk() تقسیم آرایه به چند تکه
array_combine() دو آرایه را ترکیب میکند، آرایه اول کلید ها و آرایه دوم مقادیر آن ها
array_count_values() تعداد کل مقادیر آرایه را برمیگرداند
array_flip() برعکس کردن کل کلید های یک آرایه
array_keys() فقط کلید های یک آرایه را در قالب یک آرایه دیگر بر میگرداند
array_merge() ترکیب یک یا چند آرایه
array_multisort() مرتب سازی آرایه یک یا چند وجهی
array_pad() گسترش آرایه با مقداری دلخواه در صورت کم بودن تعداد

درصورتی که یک آرایه ای داشته باشیم که شامل رابطه ی پدر فرزندی بین دو خانه ی آن باشد ولی بصورت زیر شاخه نباشند، بهتر است آن را برای فهم بهتر و استفاده راحت تر به شکل درختی دربیاورید. (توجه داشته باشید در PHP چون آرایه های چند بعدی حافظه ی زیادتر اشغال نمی کنند عملاً تغییر شکل آرایه ها و تشکیل آرایه های تودرتو در اشغال حافظه ی رم تاثیری ندارد)

به عنوان مثال جدولی بنام category در پایگاه داده داریم که این جدول شامل دو کلید id و parent_id می باشد که parent_id پدر فیلد مورد نظر است. همان طور که می دانید اگر با دستور select نتایج از دیتابیس مثلا MySQL خوانده شود آرایه ای به شکل زیر تحویل php می شود:

$items = array(
         array('id' => 42, 'parent_id' => 1),
         array('id' => 43, 'parent_id' => 42),
         array('id' => 1,  'parent_id' => 0),
);

حال برای استفاده راحتر باید آرایه به شکل زیر تبدیل شود :

array
(
    [id] => 1
    [parent_id] => 0
    [childs] => Array
        (
            [0] => 
                (
                    [id] => 42
                    [parent_id] => 1
                    [childs] => Array
                        (
                            [0] => 
                                (
                                    [id] => 43
                                    [parent_id] => 42
                                )
                        )
                )
        )
)

همان طور که مشاهده می کنید درخت ایجاد شده و شاخه ای بنام childs درصورتی که فرزندی وجود داشته باشد تشکیل می گردد. برای ایجاد چنین آرایه ای به کد php زیر دقت کنید...: