(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-85215037-1', 'auto'); ga('send', 'pageview');

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

دانلود فایل در php با استفاده از تغییر header

با دستور زیر می توانید یک فایل فشرده رو در php آماده دانلود کنید. با تغییر هدر صفحه قابلیت دانلود ایجاد می کنید.

// تعیین نوع محتوای صفحه و نوع ارسال و نمایش داده های صفحه به مرورگر
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"');
header('Content-Transfer-Encoding: binary');
readfile('example.zip');
۲۹ مرداد ۹۵ ، ۲۲:۴۳ ۰ نظر موافقین ۱ مخالفین ۰
مهدی حسامی

ارسال ایمیل انبوه با php با سرعت فوق العاده بالا

ارسال ایمیل با php

در این پست سرویسی رو بهتون معرفی میکنم که به تمام برنامه نویسان API هایی رو ارائه میده که براحتی با اتصال به وب سرویس شون ، می تونیم ایمیل های انبوه ارسال کنیم یا جهت ارسال مطالب برای اعضای سایتمون از این سرویس استفاده کنیم و دیگر متحمل هزینه های سنگین سرورهای ارائه دهنده سرویس ایمیل نشویم . امیدوارم مفید باشه براتون

این سایت تا 10 هزار ارسال در ماه رو به کاربرانش رایگان ارائه میده که گفتم شماهم ازش استفاده کنید .

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

www.mailgun.com

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

رفع خطای Warning: Cannot modify header information

 

<?php
ob_start();
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test Page</title>
</head>
<body>
<?php  header("Location: panel.php");  ?>
</body>
</html>

برای رفع مشکل عدم ریدایرکت با تابع header این پست رو دنبال کنید و نگران نباشید

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

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

آشنایی با تابع header در php

در این پست تجربه ای رو از تابع header در اختیارتون قرار میدم :

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

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

دانلود،نصب و تغییر پوسته های زیبا برای ویرایشگر phpstorm

تم phpstorm

 

برای نصب پوسته یا تم در نرم افزار phpstorm ابتدا باید یک پوسته را از سایتهای ارائه دهنده دانلود کنید

و مراحل زیر رو مرحله به مرحله پیش برید :

1 -  دانلود فایل قالب با پسوند  icls

2 - انتقال فایل دانلود شده به مسیر مقابل :      C:\Users\YourName\.PhpStorm2016.2\config\colors

3 - راه اندازی مجدد نرم افزار phpstorm

4 - رفتن به مسیر مقابل در نرم افزار و انتخاب تم مورد نظر :  File > Settings > Editor > Colors & Fonts

 

 

یکی از سایتهای معروفی که این پوسته ها رو ارائه میده در زیر آورده شده :

 

www.phpstorm-themes.com

 

 

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

چاپ ثابت ها درون یک رشته بدون الحاق

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

روش اول : استفاده از تابع sprintf 

این تابع از شما یک رشته میگیره که توی این رشته محل هایی که میخواهید مقداری از یک جایی خونده بشه رو بصورت علامت s% لابلای رشته مشخص میکنید بعد در پارامترهای بعدیش نام ثابت ها رو به ترتیب از چپ به راست مینویسید:

<?php

    define('Name1','Mehdi');
    define('Name2','Reza' );
    echo sprintf( ' %s and %s are students'  ,  Name1 , Name2) ;
    
?>

خروجی دستور بالا در زبان php بصورت زیر خواهد شد :

Mehdi and Reza are students

روش دوم : تبدیل ثابت به متغیر

<?php

    define( 'ANIMAL','monkey');
    $var1 = 'constant';
    echo "I like {$var1('ANIMAL')}";
?>

خروجی دستور بالا در زبان php بصورت زیر خواهد شد :

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

پشتیبان گیری خودکار روزانه از دیتابیس و نگهداری آن بر فضای امن ابری

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

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

روال کار این سایتها به این صورته که شما وارد این سایتها می شوید و بعد از ثبت نام از طریق پنلی که در اختیارتون قرار داده میشه می تونید آدرس و مشخصات سرور دیتابیس تون به همراه نام کاربری و رمز عبور دیتابیس تون رو وارد کنید و زمان مورد نظری که میخواهید سایت برایتان پشتیبانگیری خودکار انجام بده رو هم مشخص می کنید (مثلا هر روز صبح ساعت 9:00 یا هر روز 5 بار در فلان زمانها) سپس این سامانه تحت وب در زمانهای مشخص شده به دیتابیس شما وصل شده و از اون پشتیبانگیری خودکار انجام میده که در صورت خرابی کامپیوتر شرکت میزبان سایت شما و حتی نابودی کل شرکت هاستینگ هم شما براحتی می توانید از فایل پشتیبان ذخیره شده در هار دیسک های ابری این شرکتها رو دانلود کنید و به سرور جدیدتون وارد نمائید.

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

 

www.gobitcan.com

امیدارم مفید بوده باشه

نظرات شما باعث دگرمی ما در ارائه مطالب و تجربیات بیشر خواهد شد.

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

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

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

 

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

معروفترین این ابزار متعلق به سایت 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 "اطلاعات شما با موفقیت در دیتابیس ثبت شد";

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