2010-09-23 19 views
5

Hãy xem liệu tôi có làm cho bản thân mình rõ ràng không. Tôi có một tập hợp các tập lệnh cũ chạy tốt trên PHP4 và tốt hơn không ảnh hưởng đến em. Tôi phải tích hợp một chức năng mới được thực hiện trên PHP5, tôi chỉ cần gọi một tập lệnh trên ứng dụng mới từ ứng dụng cũ.PHP gọi một tập lệnh khác nhưng thông qua http (cách ly chúng)

Để không phải chạm vào nội dung cũ, tôi nghĩ bằng cách nào đó "thân nhân từ xa" gọi trình mới, chỉ cần chuyển dữ liệu $ _REQUEST []. Tôi không thể bao gồm nó vì điều đó sẽ yêu cầu di chuyển sang phiên bản PHP khác (và một số xung đột tên). Tôi không cần bất kỳ đầu ra từ cái mới.

Điều gì sẽ là cách sạch hơn để "gọi" tập lệnh truyền tham số, fopen ("http://theserver.com/thescript.php" ....) và sau đó chuyển tất cả các tiêu đề cần thiết để chuyển các tham số? hoặc có một chút trực tiếp hơn?

Cảm ơn!

Trả lời

3

Nếu bạn cần chuyển dữ liệu POST, bạn có thể sử dụng cURL; nếu không, bạn chỉ có thể làm file_get_contents('http://example.com/yourscript.php?param1=x&param2=y&param3=...');HTTP wrapper sẽ thực hiện yêu cầu cho bạn (cách đơn giản nhất).

+0

Tuyệt vời, thực sự đơn giản. Tôi sẽ phải suy nghĩ về các vấn đề an ninh có thể xảy ra nhưng tôi đoán nó trong trường hợp cụ thể này sẽ không quá phức tạp. cảm ơn! – Joan

3

Bạn sẽ cho mình những cơn ác mộng với điều này.

Nhưng nếu bạn thực sự cần làm điều đó, bạn sẽ không thể dựa vào fopen. Tôi khuyên bạn nên sử dụng cURL, như Piskvor gợi ý. Tuy nhiên, hãy chắc chắn rằng bạn đang xác thực và thoát khỏi bất kỳ dữ liệu nào bạn đang đẩy một cách chính xác hoặc bạn đang ở trong một thế giới bị tổn thương - thực tế là bạn đang thực hiện yêu cầu cURL cho một phần khác của hệ thống có nghĩa là theo lý thuyết, bất kỳ ai khác cũng có thể làm chính xác điều tương tự.

Đây chắc chắn không phải là giải pháp lâu dài, tôi khuyên bạn nên viết lại phần cũ là ưu tiên.

+0

Bạn đúng với mối quan tâm về bảo mật ... Tôi nghĩ tôi sẽ làm những gì Piskvor đề nghị chuyển yêu cầu làm tham số nhưng trước tiên tôi sẽ nghiên cứu các vấn đề bảo mật có thể xảy ra. Cảm ơn! – Joan

0

Sau khi xem xét những gì bạn đã đề xuất về câu trả lời trước và cân nhắc an toàn, tôi nghĩ gì đó: Nếu cả hai tập lệnh đều nằm trên cùng một máy chủ, "được gọi" phải ở trên cùng một IP so với người gọi. . Đó có phải là một ý tưởng tốt?

Các vấn đề liên quan