Khi tập lệnh PHP của tôi nhận dữ liệu từ yêu cầu AJAX POST, các biến số $_POST
được thoát. Điều thực sự lạ là điều này chỉ xảy ra trên máy chủ sản xuất của tôi (chạy PHP 5.2.12 trên Linux) chứ không phải trên máy chủ cục bộ của tôi (chạy PHP 5.3.1 trên Windows).
Đây là mã AJAX:
var pageRequest = false;
if(window.XMLHttpRequest) pageRequest = new XMLHttpRequest();
else if(window.ActiveXObject) pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
pageRequest.onreadystatechange = function() { }
var q_str = 'data=' + " ' ";
pageRequest.open('POST','unnamed_page.php',true);
pageRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
pageRequest.setRequestHeader("Content-length", q_str.length);
pageRequest.setRequestHeader("Connection", "close");
pageRequest.send(q_str);
Có bất kỳ lý do này đang xảy ra? Và làm thế nào tôi nên sửa lỗi này để nó hoạt động trên cả hai máy chủ?
Edit: Tôi có cài đặt sau cho magic_quotes:
Local Master
magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
Và điều này sẽ không làm hỏng địa phương của tôi Chỉ cần muốn đảm bảo tôi nhận được điều này ... –
@George nếu bạn thực hiện kiểm tra như được mô tả, nó sẽ hoạt động với máy chủ cục bộ của bạn, vì 'get_magic_quotes_gpc()' sẽ trả về false và không có dấu gạch chéo nào bị tước. Hãy thử nó ra, làm một đầu ra thử nghiệm của chức năng.Nhưng điều tốt nhất thực sự là để vô hiệu hóa dấu ngoặc kép ma thuật trên máy linux.Bạn có thể làm một 'phpinfo()', nó sẽ cho bạn biết những gì được kích hoạt và những gì không phải là –
@George đây là biện pháp bảo mật để ngăn chặn việc tiêm SQL bằng cách tự động thoát khỏi dữ liệu có liên quan bằng dấu gạch chéo. trên, và cuối cùng trở thành một mối phiền toái cũng được minh họa bởi trường hợp của bạn. –