Category Archives: framework

ایجاد صفحه لاگین در فریمورک yii قسمت سوم

ایجاد یک model جدید به نام user

در فولدر models یک فایل جدید به نام User.php ایجاد کنید و کد زیر را داخل آن بنویسید

این قطعه کد توسط سایت رسمی فریمورک yii معرفی شده است

<?php

use yii\db\ActiveRecord;
use yii\web\IdentityInterface;

class User extends ActiveRecord implements IdentityInterface
{
    public static function tableName()
    {
        return 'user';
    }

    /**
     * Finds an identity by the given ID.
     *
     * @param string|int $id the ID to be looked for
     * @return IdentityInterface|null the identity object that matches the given ID.
     */
    public static function findIdentity($id)
    {
        return static::findOne($id);
    }

    /**
     * Finds an identity by the given token.
     *
     * @param string $token the token to be looked for
     * @return IdentityInterface|null the identity object that matches the given token.
     */
    public static function findIdentityByAccessToken($token, $type = null)
    {
        return static::findOne(['access_token' => $token]);
    }

    /**
     * @return int|string current user ID
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return string current user auth key
     */
    public function getAuthKey()
    {
        return $this->auth_key;
    }

    /**
     * @param string $authKey
     * @return bool if auth key is valid for current user
     */
    public function validateAuthKey($authKey)
    {
        return $this->getAuthKey() === $authKey;
    }
}

در کد بالا یک تابع با نام tableName وجود دارد که “user” را return می کند شما به جای user باید نام جدول کاربران خود را جایگزین کنید معمولا اسم user یا users را به عنوان نام جدول اطلاعات کاربران انتخاب می کنند

نحوه لاکین یک کاربر در سایت :

کد هایی که در ادامه توضیح داده می شود را درون کنترلر های خود می نویسیم

$identity = User::findOne(['username' => $username]);

Yii::$app->user->login($identity);

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

حالا هر جا که نیاز داشتید id کاربر را دریافت کنید کافیه از کدی زیر استفاده کند

$id = Yii::$app->user->id;

کد بالا یا ایدی کاربر را میدهد یا اگر کاربر لاگین نباشد مقدار null می دهد

زمانی هم که بخواهید کاربر را از سیستم خارج کنید از 

Yii::$app->user->logout();

استفاده می کنید

در این آموزش یاد گرفتید که چگونه می توانید یک کاربر را با استفاده از نام کاربری آن در سایت لاگین کنید


قسمت دوم ایجاد صفحه لاگین در فریم ورک yii

به نظر من یکی از موارد جذاب فریم ورک Yii روت و مسیریابی خودکار این فریم ورک هست در این آموزش تنظیمات اولیه  و کار با کنترلر ها  و نمایش پیام به کاربر را یاد میگیریم

اگر به فولدر فریم ورک مراجعه کنید می بینید فولدری به اسم config  می بینید وارد فولدر بشید و فایل db.php را باز کنید . در این فایل اطلاعات دیتابیس را وارد میکنیم

حالا لازمه کمی قسمت route را دستکاری کنیم به مثال زیر توجه کنید وقتی شما فریم ورک yii را نصب میکنید url های آن به این فرمت قابل فراخوانی هستند

http://hostname/index.php?r=site/index

اما ما میخواهیم url هایمان به این شکل مسیر دهی شوند

http://hostname/site/index

براین این کار داخل فولدر config فایل web.php را تغییر میدهیم و کد زیر را

