哎,又是亂碼問題,我不多說,直接上代碼
成都創新互聯公司-專業網站定制、快速模板網站建設、高性價比施秉網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式施秉網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋施秉地區。費用合理售后完善,十載實體公司更值得信賴。
if(!preg_match('/^.*$/u',?$_REQUEST['word'])){
$username=iconv('GB2312',?'UTF-8',?$_REQUEST['word']);
}
上面的代碼就是判斷傳來的是數據類型是不是UTF-8編碼,如果不是就轉成轉UTF-8編碼,當然只支持GB2313的,如果傳遞過來的編碼是big5的話也還是出現亂碼,但是一般瀏覽器中人用的大部默認是GB2312或是UTF8的,先用著再說
代碼:
1、form name="form1" method="post" action="2.php"
method的意思是以post方式提交到2.php,action的意思是動作,method是類型
隨便輸一個:
label
input?type="text"?name="val"?/
input是html的標簽,類型是文本域(輸入文字),名字是val(后臺用于接收的名稱)
/label
p
label
input?type="submit"?name="Submit"?value="提交"?/
/label
/p
/form
2、php(第二個頁面)
?php
echo $_POST['val'];
//輸出上一個頁面提交過來的val文本域的值。
?
方法1、最常見的方法是:$_POST['fieldname'];
說明:只能接收Content-Type: application/x-www-form-urlencoded提交的數據
解釋:也就是表單POST過來的數據
方法2、file_get_contents(“php://input”);
說明:
允許讀取 POST 的原始數據。
和 $HTTP_RAW_POST_DATA 比起來,它給內存帶來的壓力較小,并且不需要任何特殊的 php.ini 設置。
php://input 不能用于 enctype=”multipart/form-data”。
解釋:
對于未指定 Content-Type 的POST數據,則可以使用file_get_contents(“php://input”);來獲取原始數據。
事實上,用PHP接收POST的任何數據都可以使用本方法。而不用考慮Content-Type,包括二進制文件流也可以。
所以用方法二是最保險的方法。
方法3、$GLOBALS['HTTP_RAW_POST_DATA'];
說明:
總是產生 $HTTP_RAW_POST_DATA 變量包含有原始的 POST 數據。
此變量僅在碰到未識別 MIME 類型的數據時產生。
$HTTP_RAW_POST_DATA 對于 enctype=”multipart/form-data” 表單數據不可用
如果post過來的數據不是PHP能夠識別的,可以用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,
比如 text/xml 或者 soap 等等
解釋:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST過來的原始數據。
$_POST或$_REQUEST存放的是 PHP以key=value的形式格式化以后的數據。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST過來的數據取決于centent-Type的設置,即POST數據時 必須顯式示指明Content-Type: application/x-www-form-urlencoded,POST的數據才會存放到 $GLOBALS['HTTP_RAW_POST_DATA']中。
1、功能:獲得查詢的指定參數的值。
2、語法:COleVariat GetParamValue(LPCTSTR lpszName); COleVariat GetParamValue(int nIndex)
3、參數:lpszName 參數值的名字,用于按名字查找。nIndex 查詢定義的參數收集中期望參數的基于零的索引。
4、返回值:包含這個參數值的類COleVariat的一個對象。說明:調用這個成員函數,可以獲取查詢定義參數集合中存儲的指定參數的當前值,可以用名字或者它在集合中的序號位置訪問這個參數。
5、示例:/************************************************************
演示函數原型:varParamValue=querydef. GetParamValue(“[FIELD]”);
程序功能說明:獲得指定的請求定義對象記錄的參數。
***********************************************************/
//定義CDaoDatabase對象的指針m_daodb
CDaoDatabase*m_daodb;
//定義查詢對象
CDaoQueryDef querydef(m_daodb);
//獲得查詢的指定參數的值
COleVariat varparamvalue=query.GetParamValue(“[FieldID]”);
PHP接收JSON格式的數據
在API服務中,目前流行采用json形式來交互。
給前端調用的接口輸出Json數據,這個比較簡單,只需要組織好數據,用json_encode($array) 轉化一下,前端就得到json格式的數據。
接收前端提交的json數據稍微復雜一點,原因是:PHP默認識別的數據類型是application/x-標準的數據類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容無法解析,如果用$_POST數組來接收就會失??!
此時可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 來獲取提交的數據
查看手冊,可以發現$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的區別:
$_POST:通過 HTTP POST 方法傳遞的變量組成的數組,是自動全局變量。
$GLOBALS['HTTP_RAW_POST_DATA'] :總是產生 $HTTP_RAW_POST_DATA 變量包含有原始的 POST 數據。此變量僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA 對于 enctype="multipart/form-data" 表單數據不可用。也就是說基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一樣的。但是如果post過來的數據不是PHP能夠識別的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,比如 text/xml 或者 soap 等等。
?php
$str='{"sign":true,"message":"實時接口","data":[{"title":"北京快3","name":"bjk3","expect":"145130","opencode":"4,5,6","opentime":"2019-11-21 20:22:45","source":"sourcecode":""}]}';
$json=json_decode($str,false);
echo $json['data'][0]['expect'];
echo $json['data'][0]['opencode'];
echo $json['data'][0]['opentime'];
?