Hướng dẫn how do i fix undefined variables in php? - làm cách nào để sửa các biến không xác định trong php?

PHP là một ngôn ngữ lập trình mạnh mẽ được sử dụng bởi nhiều trang web trên thế giới. Tuy nhiên, đôi khi PHP có thể ném một thông báo lỗi nói rằng Thông báo: Biến không xác định trên trang web của bạn. Điều này có thể gây nhầm lẫn cho khách truy cập trang web của bạn và làm hỏng trải nghiệm người dùng của họ. Trong bài viết này, chúng tôi sẽ xem xét thông báo lỗi này có nghĩa là gì và cách khắc phục thông báo lỗi này.

Khi bạn nhận được một thông báo lỗi, thông báo thông báo: biến không xác định, trong PHP, điều đó có nghĩa là bạn đang cố gắng sử dụng một biến hoặc hằng số không được xác định.

Đây là một ví dụ về lỗi này

Trong ví dụ trên, chúng tôi đã xác định biến $ DOB nhưng đang gọi $ biến tuổi không được xác định. Vì vậy, bạn sẽ thấy lỗi sau.

Notice: Undefined variable: age in \test.php on line 3

Có hai cách để khắc phục lỗi này. Hoặc bạn có thể giải quyết lỗi này hoặc bỏ qua lỗi này.

Cũng đọc: Cách chạy tập lệnh PHP tự động

Khắc phục lỗi bằng cách sử dụng hàm isset ()

Bạn có thể sử dụng Xác định các biến của mình làm chức năng toàn cầu và sử dụng ISSET () để kiểm tra xem biến có được đặt hay không trước khi gọi nó. Đây là một ví dụ

Output
Variable age is not set

Cũng đọc: Cách tắt Duyệt thư mục trong Apache

Khắc phục lỗi bằng cách đặt biến thành giá trị trống hoặc giá trị mặc định

Một cách khác để khắc phục vấn đề này, là đặt nó là trống.


Output
Age: 0

Cũng đọc: Cách ngăn chặn tải xuống tệp trực tiếp trong Apache

Chúng tôi cũng có thể bỏ qua thông báo này thay vì sửa chữa nó, mặc dù không nên làm như vậy. Dưới đây là một vài cách để vô hiệu hóa thông báo lỗi này xuất hiện.

Tắt thông báo hiển thị trong tệp php.ini

Mở tệp php.ini trong trình soạn thảo văn bản. Tìm dòng sau

error_reporting = E_ALL

Thay đổi nó thành

error_reporting = E_ALL & ~E_NOTICE

Khởi động lại máy chủ Apache để áp dụng các thay đổi. Bây giờ trình biên dịch PHP sẽ hiển thị tất cả các lỗi ngoại trừ ‘thông báo loại lỗi.

Cũng đọc: Cách kiểm tra xem mod_deflate có được bật không

Tắt thông báo hiển thị trong mã PHP

Nếu bạn không có quyền truy cập vào tệp php.ini, thì chỉ cần thêm dòng sau ở đầu tệp PHP của bạn để vô hiệu hóa các lỗi thông báo.

Đó là nó. Trong bài viết này, chúng tôi đã học được cách đối phó với lỗi biến không xác định trong PHP. Sử dụng các biến mà không xác định giá trị của chúng gây ra lỗi này và có thể dễ dàng tránh được bằng cách sử dụng hàm isset () để kiểm tra xem chúng có được đặt hay không, trước khi sử dụng chúng.

Cũng đọc: Cách giới hạn các yêu cầu trên mỗi IP trong Apache

Bài viết liên quan:

Tại sao chuyện này đang xảy ra?

Theo thời gian, PHP đã trở thành một ngôn ngữ tập trung vào bảo mật hơn. Các cài đặt đã từng bị tắt theo mặc định hiện được bật theo mặc định. Một ví dụ hoàn hảo về điều này là

Notice: Undefined variable: age in \test.php on line 3
1, được bật theo mặc định kể từ Php 5.4.0.

Hơn nữa, theo tài liệu PHP, theo mặc định,

Notice: Undefined variable: age in \test.php on line 3
2 bị vô hiệu hóa trong tệp php.ini. Tài liệu PHP khuyên bạn nên bật nó cho mục đích gỡ lỗi. Tuy nhiên, khi tôi tải xuống PHP từ kho lưu trữ Ubuntu và từ Windows Stack của Bitnami, tôi sẽ thấy một cái gì đó khác.

; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Lưu ý rằng

Notice: Undefined variable: age in \test.php on line 3
3 thực sự được đặt thành giá trị sản xuất theo mặc định, không phải là giá trị "mặc định" theo mặc định. Điều này có phần khó hiểu và không được ghi nhận bên ngoài php.ini, vì vậy tôi đã không xác nhận điều này trên các phân phối khác.not validated this on other distributions.

Tuy nhiên, để trả lời câu hỏi của bạn, lỗi này xuất hiện ngay bây giờ khi nó không bật lên trước đây vì:

  1. Bạn đã cài đặt PHP và cài đặt mặc định mới có phần được ghi lại kém nhưng không loại trừ

    Notice: Undefined variable: age in \test.php on line 3
    2.

  2. Notice: Undefined variable: age in \test.php on line 3
    2 Các cảnh báo như các biến không xác định và các chỉ mục không xác định thực sự giúp làm cho mã của bạn sạch hơn và an toàn hơn. Tôi có thể nói với bạn rằng, nhiều năm trước, việc giữ
    Notice: Undefined variable: age in \test.php on line 3
    2 đã buộc tôi phải khai báo các biến của tôi. Nó làm cho nó dễ dàng hơn rất nhiều để học C. Trong C, không tuyên bố các biến lớn hơn nhiều so với phiền toái.

Tôi có thể làm gì với nó?

  1. Tắt

    Notice: Undefined variable: age in \test.php on line 3
    2 bằng cách sao chép "giá trị mặc định"
    Notice: Undefined variable: age in \test.php on line 3
    8 và thay thế nó bằng những gì hiện không được đưa ra sau khi ký bằng trong
    Notice: Undefined variable: age in \test.php on line 3
    9. Khởi động lại Apache hoặc PHP nếu sử dụng CGI hoặc FPM. Hãy chắc chắn rằng bạn đang chỉnh sửa tệp Php.ini "RIGHT". Chính xác sẽ là Apache nếu bạn đang chạy PHP với Apache, FPM hoặc PHP-FPM nếu chạy PHP-FPM, CGI nếu chạy PHP-CGI, v.v. Đây không phải là phương thức được đề xuất, nhưng nếu bạn có mã di sản sẽ cực kỳ khó chỉnh sửa, sau đó nó có thể là đặt cược tốt nhất của bạn.

  2. Tắt

    Notice: Undefined variable: age in \test.php on line 3
    2 trên cấp tệp hoặc cấp thư mục. Điều này có thể thích hợp hơn nếu bạn có một số mã di sản nhưng muốn làm mọi thứ theo cách "đúng". Để làm điều này, bạn nên tham khảo Apache & NBSP; 2, Nginx hoặc bất cứ máy chủ nào bạn chọn. Trong Apache, bạn sẽ sử dụng
    Output
    Variable age is not set
    
    1 bên trong
    Output
    Variable age is not set
    
    2.

  3. Viết lại mã của bạn để được sạch hơn. Nếu bạn cần làm điều này trong khi chuyển sang môi trường sản xuất hoặc không muốn ai đó nhìn thấy lỗi của bạn, hãy đảm bảo rằng bạn đang vô hiệu hóa bất kỳ màn hình nào và chỉ đăng nhập lỗi của bạn (xem

    Output
    Variable age is not set
    
    3 và
    Output
    Variable age is not set
    
    4 trong Php.ini và máy chủ của bạn cài đặt).logging your errors (see
    Output
    Variable age is not set
    
    3 and
    Output
    Variable age is not set
    
    4 in php.ini and your server settings).

Để mở rộng trên tùy chọn 3: Đây là lý tưởng. Nếu bạn có thể đi theo con đường này, bạn nên. Nếu bạn không đi theo tuyến đường này ban đầu, hãy xem xét việc di chuyển tuyến đường này cuối cùng bằng cách kiểm tra mã của bạn trong môi trường phát triển. Trong khi bạn đang ở đó, hãy loại bỏ

Output
Variable age is not set
5 và
Output
Variable age is not set
6 để xem những gì có thể xảy ra trong tương lai. Bạn sẽ thấy rất nhiều lỗi lạ, nhưng nó sẽ ngăn bạn gặp bất kỳ vấn đề khó chịu nào khi bạn cần nâng cấp PHP trong tương lai.

Các lỗi có nghĩa là gì?

