السلام عليكم
اخوانى الكرام
اليوم ساتكلم عن مكتبة قوية فى عالم ال Ajax وهى مكتبة XAJAX
هذه المكتبة توفر لك انت كمستخدم ان تستطيع ان تنادى دوال ال PHP من خلال كود ال HTML او الجافا سكربت الذى لدى ال Client
صممت بها تطبيق بسيط وهو لعمل Login ولكن دون تطرق لموضوع ال Session (لانى لم اذاكرها حتى الان :D )
اولا ابدأ بقاعدة البيانات :
CREATE DATABASE userX;
USE userX;
CREATE TABLE users (
userName char(50) NOT NULL,
pass CHAR(20) NOT NULL,
id int(4) NOT NULL,
PRIMARY KEY(id));
INSERT INTO `userX`.`users` (`userName`, `pass`, `id`) VALUES ('ahmed', '123', '1');
INSERT INTO `userX`.`users` (`userName`, `pass`, `id`) VALUES ('essam', '456', '2');لاحظ معى كود ال Server Side
- <?php
- require_once ("../xajax_core/xajax.inc.php");
- $xajax = new xajax("signup.server.php");
- $xajax->register(XAJAX_FUNCTION,"LoginX");
- function LoginX($user,$passy)
- {
- $objResponse = new xajaxResponse();
- /* Verify that user is in database */
- $q = "SELECT pass FROM users WHERE userName ='$user'";
- $TruePass = $arr["pass"];
- $rets ="";
- if($passy == $TruePass) {$rets .= "Login Successeded :)";}
- else $rets .= "Login Failed :)";
- $objResponse->assign("update","innerHTML",$rets);
- return $objResponse;
- }
- $xajax->processRequest();
- ?>
اتمنى ان يكون الكود شارح نفسه ولكن هناك نقطة فقط اريد توضيحها وهى انك لابد ان تقوم بتسجيل الدوال التى ستستخدمها (لا اعلم ماذا تعنى تسجيل بالظبط )ولكن نستخدم السطر الثالث لذلك
فقط تعطيه اسم الدالة وبهذا يمكنك استخدامها فى ال Client Side
ما بداخل الكود هو اننى عملت select على الباسورد الخاصة بالمستخدم الفلانى الذى ياتى لى اسمه فى المتغير $user
قارنت الباسورد الذى يخرج من الداتابيز مع الذى كتبه ثم حدد على حساب ذلك الرسالة التى سترجع له
ايضا لاحظ باننى استطعت ان اكلم الصفحة التى على ال Client Side بسهولة واتحكم بها وعلى سبيل المثال هذا السطر الذى يمكنك من ان تقوم بادخال محتوى ال DIV التى لها ال ID = "update"
لاحظ معى كود ال Client Side
- <?php require_once ("../xajax_core/xajax.inc.php"); ?>
- <?php
- $xajax = new xajax("login_ServerSide.php");
- //write the relative path of
- $xajax->configure('javascript URI','../');
- $xajax->register(XAJAX_FUNCTION,"LoginX");
- ?>
- <?php $xajax->printJavascript(); ?>
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="/xajax/pro1/login.css" />
- <script language="javascript">
- function CheckValues()
- {
- var us = document.getElementById('UserNM').value;
- var pas = document.getElementById('PassST').value;
- if(us && pas) {
- var dv = document.getElementById("update");
- dv.innerHTML="";
- xajax_LoginX(us,pas);
- }
- else alert("Fill All Fields");
- }
- </script>
- </head>
- <body>
- <div class="LoginBox">
- User:
- <input type="text" id="UserNM" name="UserNM" />
- Pass:
- <input type="password" id="PassST" name="PassST" />
- <input class="subBut" type="button" id="Subm" value="Login Using XAJAX" onclick="CheckValues()" />
- <div id="update"> </div>
- </div>
- </body>
- </html>
ايضا عملت تسجيل لاسم الدالة التى ساناديها ثم كتبت صفحة ال HTML الخاصة بى ولاحظ معى هذا ال Button
- <input class="subBut" type="button" id="Subm" value="Login Using XAJAX" onclick="CheckValues()" />
انه عندما تضغط عليه ينادى دالة الجافا سكربت التى اسمها CheckValues
ندخل الى الدالة ونرى ما بها :
- function CheckValues()
- {
- var us = document.getElementById('UserNM').value;
- var pas = document.getElementById('PassST').value;
- if(us && pas) {
- var dv = document.getElementById("update");
- dv.innerHTML="";
- xajax_LoginX(us,pas);
- }
- else alert("Fill All Fields");
- }
انا تقوم بجلب القيم التى فى مربعات الادخال وتقوم بالمشايكة عليهم هل يحتوا على قيمة ام لا هما الاثنين
وفى حالة كانوا غير فارغيين تقوم باخفاء محتوى ال Update Div مما يتسبب فى ان ال Height الخاص بهذا ال DIV يصبح صفرا فيختفى ال DIV ولا يظهر
ثم تنادى دالله ال PHP والتى اسمها LoginX والتى كل هذا الدرس بسببها وهى كيف تمكننا من ان ننادى دوال بسهولة تامة من على ال Client Side
اما لو كان هناك احد الحقول فارغ فستظهر لن رسالة تخبرنا بانه يجب ملئ الحقول كلها
طبعا المكتبة غنيتنا عن عمل XMLHttpRequest وسهلت الامور بشكل اكبر
هناك ملف CSS ايضا حتى يظهر الصندوق بشكل افضل :
- .LoginBox {
- font-family:"Courier New", Courier, monospace;
- font-weight:bold;
- font-size:14px;
- color:#666;
- border:2px solid #0FF;
- width:183px;
- background:#0CF;
- }
- .subBut {
- color:#00F;
- width:100%;
- }
- #UserNM, #PassST {
- background:#CCC;
- font-size:13px;
- }
- #UserNM:hover, #PassST:hover {
- background:#CF0;
- border:2px solid #FF0;
- }
- #update {
- color:#3FF;
- }
السورس مرفق كاملا
بالتوفيق واتمنى ان يكون الدرس مفيدا فهذا اول دروس لى فى الويب
EraMaX

