Hướng dẫn dùng pass by trong PHP

Tạo chức năng đổi pass trong php để giúp user đổi mật khẩu khi có nhu cầu. Chức năng này bắt buộc user phải đăng nhập để đổi mật khẩu, chúng ta sẽ hỏi mật khẩu cũ, mật khẩu mới. Nếu phù hợp thì sẽ cập nhật vào bảng users.

Thực hiện theo gợi ý sau:

1. Tạo view đổi mật khẩu

Tạo file views/doipass.php, trong đó tạo form như sau:

a. Thuộc tính method của form là post và thuộc tính action dẫn đến chức năng xulydoipass

b. Form có 3 textfield để nhập pass_old, pass_new1, pass_new2 và 1 nút submit

ĐỔI MẬT KHẨU

Email:

Mật khẩu cũ

Mật khẩu mới:

Gõ lại mật khẩu mới:

Đổi mật khẩu

2. Tạo action đổi mật khẩu

– Kiểm tra người dùng đăng nhập chưa, nếu chưa thì chuyển hướng sang action dangnhap , ngược lại thì nạp view doipass.php

3. Tạo action xử lý đổi mật khẩu

– Tạo action xulydoipass :

case "xulydoipass" : $this->xulydoipass[]; break;

– Trong view doipass.php, gán thuộc tính action của form, trỏ vào action xulydoipass vừa tạo [nếu gán rồi thì thôi]

– Code trong hàm xulydoipass theo gợi ý sau:

a. Tiếp nhận pass_old, pass_new1, pass_new2, và username/email: $pass_old= $_POST[‘pass_old’]; …

b. Kiểm tra giá trị trong $pass_new1 và $pass_new2 không giống thì báo lỗi

b. Kiểm tra giá trị trong $pass_new1 quá ngắn thì báo lỗi

b. Kiểm tra nếu $pass_new1 quá đơn giản thì báo lỗi

c. Kiểm tra nếu $pass_old không đúng thì báo lỗi

e. Cập nhật mật khẩu mới vào bảng users mật khẩu  [có thể mã hóa nếu cần]

f. Chuyển hướng đến trang khác [thông báo, trang chủ…]

Tạo chức năng đổi mật khẩu là việc bắt buộc phải thực hiện trong chuỗi các chức năng liên quan đến tài khoản của người dùng như đăng ký, đăng nhập…. Khi thực hiện chức năng này, user phải đăng nhập thì mới cho đổi pass, do đó đầu action này bạn phảii kiểm tra user đã đăng nhập chưa nhé.

Mặc định, biến trong PHP khi được truyền vào như tham số của hàm thì sẽ được truyền theo giá trị [pass by value]. Khi mà biến được truyền vào như vậy, tham số sẽ chỉ có hiệu lực ở trong hàm đó, mọi thay đổi tham số đó trong hàm không hề ảnh hưởng đến giá trị của biến gốc [biến ta dùng để truyền vào].

Ví dụ:

Code language: HTML, XML [xml]

Output:

Bien cuc bo Bien toan cuc

Pass by reference [truyền địa chỉ]: Khi biến được truyền bằng cách này, ta sẽ cần dùng thêm dấu & trước tên biến, ví dụ: function[&$x]. Và khi dùng cách này, bản chất ta chỉ báo cho chương trình rằng đây là địa chỉ của biến ta truyền vào. Khi ta thay đổi giá trị biến ở trong hàm thì thực ra ta đang thay đổi giá trị của biến ta truyền vào. Điều này cũng có thể thực hiện theo hướng ngược lại: thay đổi giá trị của biến truyền vào thì biến trong hàm cũng sẽ được thay đổi.

Ví dụ:

Code language: PHP [php]

Output:

Bien cuc bo [chu y no nhe] Bien cuc bo [chu y no nhe]

Như thấy ở ví dụ trên, biến $string bị thay đổi trong hàm cũng làm thay đổi luôn biến $string ta truyền vào.

Tham khảo thêm:

//www.php.net/manual/en/language.references.pass.php

Chủ Đề