Output
Variable age is not set
7 - ​​Điều này xảy ra khi một biến chưa được xác định trước khi sử dụng. Khi tập lệnh PHP được thực thi, nó bên trong chỉ giả định giá trị null. Tuy nhiên, bạn cần kiểm tra một biến trong kịch bản nào trước khi được xác định? Cuối cùng, đây là một đối số cho "mã cẩu thả". Là một nhà phát triển, tôi có thể nói với bạn rằng tôi yêu nó khi tôi thấy một dự án nguồn mở trong đó các biến được xác định là cao trong phạm vi của chúng như chúng có thể được xác định. Nó giúp cho việc biết các biến nào sẽ xuất hiện trong tương lai dễ dàng hơn và giúp đọc/tìm hiểu mã dễ dàng hơn.

function foo()
{
    $my_variable_name = '';

    //....

    if ($my_variable_name) {
        // perform some logic
    }
}

Output
Variable age is not set
8 - Điều này xảy ra khi bạn cố gắng truy cập một giá trị trong một mảng và nó không tồn tại. Để ngăn ngừa lỗi này, hãy thực hiện kiểm tra có điều kiện.

// verbose way - generally better
if (isset($my_array['my_index'])) {
    echo "My index value is: " . $my_array['my_index'];
}

// non-verbose ternary example - I use this sometimes for small rules.
$my_index_val = isset($my_array['my_index'])?$my_array['my_index']:'(undefined)';
echo "My index value is: " . $my_index_val;

Một tùy chọn khác là khai báo một mảng trống ở đầu chức năng của bạn. Không phải lúc nào cũng khả thi.

Notice: Undefined variable: age in \test.php on line 3
0

(Mẹo bổ sung)

  • Khi tôi gặp phải những vấn đề này và các vấn đề khác, tôi đã sử dụng Netbeans IDE (miễn phí) và nó đã cho tôi một loạt các cảnh báo và thông báo. Một số trong số họ cung cấp những lời khuyên rất hữu ích. Đây không phải là một yêu cầu và tôi không sử dụng IDE nữa ngoại trừ các dự án lớn. Ngày nay, tôi là một người
    Output
    Variable age is not set
    
    9.

Tại sao tôi nhận được các biến không xác định PHP?

Biến không xác định: Không tìm thấy định nghĩa của biến trong các tệp dự án, được cấu hình bao gồm các đường dẫn hoặc trong số các biến được xác định trước PHP. Biến có thể chưa được xác định: có một hoặc nhiều đường dẫn để tiếp cận dòng với việc sử dụng biến mà không cần xác định nó.the variable's definition is not found in the project files, configured include paths, or among the PHP predefined variables. Variable might have not been defined: there are one or more paths to reach the line with the variable usage without defining it.

Làm thế nào bạn có thể xác định chính xác một biến trong PHP?

Quy tắc cho các biến PHP:..
Một biến bắt đầu với dấu $, theo sau là tên của biến ..
Một tên biến phải bắt đầu bằng một chữ cái hoặc ký tự dấu gạch dưới ..
Một tên biến không thể bắt đầu với một số ..
Một tên biến chỉ có thể chứa các ký tự alpha-numeric và nhấn mạnh (A-Z, 0-9 và _).

Lỗi không xác định trong PHP là gì?

Lỗi này có nghĩa là trong mã của bạn, có một biến hoặc không đổi không có giá trị được gán cho nó.Nhưng bạn có thể đang cố gắng sử dụng các giá trị thu được thông qua biểu mẫu người dùng trong mã PHP của bạn.Có thể tránh lỗi bằng cách sử dụng hàm isset ().within your code, there is a variable or constant that has no value assigned to it. But you may be trying to use the values obtained through the user form in your PHP code. The error can be avoided by using the isset() function.

Làm thế nào kiểm tra biến được xác định trong PHP?

Để kiểm tra xem một biến không được xác định, bạn có thể sử dụng các toán tử so sánh - toán tử bình đẳng == hoặc toán tử bình đẳng nghiêm ngặt ===.Nếu bạn khai báo một biến nhưng không gán một giá trị, nó sẽ tự động trả về không xác định.Do đó, nếu bạn cố gắng hiển thị giá trị của biến đó, từ "không xác định" sẽ được hiển thị.use comparison operators — the equality operator == or strict equality operator === . If you declare a variable but not assign a value, it will return undefined automatically. Thus, if you try to display the value of such variable, the word "undefined" will be displayed.