Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengesah Mencipta CakePHP

Pengesah Mencipta CakePHP

PHPz
PHPzasal
2024-09-10 17:26:58423semak imbas

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

use Cake\Validation\Validator;
$validator = new Validator();

Mengesahkan Data

Sebaik sahaja, kami telah mencipta validator, kami boleh menggunakan objek validator untuk mengesahkan data. Kod berikut menerangkan cara kami boleh mengesahkan data untuk halaman web log masuk.

$validator->notEmpty('username', 'We need username.')->add(
   'username', 'validFormat', ['rule' => 'email','message' => 'E-mail must be valid']);

$validator->notEmpty('password', 'We need password.');
$errors = $validator->errors($this->request->data());

Menggunakan objek $validator, kami telah terlebih dahulu memanggil kaedah notEmpty(), yang akan memastikan bahawa nama pengguna mestilah tidak kosong. Selepas itu, kami telah merantai kaedah add() untuk menambah satu lagi pengesahan untuk format e-mel yang betul.

Selepas itu kami telah menambah pengesahan untuk medan kata laluan dengan kaedah notEmpty(), yang akan mengesahkan bahawa medan kata laluan mestilah tidak kosong.

Contoh

Buat Perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam program berikut.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('validation',['controller'=>'Valids','action'=>'index']);
   $builder->fallbacks();
});

Buat fail ValidsController.php di src/Controller/ValidsController.php. Salin kod berikut dalam fail pengawal.

src/Controller/ValidsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Validation\Validator;
   class ValidsController extends AppController{
      public function index(){
         $validator = new Validator();
         $validator->notEmpty('username', 'We need username.')->add(
            'username', 'validFormat', ['rule' => 'email','message' => 'E-mail must be valid']);
         $validator->notEmpty('password', 'We need password.');
         $errors = $validator->errors($this->request->getData());
         $this->set('errors',$errors);
      }
   }
?>

Buat direktori Valids di src/Template dan di bawah direktori itu buat fail View bernama index.php. Salin mengikuti kod dalam fail itu.

src/Template/Valids/index.php

<?php
   if($errors) {
      foreach($errors as $error)
      foreach($error as $msg)
      echo '<font color="red">'.$msg.'</font><br>';
   } else {
      echo "No errors.";
   }
   echo $this->Form->create(NULL,array('url'=>'/validation'));
   echo $this->Form->control('username');
   echo $this->Form->control('password');
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>

Laksanakan contoh di atas dengan melawati URL berikut −

http://localhost/cakephp4/validation

Output

Klik pada butang hantar tanpa memasukkan apa-apa. Anda akan menerima output berikut.

Click PHP

Http - Pelanggan

Klien http boleh digunakan untuk membuat permintaan seperti GET, POST, PUT dll.

Untuk bekerja dengan klien http, tambahkan yang berikut −

use Cake\Http\Client;

Mari kami mengusahakan contoh untuk memahami kerja klien HTTP.

Kaedah HTTP GET

Untuk mendapatkan data daripada give http url, anda boleh lakukan seperti berikut −

$response = $http->get('https://jsonplaceholder.typicode.com/users');

Sekiranya, anda perlu lulus beberapa param pertanyaan, ia boleh dihantar seperti berikut −

$response = $http->get('https://jsonplaceholder.typicode.com/users', ["id", 1]);

Untuk mendapatkan respons, anda boleh lakukan seperti berikut −

Untuk data teks biasa

$response->getBody();

Untuk Json

$response->getJson();

Untuk Xml

$response->getXml()

Contoh

Buat Perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam program berikut.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('getData',['controller'=>'Requests','action'=>'index']);
   $builder->fallbacks();
});

Buat fail RequestsController.php di src/Controller/RequestsController.php. Salin kod berikut dalam fail pengawal.

src/Controller/RequestsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Http\Client;
   class RequestsController extends AppController{
      public function index(){
         $http = new Client();
         $response = $http->get('https://jsonplaceholder.typicode.com/users');
         $stream = $response->getJson();
         $this->set('response',$stream);
      }
   }
?>

Buat direktori Permintaan di src/Template dan di bawah direktori itu buat fail View yang dipanggil index.php. Salin mengikuti kod dalam fail itu.

src/Template/Requests/index.php

<h3>All Users from url : https://jsonplaceholder.typicode.com/users</h3>
<?php
   if($response) {
      foreach($response as $res => $val) {
         echo '<font color="gray">Name: '.$val["name"].' Email -'.$val["email"].'</font><br>';
      }
   }
?>

Laksanakan contoh di atas dengan melawati URL berikut −

http://localhost/cakephp4/getData

Output

Klik pada butang hantar tanpa memasukkan apa-apa. Anda akan menerima output berikut.

Users URL

Kaedah HTTP POST

Untuk bekerja dengan pos, anda perlu menghubungi pelanggan $http seperti berikut −

$response = $http->post('yoururl', data);

Mari kita lihat satu contoh yang sama.

Contoh

Buat Perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam program berikut.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('postData',['controller'=>'Requests','action'=>'index']);
   $builder->fallbacks();
});

Buat fail RequestsController.php di src/Controller/RequestsController.php. Salin kod berikut dalam fail pengawal. Abaikan jika sudah dibuat.

src/Controller/RequestsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Http\Client;
   class RequestsController extends AppController{
      public function index(){
         $http = new Client();
         $response = $http->post('https://postman-echo.com/post', [
            'name'=> 'ABC',
            'email' => 'xyz@gmail.com'
         ]);
      }
   }
?>

Buat direktori Permintaan di src/Template dan di bawah direktori itu cipta fail View yang dipanggil index.php. Salin kod berikut dalam fail itu.

src/Template/Requests/index.php

<h3>Testing Post Method</h3>

Laksanakan contoh di atas dengan melawati URL berikut −

http://localhost/cakephp4/postData

Output

Diberikan di bawah ialah output kod −

Post Method

Begitu juga, anda boleh mencuba untuk kaedah PUT.

$http = new Client();
$response = $http->put('https://postman-echo.com/post', [
   'name'=> 'ABC',
   'email' => 'xyz@gmail.com'
]);

Atas ialah kandungan terperinci Pengesah Mencipta CakePHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Keselamatan CakePHPArtikel seterusnya:Keselamatan CakePHP