'urlManager' => [
    				'class' => 'yii\web\UrlManager',
    				// Disable index.php
    				'showScriptName' => false,
    				// Disable r= routes
    				'enablePrettyUrl' => true,
    				'rules' => array(
    						'<controller:\w+>/<id:\d+>' => '<controller>/view',
    						'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
    						'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    				),
    		],

داخل ارایه components آن اضافه کنید و فایل را ذخیره کنید

حالا نحوه کار با کنترلر ها را برسی میکنیم وارد فولدر controllers می شویم و فایل SiteController.php را باز می کنیم می خواهیم تابعی بنویسیم که وقتی url زیر در مرورگر فراخوانی شد عبارت hello در صفحه مرورگر نشان داده شود

http://localhost/site/go

تابه زیر را به کنترلر اضافه می کنیم

function actionGo(){
 echo 'hello';
}

حال اگر به جای چاپ عبارت hello بخواهیم بک صفحه html را لود کنیم ازاین کد به جای echo استفاده می کنیم

return $this->render('say', ['message' =>'hello nitrocode.ir']);

در این کد فایل به اسم say در فولدر view لود می شود  . ما برای مثال یک پارامتر هم به صفحه html خود ارسال کردیم درواقع متغیری به اسم message و با محتوای hello nitrocode.ir را به فایل ارسال کردیم که در انجا می توانیم از این متغیر استفاده یا ان را به کاربر نمایش دهیم در آموزش های بعدی در این مورد بیشتر صحبت خواهیم کرد

برای ادامه آموزش روی لینک زیر کلیک کنید

قسمت سوم ساخت صفحه لاکین


قسمت 1 مقدمه شروع کار با فریم ورک Yii

چند وقتی هست که با فریم ورک Yii برای انجام پروژه ای کار میکنم و تصمیم گرفتم آموزش کار با این فریم ورک رو همراه با انجام پروژ خودم بنویسم ( اگر تازه کار هستید و می خواهید php رو تازه یاد بگیرید می تونید تو قسمت نظرات درخواست بدید تا آموزش مبتدی PHP رو هم بنویسیم ) برای درک این آموزش باید آشنایی اولیه با PHP داشته باشید .

اما چرا باید از فریم ورک Yii استفاده کنیم . فریم ورک های زیاد و خوبی برای زبان PHP ساخته شده و Yii یکی از فریم ورک های کامل و نسبتا سریع هست ( از لاراول سریع تر و منابع کم تری استفاده میکند )

در این آموزش ها ما به مرور یک سایت ساده شامل صفحه ثبتنام و ورود را خواهیم ساخت احتمالا اموزش ساخت ربات تلگرام به صورت حرفه ای هم آموزش داده خواهد شد

ابتدا باید فریم ورک را با استفاده از Composer نصب کنیم

اگر Composer روی سیستم شما نصب نیست روی نصب Composer کلیک کنید و آن را از سایت دانلود و نصب کنید

sudo composer create-project --prefer-dist yiisoft/yii2-app-basic basic

با اجرای دستور بالا در cmd ویندوز یا ترمینال لینوکس فریم ورک شروع به نصب میشه شما می توانید به جای کلمه basic اسم پروژه خودتون رو بنویسید برای مثال من اسم nitrocode.ir رو انتخاب میکنم : 

sudo composer create-project --prefer-dist yiisoft/yii2-app-basic nitrocode.ir

پس از نصب به محل نصب فریم ورک مراجعه کنید می بینید که یک فولدر به اسم nitrocode.ir ساخته شده 

بعد از نصب مسیر نصب فریم ورک رو توی مرورگرتون وارد کنید این آدرس برای من به این صورته

http://localhost/test/nitrocode.ir/web

** من فریم ورک رو داخل فولدری به اسم test نصب کردم این آدرس با توجه به محل نصب برای شما ممکنه متفاوت باشه **


ارسال ایمیل از پی اچ پی با استفاده از جیمیل

در این پست با استفاده از فریمورک f3 یا همان ( FatFree ) می خواهیم با کمک سرویس جیمیل از طریق php ایمیل ارسال کنیم

از تابع زیر برای مقدادهی smtp استفاده میکنیم :

 $smtp = new SMTP ( 'smtp.gmail.com',465,"ssl",$gmail_username,$password );

به جای $gmail_username آدرس ایمیل خود و به جای $password رمز عبور حساب خود را بنویسید اما قبل از ادامه کار باید به چند نکته توجه کنید شما در حالت عادی نمتوانید از طریق سرور از gmail استفاده کنید ابتدا باید تایید دو مرحله ای را روی اکانت ایمیل خود فعال کنید بعد وارد تنظیمات جیمیل خود شوید و از تب pop/imap گزینه ‘فعال کردن IMAP’ رو فعال کنید و تنظیمات رو ذخیره کنید

حالا لینک زیر را باز میکنیم

https://myaccount.google.com/security?utm_source=OGB&utm_medium=app

در صفحه ای که برای شما باز می شود روی گزینه app password کلیک کنید بعد از وارد کردن دوباره رمز عبور وارد صفحه مورد نظر میشویم در این صفحه باید select app را روی  Mail و select device را روی other قرار دهید پس از انجام این تنظیمان گوگل یک رمز عبور به شما می دهد از این روز عبور باید برای ارسال ایمیل از روی سرور خود استفاده کنید و ان را به جای $password بنویسید.

کد کامل ارسال ایمیل به این صورت نوشته میشه :

$smtp = new SMTP ( 'smtp.gmail.com',465,"ssl",'youracademy.ir@gmail.com','cjaqrgnpygsfwfqx' );
 
 try{
 //echo $smtp->set('Errors-to', '<bluehole@fatfreeframework.com>');
 $smtp->set('From', '"name" <youremail@gmail.com>');
 $smtp->set('To', '"Contact Name" <sendemail@gmail.com>');
 $smtp->set('Subject', 'test for send email Nitrocode.ir');
 
 $send_result=$smtp->send ($text,true );
 
if($send_result==true){
echo 'successful send email';
}
 else{
echo 'can not send email'
}
 }catch (Exception $e){
 echo $e;
echo $smtp->log();
 }

برای مشاهده پروژه ها و نمونه کارهای ما اینجا کلیک کنید


تنظیمات سرور : اگر در سرور شما دسترسی ارسال ایمیل فعال نباشد با پیام Permission denied مواجه میشیم برای رفع این مشکل باید کد زیر را از طریق ssh وارد کنیم

setsebool -p httpd_can_networck_connect 1
setsebool -p httpd_can_sendmail 1

معرفی فایل منیجر تحت وب نیترو

Free and simple and lightweight File Managar For Server or Website

NitroFM یک برنامه مدیریت فایل تحت ساده سبک و رایگان است که به سادگی میتوان آن را روی سرور و هاست نصب کرد کار کردن با این فایل منیجر  و نصب آن بسیار ساده است .

برای ساخت این فایل منیجر از فریمورک fat-free استفاده شده که یک فریمورک جدید و پرسرعت در عین حال کم حجم است می توانید این فایل منیجر را در لینک زیر مشاهده و دانلود کنید

https://github.com/parsgit/NitroFM

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

http://yourSiteName.com/nitrofm/install

در اینجا برای مثال پروژه درون فولدری با نام nitrofm قرار دارد  بعد از مشاهده صفحه نصب می توانید اطلاعات دیتابیس را وارد کنید در مرحله بعد هم یک اکانت میسازید و نصب تکمیل میشود حال می توانید با وارد کردن اطلاعات اکانتی که ساختید وارد فایل منیجر شوید


ساخت ربات تلگرام با fat-free

پیاده سازی و ساخت ربات تلگرام با فریم ورک fat-free بسیار ساده است البته واسه برنامه نویسا 🙂

خب بعد از پیاده سازی fat-free framework برای راحتی کار با ربات باید sdk مربوط به ربات رو به فریم ورک اضافه کنیم

“Read More”


چند مطلب مهم و پایه ای فریم ورک فت فری

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

در حالت عادی زمانی که شما یک فایل php را در سرور خود قرار میدهید ( فرض میکنیم اسم فایل php ما nitro.php است ) زمانی که می خواهیم این فایل را اجرا کنیم باید ادرس url رو به این صورت وارد کنیم :

http://yoursite.ir/file/nitro.php

یکی از امکانات فریم ورک ها قابلیت مسیردهی ( routing ) انها است که قابلیت انعطاف بالایی به ما می دهد برای مثال به راحتی می توانید به هر شکل که دوست دارید مسیر دهی به فایل php را انجام دهید برای مثال:

http://yoursite.ir/nitro

“Read More”


اموزش کار با دیتابیس mysql

در این پست یاد میگیریم که چگونه با دیتابس mysql در فریم ورک fatfree کار کنیم همچنین این کد ها برنامه شمارو در مقابل حملات تزریق SQL یا همون SQL Injection کاملا ایمن میکنه

در کد زیر ابتدا دیتابیس رو مقدار دهی می کنیم بجای mydb نام دیتابیس رو می نویسیم و به جای root نام کاربری و به جای 1234 رمز دیتابیس رو می نویسیم

$db=new DB\SQL(
    'mysql:host=localhost;port=3306;dbname='."mydb",
    "root",
    "1234");

“Read More”


آموزش نصب و راه اندازی فریم ورک فت فری

  • در این پست با نحوه نصب فریم ورک fat-free بر روی سیستم عامل لینوکس ابونتو و ویندوز اشنا خواهیم شد.

ما ساختار معماری 3 لایه یا همون mvc رو در این فریم ورک پیاده سازی خواهیم کرد برای نصب fatfree موارد زیر را باید انجام دهیم

  1. نصب برنامه git و Composer
  2. دانلود fatfree
  3. پیاده سازی فریم ورک

کاربران ویندوز هم می توانند با کلیک روی لینک های بالا وارد سایت مورد نظر بشن و فایل نصب git و composer رو دانلود و به راحتی نصب کنند بقیه مراحل در هر دو سیستم عامل یکسان است

برای نصب git کد زیر را در ترمینال اجرا کنید

sudo apt-get install git

برای نصب Composer

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

بعد از نصب برنامه های بالا فریم ورک fat-free رو از لینک زیر دریافت کنید

دانلود fatfree framework

بعد از دانلود فایل را در فولدر مناسبی از حالت فشرده خارج کنید. وارد فولدر fatfree-master شوید و روی پنجره فولدر راست کلیک کنید و open Terminal رو بزنید حالا کد زیر رو با حالت ادمین در ترمینال اجرا کنید و منتظر بمونید تا نصب کامل بشه ممکنه کمی زمان بر باشه

کاربران ویندوز در cmd باید دستور زیرو وارد کنند

composer install

در صورتی که نصب درست انجام شده باشه یک فولدر به نام vendor به فولدر پروژه ما اضافه شده است اگر روی سیستم شما سرور مجازی نصب باشد می توانید در مرورگر خود نتیجه را مشاهده کنید

http://localhost/sample/fatfree-master/

حالا میخواهیم پروژه خود را به صورت MVC ساختار دهی کنیم فولدری به نام app بسازید حال به درون فولدر app رفته و 3 فولدر به نام های controllers و file و views بسازید

حالا به ریشه اصلی پروژه یعنی همان فولدر fatfree-master می رویم درون این فولدر فایل index.php را باز کنید کد های درون ان را به کلی پاک کنید و کدهای زیر را درون آن قرار دهید و ذخیره کنید

<?php

require_once("vendor/autoload.php");

$f3 = Base::instance();

$f3->config('config.ini');
$f3->config('routes.ini');

$f3->run();

حالا فایلی به اسم routes.ini بسازید و کد زیر را داخل آن ذخیره کنید .

[routes]

;base routes
GET /=MainController->main
GET /hello=MainController->showHello

باز فایلی به نامconfig.ini بسازید و کد های زیر را درون آن ذخیره کنید

[globals]

DEBUG=3
UI=app/views/
AUTOLOAD=app/controllers/

حال به فولدرcontrollers که ساخته بودیم میریم (app/controllers) و درون آن فایلی به نام MainController.php می سازیم و کد زیر را درون ان ذخیره میکنیم

<?php

class MainController {

    function showHello(){
        echo 'Hello NitroCode.ir :)';
    }
    function main(){
         echo 'OK';
    }

}

خیلی خب کار تمام است حالا با مرورگر خود به مسیر پروژه برید پیام OK برای شما نشان داده می شود(http://localhost/sample/fatfree-master)

حال اگر جلوی ادرس کلمه hello را وارد کنید به این صورت :

http://localhost/sample/fatfree-master/hello

پیام زیر رو به شما نشون میده

Hello NitroCode.ir :)

منبع

مربوط :

مطالب مهم و پایه ای در fatfree

اموزش کار با دیتابیس mysql در fatfree


معرفی و مقایسه فریم ورک های php

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

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

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

framework میزان استفاده از رم وابستگی ها درخواست در ثانیه
phalcon-2.0 0.27 1.0 1,746
fatfree-3.5 0.42 1.6 1106
lumen-5.1 0.95 3.7 412
laravel-5.1 2.76 10.7 91

منبع اطلاعات جدول: https://github.com/kenjis/php-framework-benchmark/

laravel : طبق این بنچ مارک فریم ورک لاراول تنها 91 درخواست در 1 ثانیه را جواب داده و همین طور که مشاهده می کنید مصرف رم ان از بقیه فریم ورک ها بیشتر است البته کار با لاراول بسیار ساده است و شاید یکی از دلایل محبوبیت این فریم ورک در میان برنامه نویسان باشه.

lumen : درواقع یک میکرو فریم ورک است که در زیر مجموعه ی لاراول قرار می گیرد این میکرو فریم ورک بیشتر برای ساخت API مناسب است سرعت آن از لاراول بیشتر و میزان رم مصرفی آن کم تر است

fatfree : با توجه به جدول بالا این فریم ورک سرعت بسیار بالاتر و مصرف رم کم تری دارد و در 1 ثانیه به 1106 درخواست پاسخ داده است به اختصار به این فریم ورک f3 هم می گویند. حجم بسیار کمی دارد.

phalcon : این فریم ورک را به عنوان سریع ترین فریم ورک php می شناسند دلیل سرعت بالای آن استفاده این فریم ورک از کتابخوانه های زبان c است اما بنظر میرسد که پیاده سازی آن کمی مشکل است و شاید در هاست های اشتراکی نتوان از آن استفاده کرد

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