Thứ Ba, 30 tháng 10, 2018

CakePHP - Quản lý phiên

Phiên cho phép chúng tôi quản lý người dùng duy nhất trên các yêu cầu và lưu trữ dữ liệu cho người dùng cụ thể. Dữ liệu phiên có thể truy cập được ở bất kỳ nơi nào bạn có quyền truy cập vào đối tượng yêu cầu, tức là các phiên có thể truy cập từ bộ điều khiển, khung nhìn, trình trợ giúp, ô và thành phần.

Truy cập đối tượng phiên

Đối tượng phiên có thể được tạo bằng cách thực thi mã sau đây.

Link đăng ký khóa học : Phần mềm lập trình PHP chuyên nghiệp.

$session = $this->request->session(); 

Viết dữ liệu phiên

Để viết một cái gì đó trong phiên, chúng ta có thể sử dụng phương thức write () session .

Session::write($key, $value)

Phương thức trên sẽ lấy hai đối số, giá trị và khóa mà theo đó giá trị sẽ được lưu trữ.

Thí dụ
$session->write('name', 'Virat Gandhi');

Đọc dữ liệu phiên

Để lấy dữ liệu đã lưu từ phiên, chúng ta có thể sử dụng phương thức session read () .

Session::read($key)

Hàm trên sẽ chỉ lấy một đối số là khóa của giá trị được sử dụng tại thời điểm ghi dữ liệu phiên. Khi khóa chính xác được cung cấp thì hàm sẽ trả về giá trị của nó.

Thí dụ

$session->read('name'); 

Khi bạn muốn kiểm tra xem dữ liệu cụ thể có tồn tại trong phiên hay không, thì bạn có thể sử dụng phương thức session () .

Session::check($key)

Hàm trên sẽ chỉ lấy khóa làm đối số.

Thí dụ

if ($session->check('name')) {
   // name exists and is not null.
}

Xóa dữ liệu phiên

Để xóa dữ liệu khỏi phiên, chúng tôi có thể sử dụng phương thức xóa () để xóa dữ liệu.

Session::delete($key)

Hàm trên sẽ chỉ lấy khóa của giá trị sẽ bị xóa khỏi phiên.

Thí dụ

$session->delete('name');

Khi bạn muốn đọc và sau đó xóa dữ liệu từ phiên, chúng ta có thể sử dụng phương thức session () .

static Session::consume($key)

Hàm trên sẽ chỉ lấy khóa làm đối số.

Thí dụ

$session->consume('name'); 

Phá hủy một phiên

Chúng ta cần hủy một phiên người dùng khi người dùng đăng xuất khỏi trang web và phá hủy phiên mà phương thức destroy () được sử dụng.

Session::destroy()

Thí dụ

$session->destroy();

Phiên hủy sẽ xóa tất cả dữ liệu phiên khỏi máy chủ nhưng sẽ không xóa cookie phiên.

Gia hạn một phiên

Trong trường hợp bạn muốn gia hạn phiên người dùng, chúng tôi có thể sử dụng phương thức renew () phiên .

Session::renew()

Thí dụ

$session->renew();

Hoàn thành phiên

Make changes in the config/routes.php file as shown in the following program.

config / routes.php

