السلام عليكم ورحمة الله وبركاته
أقدم لكم اليوم أولى دروسى المتقدمه فى لغة PHP و هو بعنوان كيف تجعل من لغة PHP لغة ديناميكية
للأسف الأكواد المضافة فى الموضوع يتم إضافة أكواد الحماية من السبام لمشاهدة الموضوع بأكواد صحيح هـــنا
إن لغة PHP هى لغة من نوع server-side scripting language أى أنه بمجرد معالجة الصفحة (rendering) لا دخل لل PHP فى محتواها
إن لغة JavaScript هى لغة من نوع client-side language و لديها القدرة على التفاعل مع المستخدم و تنفيذ الدوال بدون طلب إعادة تحميل الصفحة للمعالجه و ذلك بإستخدام ال (event handlers) الخاصة بها .. حيث تتجاوب اللغة مع ضغطات الماوس .. حركات القوائم .. ضغطات الكيبورد .. و غيرها من ال events .
و من خلال دمج هاتين اللغتين نحصل على صفحات ديناميكية تمكنك من أن تتمتع بخواص كل منهما معاً . حيث يمكنك مثلاً الإستعلام عن إسم مستخدم يريد تسجيل عضوية فى موقعك بمجرد إدخاله للإسم فى الخانة المخصصة .. و إظهار النتائج فوراً (in real time)
وتتم معظم الحوارات بين ال PHP وال javaScript على مرحلتين:
1- بأن دالة ال PHP تطلب البيانات (برمجياً >> تستقبلها) ثم تعالجها >> ثم ترسل الحالة إلى دالة ال JS
2- دالة ال JS تستقبل الناتج من دالة ال PHP و تغير محتوى الصفحة على حسب نوع البيانات المرسله لها (فهى كما قلنا قادرة على ذلك)
نأتى لنقطة هامة جداً و هى نوعية الملف الذى يحتوى على أكواد PHP و الآخر الذى يحتوى على أكواد JS من وجة نظر المتصفح (browser)
إن متصفح الإنترنت يتعامل مع نواتج صفحات بلغة PHP على أنها صفحات text/html و ذلك لأنه عنده إستدعاء صفحات PHP على المتصفح فإنه يحصل على النسخه ال (Rendered) منها و التى لا سلطة لل PHP عليها.
بينما عند التعامل مع ال JS فإنه يعلم أن هذه الصفحات لها سلطه عليه و يمكنها ان تغير من محتواه و لذلك يتم الإعلان عنها انها صفحات text/javascript
ولكى يكون هناك تخاطب بين اللغتين فإنه سيتم إستخدام ال PHP فى تغيير قيم المتغيرات الموجوده بداخل كود JS و على أساسها يتصرف ال JS
1- مرحلة توليد صفحة JS عن طريق ال PHP :
نستخدم دالة الهيدر فى أعلى صفحة PHP و الهدف هو إعلان أن ناتج المعالجة (rendered output) سيحتوى على JS
وذلك كالتالى :
كود PHP:
header( '(anti-spam-content-type:) text/javascript' );
2- مرحلة طلب التدخل من ملف ال JS المولَد لتغيير بيانات الصفحة.
و هذه المرحله تنفيذياً هى الأولى .. و برمجياً هى الثانية
وفي هذه المرحلة نقوم بعمل call back لمولِد ال JS ليقوم بتوليد ال JS و يتدخل و يغير من بيانات الصفحة على حسب القيم التى تم توليدها فيه
كمثال بسيط جداً :
سنقوم بعمل ملف يطلب من ملف آخر تعديل قيمة نص موجود فيه بين تاج SPAN بالوقت الحالى :
1- الصفحة الأولى برمجياً هى صفحة المولد الذى سيولد كود JS يحتوى على :
أ - متغير PHP بقيمة التوقيت الحالى
ب - كود JS لتعديل قيمة Object ما فى الصفحة التى يتم طلبه فيها
سمى هذه الصفحة js_jenerator.php
كود PHP:
<?php
header( '(anti-spam-content-type:) text/javascript' );
$time = date( 'g:i:s a' );
?>
dynamic_span_obj = document.getElementById( 'dynamic_span' );
dynamic_span_obj.innerHTML = '<?php echo $time ?>';
2- الصفحة الثانية برمجياً هى صفحة تستدعى هذا الملف الذى إمتداده PHP و يولد JS fr بقيم معينه و يتحكم في محتواها
سمها كما تشاء و لنفرض caller.html
كود HTML:
<HTML>
<head>
<title>PHP-JS by Khashabawy</title>
<SCRIPT type="text/javascript">
function attach_file( p_script_url ) {
script = document.createElement( 'script' );
script.src = p_script_url;
document.getElementsByTagName( 'head' )[0].appendChild( script );
}
</SCRIPT>
</head>
<body>
<a href="javascript:attach_file( 'js_generator.php' )">What time is it?</a>
<br/><br/>
<span id="dynamic_span" />
</body>
</HTML>
مرفق ملفات المثال
هذا الدمج البسيط يوضح فكرة بسيطه عن التعاون بين JS و PHP من أجل محتوى أكثر ديناميكية للمستخدم
تخيل أنك ترسل للصفحة js_generator.php متغير GET أو POST تقوم هى بإستقباله و عمل إستعلام فى قاعدة البيانات و الرد عليك فى نفس الوقت
مع فائق الإحترام و التقدير
أخوكم عبدالله خشبة