آموزش ajax و php - جلسه سوم
سلام بر دوستان
جلسه سوم از آموزش ajax و php آماده شده
در این جلسه طریقه استفاده از فرمهای وب و ارسال مقادیر از طریق ajax و دریافت به صورت json.
در این ویدیو بیشتر بر روی json و پردازش مقادیر json پرداخته شده است.
سلام بر دوستان
جلسه سوم از آموزش ajax و php آماده شده
در این جلسه طریقه استفاده از فرمهای وب و ارسال مقادیر از طریق ajax و دریافت به صورت json.
در این ویدیو بیشتر بر روی json و پردازش مقادیر json پرداخته شده است.
سلام بر تمامی دوستان خوبم که همه روزه به این وبلاگ سر میزنن و همیشه هم میگن چرا آپدیت نمیکنید. باورکنید انقد سرمان شلوغ شده که نگو . نپرس.
ولی تصمیم بر این داشتم تا از دانشتههای هر چند اندک خودم مجموعه ویدیویی بسازم و برای دانلود در خدمت دوستان قرا بدم.
در این مجموعه جلسات قصد آموزش ajax رو به کمک jquery دارم. و همچنین در سمت سرور از php و mysql استفاده کردم. در این جلسات نه تنها ajax رو یاد خواهید گرفت بلکه کار با دیتابیس در php اونم بروش pdo رو هم فراخواهید گرفت. این مجموعه قراره ۶ جلسه باشه که جلسه اول به معرفی ajax و روش استفاده از اون در jquery میپردازه
امروزه نوشتن از پایه کمی منسوخ شده و فریم ورکهای رنگارنگ جای خودشون رو در میان توسعه دهندهگان باز کردن. البته برنامهنویسان بر پایه ویندوز صرفا تنها چیزی که از فریمورک به ذهن دارن همون NET. هست ولی برنامه نویسان بر پایه اوپن سورس دیدگاه بیشتری نسبت به فریم ورک دارن. مثلا در برنامهنویسی وب بر پایه مایکروسافت شما ASP.NET را میشناسید ولی در php شما با codeignite،cakephp،symfony و سلطان فریمورکهای این زمینه همون yii را خواهید داشت.
حتی فریمورکها به سمت سرور محدود نشدن و برای سمتکاربر مخصوصا css و javascriptهم بعضی فریمورکها هستن. برای جاوااسکریپت jquery و برای css میشه bootstrap رو نام برد. هر کدوم از این فریمورکها سمت کاربر برای خودشون رقبایی دارن ولی فعلا اینها در بالای جدول قرار دارن.
حالا بریم سر بوتاستراپ که که امکانات فوقالعادهای داره و سایت رسمی اون کاملا گواه بر این ادعا هست.
بیشترین هدف این پست امکانات فارسی و نمونهمثالها هست.
۱− bootstrap rtl V2
یکی از برنامهنویسان خوب ایرانی این فریمورک رو کاملا rtl کرده و از سایت رسمی اون قابل دریافت هست
۲− bootstrap rtl v3
البته بوت استراپ در ورژن ۳ هست با امکانات بسیار زیاد که از این سایت قابل دریافت هست
۴− طراحی آنلاین
سایت layoutit.com یک محیط طراحی در خدت مت شما قرار میده که با drag&drop براحتی میتونید اجزای تمپلیت دلخواه رو بسازید.
در پستهای بعدی چند نمونه تمپلیت مخصوصا برای بخش ادمین رو برای دانلود قرار میدم.
۵-ابزارهای جانبی برای بوت استارپ
همیشه رمزنگاری پسوردها در برنامههای تحت وب اهمیت بسیار بالایی داره. از اونجا که بیشتر کاربران عادت دارن در تمام سایتها پسوردهای یکی داشته باشن وقتی دیتابیس یک سایت مورد هک واقع بشه و دادههای اون استخراج بشه براحتی با داشتن فیلدهای نام کاربری و پسورد میشه به تمام اطلاعات دیگر این کاربر حتی در بعضی اوقات به ایمیلش هم دسترسی داشت.
حالا نمیخوام فلسفه پسورد و امنیت اطلاعات رو پیش بکشم بحثم روی کم کرد فشار سرور به کمک توابع داخلی و توکار هست. واقعا تعجب میکنم با این که زبانهای برنامهنویسی به مرور زمان توابع و امکانات جدید بهشون اضافه میشه و حتی در دیتابیسها هم شاهد این موضوع هستیم باز هم افزادی هستن که سرور رو مشغول کارهای پیشپا افتاد و الگوریتمهای سنگین میکنن. مثلا یه برنامهنویس میاد یک کلاس برای هش کردن پسوردها مینویسه که توش از تمام توابع(از sha و md5 گرفته تا rand و چیرهای دیگه) استفاده کرده تا کار هش کردن پسورد رو انجام بده. اولا باید گفت درصد رمز نگاری و استفاده از الگوریتمهای پیشرفته کاملا وابسته با پروژه و شرایط کارفرما داره. مثلا رمز نگاری یه فروشگاه الکترونیکی که هر کاربر قراره مبلغی از حسابش کم بشه و توی بودجه اکانتش درون سایت قرار بگیره با یه سایت شخصی ساده کاملا فرق داره. در فروشگاه اگر اکانتش لو بره امکان داره پولی رو از حسابش برداشت شده توسط شخص دیگری که اکانت رو هک کرده به حساب دیگری واریز بشه یا خرید انجام بگیره در صورتی که خود صاحب اصلی اکانت اصلا اطلاع نداشته.
در php تابع crypt رو خوب یادبگیرید که امکانات زیادی مثل salt رو هم داره. ولی در دیتابیس mysql تابع ENCRYPT کار مشابه crypt رو انجام میده.
برای ذخیره پسورد بصورت هش شده دقت داشته باشید شما دیگه به اصل پسورد دسترسی ندارید و فقط در لحظه لاگین کلمه وراد شده هش میشه و با کلمه هش شده دیتابیس مورد مقایسه قرار میگیره و این امنیت رو بالا میبره از اونجا که اگر دیتابیس خودتون رو هم کاملا کپی کنید به هکر بدید دیگه به هیچ عنوان به پسوردها دسترسی نداره.
استفاده از این تابع بصورت زیر هست:
INSERT INTO
`tbl_user`(`username`,`email`,`password`)
VALUES
('seifzadeh','mehrdad@gmail.com',ENCRYPT('1234'));
تجربه من در codeigniterو راه اندازی دو پروژه توسط اون بسیار لذت بخش بود از قابلیتهای این فریم ورک:
۱− همه چیز دست برنامه نویس و تغییرات در اون بسیار راحت
۲− یادگیری فوق العاده سریع
۳− دوری از تنظیمات زیاد برای استفاده از تمپلیت یا مدل
و خیلی مزایای دیگه که کار با اون رو لذت بخش میکنه.
ولی نبود command line در اون خیلی عذاب آوره در صورتی که بیشتر فریم ورکهای ابزاری برای crud,controller,model و خیلی از کارهای دیگه که ضرف چند ثانیه میشه بیشتر زحمات عمومی یک پروژه رو انجام داد.
و اما yii که در حال مطالعه بر روی اون هستم خیلی چشممو گرفته. انگار این همون ci ولی با قابلیتهای بیشتر هست.
و اما بریم سر اصل قضیه برای اضافه کردن command line در سیستم عامل لینوکس اوبونتو ابتدا به مسیر پوشه ای که yii رو در اون extra کردید برید و البته باید در پوشه framework باشید و دستور زیر رو وارد کنید تا مسیر جاری برای نشون داده بشه
pwd
که مسیر جاری من بصورت زیر هست
/home/mehrdad/host/yii/framework
آدرسی که نشون داده میشه رو کپی کنید و دستورات زیر رو با آدرس اون در ترمینال وارد کنید
export PATH=$PATH:/path/to/framework
برای تبدیل حروف انگلیسی به فارسی تابع زیر بسیار مفید هست
String.prototype.toPersinaDigit= function(){ var id= ['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹']; return this.replace(/[0-9]/g, function(w){ return id[+w] }); }
var en_number = "0123456789"; alert(en_number.toPersinaDigit());
String.prototype.toEnglishDigit = function() { var find = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']; var replace = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; var replaceString = this; var regex; for (var i = 0; i < find.length; i++) { regex = new RegExp(find[i], "g"); replaceString = replaceString.replace(regex, replace[i]); } return replaceString; };
var fa_number = "۰۱۲۳۴۵۶۷۸۹"; alert(fa_number.toEnglishDigit());
برای چک کردن مقدار ورودی کاربری روشهای زیادی هست که سمت کاربر معمولا با html5 یا javascript و یا هر دو با هم استفاده میشه. البته در اینجا با validation سمت سرور کار نداریم
ساعتها وقت نیاز هست تا یک تابع validation رو بر روی تمام مرورگرها و سیستمها تست کنید تا از کار کرد خوب اون مطمئن بشید. در اینجا بهترین توابع validation رو که بر حسب تجربه جمع آوری کردم رو میزارم
برای number
// check 0-9 digit function is_digit(input) { return (input - 0) == input && (input + '').replace(/^\s+|\s+$/g, "").length > 0; }
// Check if string is a valid email address function valid_email(fData) { var reg = new RegExp("^[0-9a-zA-Z]+@[0-9a-zA-Z]+[\.]{1}[0-9a-zA-Z]+[\.]?[0-9a-zA-Z]+$"); return reg.test(fData); }
تعداد حروف وارد شده در متن(زبان فارسی بدلیل encoding دو برابر نشان داده میشود)// Check if string is non-blank var isNonblank_re = /\S/; function none_blank(input) { return String(input).search(isNonblank_re) != -1 }
البته کدهای دیگری هم هستن که به مرور زمان بعد از تکمیل شدن اینجا میزارم. تمام برنامههای نوشته شده رو در یک بسته میتونید دانلود کنید.// Get String Length function regGetStrLength(input) { var valLength = input.length; var reg = new RegExp("^[\u0391-\uFFE5]$"); var result = 0; for (i = 0; i < valLength; i++) { if (reg.test(input.charAt(i))) { result += 2; } else { result++; } } return result; }
DBMS یا همان سیستم مدیریت پایگاه داده به ابزاری مجتمع برای مدیریت و نگهداری پایگاه داده معروف است. شاید معروفترین آنها MSSQL مایکروسافت باشد و oracle بالاتر از آن. ولی برنامهنویسان وب php با mysql آشنایی بیشتری دارند. پایگاه دادهای اوپن سورس و بسیار خوش دست و نرم رفتارتر از sql server مایکروسافت.(این را تنها کسانی که بصورت حرفه ای با sql server کار کرده اند می دانند) بر عکس امکانات بسیار زیاد آن ولی کاملا بر روی اعصاب می باشد.
برای mysql از DBMS معروف آن PhpMyAdminاستفاده می شود. ولی در اینجا قصد دارم تا شما را با WorkBench که ابزاری از طرف توسعه دهنده گان mysql هست آشنا کنم.