<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('/sessionobject',
         ['controller'=>'Sessions','action'=>'index']);
      $routes->connect('/sessionread',
         ['controller'=>'Sessions','action'=>'retrieve_session_data']);
      $routes->connect('/sessionwrite',
         ['controller'=>'Sessions','action'=>'write_session_data']);
      $routes->connect('/sessioncheck',
         ['controller'=>'Sessions','action'=>'check_session_data']);
      $routes->connect('/sessiondelete',
         ['controller'=>'Sessions','action'=>'delete_session_data']);
      $routes->connect('/sessiondestroy',
         ['controller'=>'Sessions','action'=>'destroy_session_data']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();
Tạo một tệp SessionsController.php tại src / Controller / SessionsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / SessionsController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;

   class SessionsController extends AppController{
      public function retrieveSessionData(){
         //create session object
         $session = $this->request->session();
      
         //read data from session
         $name = $session->read('name');
         $this->set('name',$name);
      }
      public function writeSessionData(){
         //create session object
         $session = $this->request->session();
         
         //write data in session
         $session->write('name','Virat Gandhi');
      }
      public function checkSessionData(){
         //create session object
         $session = $this->request->session();
      
         //check session data
         $name = $session->check('name');
         $address = $session->check('address');
         $this->set('name',$name);
         $this->set('address',$address);
      }
      public function deleteSessionData(){
         //create session object
         $session = $this->request->session();
         
         //delete session data
         $session->delete('name');
      }
      public function destroySessionData(){
         //create session object
         $session = $this->request->session();
         
         //destroy session
         $session->destroy();
      }
   }
?>

Tạo một thư mục Các phiên làm việc tại src / Template và dưới thư mục đó tạo một tập tin Xem có tên là write_session_data.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Phiên / write_session_data.ctp

The data has been written in session.

Tạo một tệp Xem khác có tên là retrieve_session_data.ctp trong cùng một thư mục Phiên và sao chép mã sau vào tệp đó.

src / Template / Sessions / retrieve_session_data.ctp

Here is the data from session.
Name: <?=$name;?>

Tạo một tệp Xem khác có tên là check_session_data.ctp trong cùng thư mục Phiên và sao chép mã sau vào tệp đó.

src / Mẫu / Phiên / check_session_data.ctp
<?php if($name): ?>
name exists in the session.

<?php else: ?>
name doesn't exist in the database

<?php endif;?>
<?php if($address): ?>
address exists in the session.

<?php else: ?>
address doesn't exist in the database

<?php endif;?>

Tạo một filbe Xem gọi delete_session_data.ctp dưới cùng thư mục Sessions và sao chép đoạn mã sau vào tập tin đó.

src / Mẫu / Phiên / delete_session_data.ctp

Data deleted from session.

Tạo một tệp Xem khác có tên là destroy_session_data.ctp trong cùng một thư mục Phiên và sao chép mã sau vào tệp đó.

src / Mẫu / Phiên / destroy_session_data.ctp

Session Destroyed.

Đầu ra

Thực hiện ví dụ trên bằng cách truy cập URL sau. URL này sẽ giúp bạn ghi dữ liệu trong phiên.

http: // localhost: 85 / PHP / phiên-ghi

Phần mềm lập trình PHP chuyên nghiệp
Phần mềm lập trình PHP chuyên nghiệp

Truy cập URL sau để đọc dữ liệu phiên - http: // localhost: 85 / PHP / phiên đọc

Truy cập URL sau để kiểm tra dữ liệu phiên - http: // localhost: 85 / PHP / sessioncheck

Truy cập URL sau để xóa dữ liệu phiên - http: // localhost: 85 / PHP / sessiondelete

Truy cập URL sau để hủy dữ liệu phiên - http: // localhost: 85 / PHP / sessiondestroy

Thứ Hai, 29 tháng 10, 2018

CakePHP - Quốc tế hóa

Giống như nhiều khung công tác khác, PHP cũng hỗ trợ Quốc tế hóa. Chúng ta cần phải làm theo các bước sau để chuyển từ ngôn ngữ đơn sang nhiều ngôn ngữ.

Bước 1 - Tạo một thư mục Locale riêng biệt src \ Locale .

Bước 2 - Tạo thư mục con cho mỗi ngôn ngữ trong thư mục src \ Locale. Tên của thư mục con có thể là hai mã ISO của ngôn ngữ hoặc tên miền địa phương đầy đủ như en_US, fr_FR, v.v.

Bước 3 - Tạo tệp default.po riêng biệt trong từng thư mục con ngôn ngữ. Tập tin này có chứa mục trong hình thức msgid và msgstr như thể hiện trong chương trình sau đây.

msgid "msg"
msgstr "CakePHP Internationalization example."

Ở đây, msgid là chìa khóa đó sẽ được sử dụng trong Xem mẫu tập tin và msgstr là giá trị mà các cửa hàng dịch.

Bước 4 - Trong Xem mẫu tập tin, chúng ta có thể sử dụng trên msgstr như hình dưới đây sẽ được dịch dựa trên giá trị bộ locale.

<?php echo __('msg'); ?>

Ngôn ngữ mặc định có thể được đặt trong tệp config / bootstrap.php bằng dòng sau.

'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US')

Để thay đổi cục bộ khi chạy, chúng ta có thể sử dụng các dòng sau.

use Cake\I18n\I18n;
I18n::locale('de_DE'); 

Thí dụ

Thực hiện các thay đổi trong tệp config / routes.php như được hiển thị trong chương trình sau.

