کلمه عبور
گاها نیاز هست تا اطلاعاتی مانند کلمات عبور به نحوی غیر قابل بازیابی در پایگاه داده ذخیره شوند تا زیان حاصل در زمانی که پایگاه داده در دسترس اشخاص مخرب قرار گرفته، در کمترین حد ممکن باشد . به همین منظور میتوانید از کلاس packages/base/utility/password
استفاده کنید . این کلاس دو متد ایستا static
که یکی برای تبدیل کلمه عبور به رشته ی کد شده و دیگری برای برای مقایسه و تایید کلمه عبور واردی از طرف کاربر و رشته قبلا کد شده استفاده میشود . برای تبدیل کلمه عبور به رشته ی کد شده، از الگریتم های پیشرفته رمزنگاری استفاده شده است و همین باعث شده تا رشته ی کد گذاری شده غیر قابل بازیابی و ناخوانا باشد .
تبدیل کلمه عبور به رشته کد شده
این تابع در پارامتر خود یک کلمه عبور از جنس رشته دریافت و خروجی آن یک رشته کد شده می باشد .
password::hash(string);
مثال
<?php
namespace packages\packagename\controllers;
use packages\base\{controller, response, inputValidation, views\FormError, utility\password, db\duplicateRecord};
use packages\packagename\user;
class Main extends controller {
public function register(): response {
$response = new response();
$view = view::byName(views\register::class);
$inputRules = array(
"firstname" => array(
"type" => "string",
),
"lastname" => array(
"type" => "string",
"optional" => true,
"empty" => true,
),
"email" => array(
"type" => "email",
),
"cellphone" => array(
"type" => "cellphone",
),
"state" => array(
"values" => array("Tehran", "Esfahan")
),
"accept_terms" => array(
"type" => "bool",
),
"password" => array(),
"password_again" => array()
);
try {
$response->setStatus(false);
$inputs = $this->checkinputs($inputRules);
if ($inputs["password"] != $inputs["password_again"]) {
throw new inputValidation("password_again");
}
if (!$inputs["accept_terms"]) {
throw new inputValidation("accept_terms");
}
$user = new user();
$user->firstname = $inputs["firstname"];
if (isset($inputs["lastname"]) {
$user->lastname = $inputs["lastname"];
}
$user->email = $inputs["email"];
$user->cellphone = $inputs["cellphone"];
$user->password = password::hash($inputs["password"]);
$user->save();
$response->setStatus(true);
$response->Go(base\url("userpanel"));
} catch(inputValidation $error) {
$view->setFormError(FormError::fromException($error));
} catch(duplicateRecord $error) {
$view->setFormError(FormError::fromException($error));
}
$response->setView($view);
return $response;
}
}