แนะนำตัว
php:// wrapper เปิดใช้งานการเข้าถึงสตรีม I/O ต่างๆ ซึ่งรวมถึงสตรีมอินพุต เอาต์พุต และข้อผิดพลาดมาตรฐาน ในหน่วยความจำ ดิสก์สำรอง และสตรีมที่กรองแล้ว สามารถเข้าถึงได้ด้วยโปรโตคอล php://
สตรีมมาตรฐาน
php://stdin , php://stdout และ php://stderr อนุญาตให้เข้าถึงโดยตรงไปยังอุปกรณ์สตรีมอินพุตมาตรฐาน สตรีมเอาต์พุตมาตรฐาน และสตรีมข้อผิดพลาดไปยังกระบวนการ PHP ตามลำดับ ค่าคงที่ที่กำหนดไว้ล่วงหน้า STDIN , STDOUT และ STDERR ตามลำดับเป็นตัวแทนของลำธารเหล่านี้
php://input
php://input อนุญาตให้เข้าถึงข้อมูลดิบที่มีอยู่ในเนื้อหาคำขอ HTTP แบบอ่านอย่างเดียว โปรดทราบว่ามีข้อมูลเดียวกันใน $HTTP_POST_RAW-DATA ตัวแปร (ซึ่งตอนนี้เลิกใช้แล้ว) อย่างไรก็ตาม php://input ไม่พร้อมใช้งานสำหรับแอตทริบิวต์ enctype ที่ตั้งค่าเป็น multipart/form-data
php://output
Wrapper นี้แสดงถึงการสตรีมแบบเขียนอย่างเดียว ซึ่งช่วยให้มีกลไกบัฟเฟอร์ คล้ายกับพิมพ์ และ ก้อง แถลงการณ์
php://fd
file descriptor สามารถเข้าถึงได้ผ่าน wrapper นี้ สตรีมมาตรฐาน STDIN, STDOUT และ STDERR ถูกกำหนดให้ file descriptor 1,2 และ 3 สตรีมอื่น ๆ ทั้งหมดถูกกำหนดให้เป็น file descriptor ที่เพิ่มขึ้น ดังนั้น php://fd/5 หมายถึง file descriptor 5
php://memory
นี่คือสตรีมการอ่าน/เขียนที่อนุญาตให้จัดเก็บข้อมูลในหน่วยความจำชั่วคราว php://temp กระดาษห่อหุ้มจะคล้ายกัน อย่างไรก็ตาม ในกรณีหลัง ข้อมูลจะถูกเก็บไว้ในไฟล์ชั่วคราวแทนที่จะเป็นหน่วยความจำ
php://filter
Wrapper นี้อนุญาตให้ใช้ตัวกรองกับสตรีมเมื่อเปิด ตัวกรองมีประโยชน์อย่างยิ่งกับฟังก์ชัน readfile(), file_get_contents() และ file()
ตัวอย่าง
ในตัวอย่างต่อไปนี้ อินพุตคอนโซลจะอ่านจาก php://stdin และแสดงผลด้วย php://stdout
<?php $file=fopen("php://stdin","r"); $x=fread($file,10); echo $x; $out=fopen("php://stdout","w"); fwrite($out, $x); fclose($file); ?>
php://input stream wrapper อนุญาตให้ดึงข้อมูลดิบจากคำขอ HTTP ในตัวอย่างต่อไปนี้ แบบฟอร์ม HTML จะโพสต์ข้อมูลไปยังสคริปต์ PHP ด้วยวิธี POST
<html> <body> <form action="testscript.php" method="POST"> <input type="text" name="name"> <input type="text" name="age"> <input type ="submit" value="submit"> </form> </body> </html>
สคริปต์ PHP เพื่อดึงข้อมูล HTTP ดิบมีดังนี้ -
<?php $json = file_get_contents("php://input"); $data = json_decode($json); print_r($json); ?>