config / routes.php
<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('locale',['controller'=>'Localizations','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();
Tạo một tệp LocalizationsController.php tại src / Controller / LocalizationsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / LocalizationsController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\I18n\I18n;

   class LocalizationsController extends AppController{
      public function index(){
         if($this->request->is('post')){
            $locale = $this->request->data('locale');
            I18n::locale($locale);
         }
      }
   }
?>
Tạo một thư mục Locale tại src \ Locale . Tạo 3 thư mục có tên en_US, fr_FR, de_DE trong thư mục Locale. Tạo một tệp theo từng thư mục có tên default.po . Sao chép mã sau vào tệp tương ứng.

src / Locale / en_US / default.po

msgid "msg"
msgstr "CakePHP Internationalization example."

src / Locale / fr_FR / default.po

msgid "msg"
msgstr "Exemple CakePHP internationalisation."

src / Locale / de_DE / default.po

msgid "msg"
msgstr "CakePHP Internationalisierung Beispiel."

Tạo một thư mục Các bản địa hóa tại src / Template và dưới thư mục đó tạo một tệp Xem có tên là index.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Localizations / index.ctp
<?php
   echo $this->Form->create("Localizations",array('url'=>'/locale'));
   echo $this->Form->radio("locale",[
      ['value'=>'en_US','text'=>'English'],
      ['value'=>'de_DE','text'=>'German'],
      ['value'=>'fr_FR','text'=>'French'],
   ]);
   echo $this->Form->button('Change Language');
   echo $this->Form->end();
?>
<?php echo __('msg'); ?>
Thực hiện ví dụ trên bằng cách truy cập URL sau.
Phần mềm lập trình PHP chuyên nghiệp

Link đăng ký khóa học : Phần mềm lập trình PHP chuyên nghiệp.

http: // localhost: 85 / PHP / ngôn ngữ

Đầu ra

Khi thực hiện, bạn sẽ nhận được kết quả sau.

E-mail

PHP cung cấp lớp Email để quản lý các chức năng liên quan đến email. Để sử dụng chức năng email trong bất kỳ bộ điều khiển nào, trước tiên chúng tôi cần tải lớp Email bằng cách viết dòng sau.

use Cake\Mailer\Email;

Lớp Email cung cấp các phương thức hữu ích khác nhau được mô tả dưới đây.

Cú phápTừ (string | array | null $ email null, string | null $ name null)
Thông sốChuỗi với email

Tên
Trả lạimảng | $ this
Sự miêu tảNó chỉ định từ địa chỉ email nào; email sẽ được gửi
Cú phápTo (string | array | null $ email null, string | null $ name null)
Thông sốChuỗi với email

Tên
Trả lạimảng | $ this
Sự miêu tảNó chỉ định ai gửi email đến
Cú phápGửi (string | array | null $ content null)
Thông sốChuỗi có tin nhắn hoặc mảng có tin nhắn.
Trả lạimảng
Sự miêu tảGửi email bằng cách sử dụng nội dung, mẫu và bố cục được chỉ định
Cú phápChủ đề (string | null $ subject null)
Thông sốChuỗi chủ đề
Trả lạimảng | $ this
Sự miêu tảLấy / Đặt chủ đề.
Cú phápTệp đính kèm (chuỗi | mảng | null $ tệp đính kèm null)
Thông sốChuỗi với tên tệp hoặc mảng có tên tệp
Trả lạimảng | $ this
Sự miêu tảThêm tệp đính kèm vào thư email
Cú phápBcc (string | array | null $ email null, string | null $ name null)
Thông sốChuỗi với email

Tên
Trả lạimảng | $ this
Sự miêu tảBcc
Cú phápcc (string | array | null $ email null, string | null $ name null)
Thông sốChuỗi với email

Tên
Trả lạimảng | $ this
Sự miêu tảCc

Thí dụ

Thực hiện các thay đổi trong tệp config / routes.php như được hiển thị trong chương trình sau.

config / routes.php
<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('/email',['controller'=>'Emails','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();
Tạo một tập tin EmailsController.php tại src / Controller / EmailsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / EmailsController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Mailer\Email;

   class EmailsController extends AppController{
      public function index(){
         $email = new Email('default');
         $email->to('abc@gmail.com')->subject('About')->send('My message');
      }
   }
?>
Tạo một thư mục Các email tại src / Template và dưới thư mục đó tạo ra một tệp Xem có tên là index.ctp. Sao chép mã sau vào tệp đó.

src / Mẫu / Email / index.ctp

Email Sent.

Trước khi chúng tôi gửi bất kỳ email nào, chúng tôi cần định cấu hình nó. Trong ảnh chụp màn hình bên dưới, bạn có thể thấy rằng có hai phương tiện, mặc định và Gmail.

Chúng tôi đã sử dụng Gmail transport. Bạn cần phải thay thế “GMAIL USERNAME” bằng tên người dùng Gmail của mình và “APP PASSWORD” bằng mật khẩu ứng dụng của bạn. Bạn cần bật xác minh 2 bước trong Gmail và tạo mật khẩu APP mới để gửi email.

config / app.php
Phần mềm lập trình PHP chuyên nghiệp
Phần mềm lập trình PHP chuyên nghiệp
Thực hiện ví dụ trên bằng cách truy cập URL sau: http: // localhost: 85 / PHP / email

Đầu ra

Khi thực hiện, bạn sẽ nhận được kết quả sau.

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...