آموزش php (وبلاگ یک پی اچ پی کار)

آموزش زبان برنامه نویسی php , html , css , تجربیات یک برنامه نویس

۱۴۲ مطلب توسط «مهندس مهدی حسامی» ثبت شده است

ابزار بررسی سایت طراحی شده

اعتبارسنجی سایت

 

در این پست لینکی رو معرفی می کنم که ابزارهای ولیدیشن زیادی رو در اختیارتون میزاره که میتونید وبسایتهاتون رو از بسیاری لحاظ بسنجید که فکر میکنم همه طراحان وب باید با این ابزار ها آشنا باشید.

معروفترین این ابزار متعلق به سایت w3s میباشد که آدرس صفحه مربوطه در این سایت رو در زیر میبینید :

 

مشاهده ابزار بررسی سایت

۲۶ مرداد ۹۵ ، ۱۹:۵۳ ۰ نظر موافقین ۱ مخالفین ۰
مهندس مهدی حسامی

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

نکته ای هست که باید بدونید:
وقتی از یک فرمی اطلاعاتی رو به یک صفحه ارسال می کنید تمامی این اطلاعات بصورت رشته ارسال می شوند (در هر دو روش ارسال POST و GET )
پس حواستون باشه وقتی یک داده عددی ارسال می کنید و در سمت سرور اگر با توابع php چک کنید که آیا این یک عدد است یا رشته در هر حالت خواهد گفت که این یک رشته است.
اینم بالاخره یک تجربه بود که بنظرم  رسید اگه بگم به دردتون میخوره

۲۶ مرداد ۹۵ ، ۱۸:۰۲ ۱ نظر موافقین ۱ مخالفین ۰
مهندس مهدی حسامی

افزایش امنیت فرم های وب

در این پست میخوام شمارو با مفهومی بنام   " تزریق اس کیو ال "  آشنا کنم:

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

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

بنابراین ما باید خیلی حواسمون باشه که ببینیم کاربران سایتمون چه داده هایی رو برامون ارسال میکنند ، از اونجائیکه معمولا پس از دریافت اطلاعات از فرم ها ، ما این اطلاعات رو میریزیم توی دیتابیس ، پس اگر درون صفحات پردازش فرم ها از صحت و درستی داده ها اطمینان حاصل نکنیم ممکنه کاربری به همراه داده یک دستور SQL هم ارسال کنه و چون این مقدار درون رشته کوئری قرار میگیره و به نرم افزار مدیریت بانک اطلاعتی مون ارسال میشه ، پس اونجا کد اس کیو ال نیز  execute (اجرا)  خواهد شد و ممکنه باعث تخریب یا دستکاری داده ها و دیتابیسمون بشه

برای اینکه ما جلوی ارسال داده های مخرب (SQL) رو به دیتابیس بگیریم باید قبل از ارسال اونها به نرم افزار DBMS (نرم افزار مدیریت بانک اطلاعاتی) بایستی اونهارو آماده سازی کنیم و هرگونه کد اس کیو الی رو ازشون حذف کنیم و سپس به دیتابیس بفرستیم.

خوشبختانه در زبان php توابع زیادی برای آماده سازی داده های ارسالی به دیتابیس وجود داره که من یکی از این روشها رو که متعلق به کلاس PDO میباشد رو خدمتتون آموزش میدم : 

(البته برخی از توسعه دهندگان وب میان یک لیست سیاه از کاراکترها رو  تعیین میکنند و اون کاراکتر هارو از ورودی های کاربر حذف میکنند که اصلا مناسب نیست ، چون ممکنه ما کاراکتری رو از یک ورودی محدود کنیم که اصلا نیاز هست تا کاربران برایمان ارسال کنند)

روشی که در اینجا با استفاده از متدهای کلاس PDO میخواهیم انجام بدیم تمام مقادیر رو بصورت پارامتری به دیتابیس میفرسته و این باعث میشه که کاربر وقتی درون یک فیلدی از یک فرم مقدار مثلا یک اسم رو وارد کرده و در انتهاش یک کد اس کیو الی هم نوشته و ارسال کرده ، تمامش به عنوان یک پارامتر متعلق به یک ستون از یک جدول به دیتابیس معرفی بشه و اگر کدی همراه اونا ارسال کرده باشه توسط DBMS اجرا نشه

 

فرض کنید کاربری مثلا برای اینکه به یک سیستم لاگین کنه وارد صفحه لاگین سایت میشه و به جای اینکه مقادیر صحیح نام کاربری و رمز عبورش رو وارد کنه و ارسال کنه تا از دیتابیس استعلام بشه ، میاد کد زیر رو میفرسته !  حالا خودتون ببینید آیا نمیتونه بدون اطلاعات صحیح هم وارد بشه !!!

تزریق اس کیو ال

 

حالا همونطور که در تصویر بالا میبینید کاربر وقتی مقادیر بالا رو وارد کنه به شکل زیر در کوئری قرار میگیرن :

 

sqlinjection

 

برای جلوگیری اینگونه حملات از دو متد کلاس PDO استفاده میکنیم که یکی رشته کوئری رو بدون مقادیر به دیتابیس معرفی میکنه تا دیتابیس از ساختار دستور اس کیو الی ما آگاه بشه  و دومی هم مقادیر رو برای اجرا به دیتابیس میفرسته

اولی متد prepare و دومی هم  execute  هست.

