10/10/2018, 10:03

Khắc phục hiện tượng thông báo lỗi [Notice: Undefined index] khi post dữ liệu như thế nào?

Chào các bạn.

Hiện tượng này xảy ra khi mình chạy script trên share-hosting. Ở localhost chạy không có hiện tượng gì.

Demo ở đây:
http://www.ungdungweb.net/tool/link/link.php

Khi post một lượng text nhỏ (ví dụ: nội dung chứa trong http://coder.com.vn/ddth/dulieunho.txt) thì $_POST['content'] nhận bình thường, có giá trị và script chạy bình thường.

Khi post lượng text lớn hơn (ví dụ lặp lại nội dung của file trên khoảng 5-8 lần http://coder.com.vn/ddth/dulieulonhon.txt) thì xảy ra hiện tượng:
Code:
Notice: Undefined index: content in /home/****/public_html/tool/link/link.php on line 50
Code dòng 50 là
PHP Code:
$content $_POST***91;'content'***93;; 


PHP INFO: http://ungdungweb.net/phpinfo.php

Xin cho giải pháp?
amida viết 12:06 ngày 10/10/2018
Có bao giờ nội dung lớn quá gây lỗi không nhỉ
Bác thử đặt 1 cái if trước đoạn code line 50 và thử cho 1 output content xem.
TheHeTre viết 12:14 ngày 10/10/2018
@amida: Undefined ... nên biến $_POST['content'] là !isset.

Có một bài viết (để tham khảo) về lỗi empty ở http://donamkhanh.com/2008/09/11/php...ize-issue.html

Mình có gửi comment:
Trong trường hợp của Khánh liên quan đến upload_max_size chứ không phải post_max_size (mặc dù 2 thằng này có cùng một kiểu lỗi).

Mình gặp trường hợp tương tự, nhưng củ chuối hơn (vì đoạn text post lên không thể lớn hơn 8MB được).
http://www.ddth.com/showthread.php?t=247797
Nhưng không được nên copy luôn qua đây vậy.
jiSh@n viết 12:10 ngày 10/10/2018
Data vượt quá mức upload_max_size/post_max_size thì cái $_POST nó trống rỗng luôn á Khi đó $_SERVER['REQUEST_METHOD'] vẫn là 'POST' nhưng cái $_POST chả có gì cả.
TheHeTre viết 12:12 ngày 10/10/2018
Một tý text trong file này http://coder.com.vn/ddth/dulieulonhon.txt có thể làm post data vượt quá 8MB sao? Hơi thắc mắc chỗ này mà không biết đo ra sao!
namhoang viết 12:15 ngày 10/10/2018
Cái này mới gần đây tôi cũng hay gặp. Lúc thì bị lúc thì không. Thông thường tôi encode và decode thì ổn định hơn!

Thấy được thì cứ thử!
TheHeTre viết 12:14 ngày 10/10/2018
Biến $_POST không nhận cho nên không biết encode-decode chỗ nào. Trường hợp này không dùng ini_set('post_max_size') dược để kiểm tra
namhoang viết 12:06 ngày 10/10/2018
Bạn dùng urlencode ở nơi gửi đi thì biến post sẽ được khai báo. Thêm nữa kiểm tra xem có xác lập global cho $_POST không? Vì nếu đã bật global register On rồi thì không cần nhưng gần đây chẳng hiểu vì sao lại cần. Mình chưa hiểu chỉ biết là có hàm được có hàm không. Nằm trên cùng một máy chủ nhưng code cũ thì không bị code viết mới lại bị. Không biết là mình điên hay máy chủ điên, cứ khắc phục tạm đã rồi hiểu sau.
BossFTP viết 12:13 ngày 10/10/2018
Được gửi bởi TheHeTre
Một tý text trong file này http://coder.com.vn/ddth/dulieulonhon.txt có thể làm post data vượt quá 8MB sao? Hơi thắc mắc chỗ này mà không biết đo ra sao!
Host của bác đã dc cài Suhosin:
suhosin.post.max_value_length 65000 65000
=> post data maximum là 65kB
Em bị cái này roài -> ko có cách nào đâu

(cái file text của bác là 64kB+ -> thêm tí nữa là khỏi post luôn
TheHeTre viết 12:10 ngày 10/10/2018
Chuẩn.

Đã biết chính xác nguyên nhân. Cảm ơn @BossFTP nhiều lắm

--
http://www.ungdungweb.net/iniset.php
PHP Code:
<?php
    
if(!ini_set('suhosin.post.max_value_length'180000))
    {
        echo 
'Not set';
    }
    else
    {
        echo 
ini_get('suhosin.post.max_value_length');
    }
?>
Thua cái host này rồi.
Bài liên quan
0