$name=trim($_POST['dname']);
$familly=trim($_POST['dfamilly']);
$mobile=trim($_POST['dmobile']);
$tell=trim($_POST['dtell']);
$email=trim($_POST['demail']);
$address=trim($_POST['address']);
$message=trim($_POST['message']);
$type=trim($_POST['type']);

date_default_timezone_set("Asia/Tehran");
$date=date("Ymd",time());
$time=date("His",time());




    $db=new pdo("mysql:host=localhost;dbname=mydb;charset=utf8","root","");
    $q="INSERT INTO dorders(name,familly, tell, mobile,email,type,address,message,date,time) VALUES (?,?,?,?,?,?,?,?,?,?)";
    $stmt=$db->prepare($q);
    $stmt->execute(array($name,$familly,$tell,$mobile,$email,$type,$address,$message,$date,$time));


    echo "اطلاعات شما با موفقیت در دیتابیس ثبت شد";

۲۶ مرداد ۹۵ ، ۱۶:۰۳ ۰ نظر موافقین ۱ مخالفین ۰
مهندس مهدی حسامی

بهترین ویرایشگر برای php

معرفی نرم افزار ویرایشگر برای php :

 JetBrains PhpStorm

طبق تجربه ای که داشتم ، در بین چندین ویرایشگر متنی برای تولید کدهای php در این چند سال ویرایشگری به قدرت JetBrains PhpStorm ندیدم
به جرات میتونم بگم یک محیط فوق کامل برای زبان های html , css , php , js میباشد که کد زدن داخل این محیط واقعا لذت بخش هست و بنده خودم واقعا در این محیط خسته نمیشم و کدنویسی برای یک تفریح میشه
آخرین نسخه JetBrains PhpStorm هم اکنون که من این متن رو مینویسم با نام 2016.2 قابل دانلود هست که در نسخه های قبلی با شماره ای مشخص میشد ولی در این نسخه احتمالا خواستن که یه تنوع اساسی به نوع نامگذاری نسخه هاشون بدن و اومدن اولش نام سال میلادی رو نوشتن و بعدش هم یک شماره که نشون دهنده میزان تغییرات هست ( البته اینا مهم نیست) شما میتونید دانلود کنید و از این محیط لذت ببرید.


من لینک دانلود نسخه JetBrains PhpStorm 2016.2 رو از سایت soft98.ir براتون میذارم ولی خودتون هم میتونید سرچ کنید:

دانلود با لینک مستقیم با حجم 216 مگابایت

۱۶ مرداد ۹۵ ، ۱۱:۳۵ ۰ نظر موافقین ۱ مخالفین ۰
مهندس مهدی حسامی

افکت گذاری روی عناصر با css3

css3 animation effects

 

در این پست چندتا سایت معرفی میکنم که در زمینه افکتهای انیمیشنی css3 شمارو کمک میکنه و شما میتونید از کدهای آماده این سایتها برای افکت دهی به تصاویر و لینکهاتون استفاده کنید:

ادامه مطلب...
۱۳ مرداد ۹۵ ، ۱۹:۰۳ ۰ نظر موافقین ۱ مخالفین ۰
مهندس مهدی حسامی

ux چیست؟

در این پست خیلی خیلی کوتاه میخوام به شما بگم که اصلا ux چی هست !

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

وقتی میگیم ارتباط برقرار کنند یعنی اینکه بتونن از امکاناتی در آن وجود داره استفاده کنند ، به خاطر همین هست که رابط کاربری ، یعنی رابط بین کاربر و کدهای عملیاتی برنامه  که به این طرح ui میگن

ادامه مطلب...
۱۳ مرداد ۹۵ ، ۱۶:۴۹ ۰ نظر موافقین ۱ مخالفین ۰
مهندس مهدی حسامی

ترسیم ستاره با حلقه while در php

در این پست یک شکل با ستاره ایجاد می کنیم که برای اینکار از دو حلقه استفاده کرده ایم ، حلقه بیرونی برای کنترل تعداد خط و حلقه داخلی برای کنترل تعداد چاپ * در هر خط میباشد :

 

    $= 0;
    $= 0;
    while($a<30)
    {
        while($b<30-$a)
        {
             echo "*";  
             $b++; 
        }
        $b = 0;
        echo "<br>";  
        $a++;      
    }

ادامه مطلب...
۰۸ مرداد ۹۵ ، ۲۱:۴۰ ۱ نظر موافقین ۱ مخالفین ۰
مهندس مهدی حسامی

غیرفعال کردن سرویسهای اشغال کننده پورت 80 در ویندوز

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

به عنوان مثال با توجه به اینکه نرم افزار WAMP SERVER نیز با پورت 80 کار میکنه لذا زمانی که در ویندوز برنامه یا سرویس دیگری پورت 80 رو اشغال کرده باشد ، اجرای ومپ سرور دچار مشکل میشود و آیکن برنامه زرد باقی می ماند و سبز نمی شود .

البته برای اینکه بدونیم چه سرویسی پورت 80 رو اشغال کرده  میتونیم از ابزار تست اشغال پورت در آپاچی برنامه ومپ سرور ، وضعیت پورت80 رو بررسی کنیم که معمولا هم  می نویسه : پورت شماره 80 توسط سرویسهای http اشغال شده است (SERVER: Microsoft-HTTPAPI/2.0) لذا ما در این پست راهکار رفع این مشکل رو خدمتتون آموزش می دهیم .

ادامه مطلب...
۳۱ تیر ۹۵ ، ۱۷:۵۹ ۲۲ نظر موافقین ۱ مخالفین ۰
مهندس مهدی حسامی