ScriptCase 在Local 開發時,所跑出來的結果,經常會與上傳上去跑的結果不同。
經常是因為 Cache 的關係。此時,需要同時將所有的 Cache 都清除掉,然後再測試一次。
如果是因為 Cache 關係的,就會好了。
如果萬一還不行,那就有可能是 SC 的 Bug!
SC的BUG還是很多的!害我都還不大敢將這個系統應用在實際開發案子方面,都還在實驗性質!
本網誌記錄網站設計的一些內容筆記。 網站設計需要整合很多工具與概念。 我畢業自淡江電子計算機科學學系,算是科班出身。但我們那個年代(50年代,唉!LKK了!),網路還只是剛開始,相關的技術都是出社會以後陸續接觸學習。 網站的建立與設計,牽涉的範圍真的很廣泛。 網站的目地是甚麼?銷售網頁、電子購物、廣告、社群經營、互動、教學、客戶服務、網站應用程式、...... 需要整合的人才,程式設計師、資料庫管理師、網頁美編、文字編輯、多媒體製作等等。 這裡將記錄一個LKK對網站系統重新學習與複習,還有教學使用的一些資料。
2020年6月14日 星期日
2020年6月12日 星期五
php "@"意思
在函數的前面加了"@",這是抑制錯誤訊息顯示在螢幕上的意思。
不影響函數的執行,只是如果有錯誤訊息,不顯示出來!
據說最好不要用,因為錯誤你不知道,是否再導致其他錯誤,最後怎樣,很難掌控!
據網路上網友看到的建議,是盡量不要用!
不影響函數的執行,只是如果有錯誤訊息,不顯示出來!
據說最好不要用,因為錯誤你不知道,是否再導致其他錯誤,最後怎樣,很難掌控!
據網路上網友看到的建議,是盡量不要用!
2020年6月3日 星期三
curl 紀錄
Example #1 Initializing a new cURL session and fetching a web page
開始一個新的 cURL 連線,然後抓回來一整個網頁。結果就是顯示出那個網頁的完整內容了。抓回來的就是 html 內容,在瀏覽器上,就顯示出html網頁內容了。
<?php// create a new cURL resource$ch = curl_init();
// set URL and other appropriate optionscurl_setopt($ch, CURLOPT_URL, "http://www.example.com/");curl_setopt($ch, CURLOPT_HEADER, false); // 這意思是不抓 header
// grab URL and pass it to the browsercurl_exec($ch);
// close cURL resource, and free up system resourcescurl_close($ch);?>
2020年6月2日 星期二
PHP 接收 post 的 json 資料
讓 PHP 接收 post 的 json 資料
- 8月 02, 2013
我們在串接API的時候會用到 CURL 函式 POST 資料給 JSON 接收,雖然我們是使用 POST 傳出資料。但是我們在接收的 SERVER 端使用 $_POST 卻抓不到任何資料。
原來 PHP 默認只支援 application/x-www.form-urlencoded 來把資料塞入到 $_POST 所以即便你用 POST 傳值過來,也不能用 $_POST 來取值。
這時候我們就要用 $GLOBALS['HTTP_RAW_POST_DATA'] 來取得資料了。因為其實SERVER端是有拿到資料的,所以用這個參數就可以拿到"完整"資料。
後記:
後來又出現了一個問題,$GLOBALS['HTTP_RAW_POST_DATA'] 如果要可以正確取得資料,需要去把 php.ini 中的功能打開,這對很多專案中客戶是採用虛擬主機的是一個很大的問題。好險有另一個方式也可以取得原始的 post 資料:
echo $data = file_get_contents("php://input");
--------------------------------------------------------------------------------------
<?php if($_SERVER['REQUEST_METHOD'] == "POST"){ $inputJson = $_POST['inputJson']; if(!empty($inputJson)){ //...... }else{ $json = array("status" => 1, "msg" => "inputJson is empty"); } }else{ $json = array("status" => 1, "msg" => "Request method not accepted"); } header('Content-type: application/json;charset=utf-8'); echo json_encode($json); ?>
-------------------------------
註:以下是我測試成功的案例:
send.php
<?php
/*
* post 傳送JSON 格式資料
* @param $url string URL
* @param $data_string string 請求的具體內容
* @return array
* code 狀態碼
* result 返回結果
*/
function post_json_data($url, $data_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($data_string))
);
ob_start();
curl_exec($ch);
$return_content = ob_get_contents();
ob_end_clean();
$return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
return array('code'=>$return_code, 'result'=>$return_content);
}
$arr = array('a'=>'555','b'=>56454564);
var_dump(post_json_data('https://www.apiserver.com/receive.php', json_encode($arr)));
?>
https://www.apiserver.com/receive.php
<?php
$data = json_decode(file_get_contents('php://input'), true);
$dbhost = 'localhost';
$dbuser = 'xxxx';
$dbpass = 'xxxxxxx';
$dbname = 'xxxxxxx';
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
//mysqli 預設編號為latin-1,建立資料庫已指定utf8編碼,所以要指定連線時所用編碼
$mysqli->query("SET NAMES utf8");
$sql = "INSERT INTO 66shop_request_log(header_text) VALUES (?)";
$stmt = $mysqli->prepare($sql);
//$stmt->bind_param('s',var_dump(json_encode($data)));
$stmt->bind_param('s',$data['a']);
$stmt->execute();
$stmt->close();
$mysqli->close();
echo "hello world!";
?>
- 8月 02, 2013
我們在串接API的時候會用到 CURL 函式 POST 資料給 JSON 接收,雖然我們是使用 POST 傳出資料。但是我們在接收的 SERVER 端使用 $_POST 卻抓不到任何資料。
原來 PHP 默認只支援 application/x-www.form-urlencoded 來把資料塞入到 $_POST 所以即便你用 POST 傳值過來,也不能用 $_POST 來取值。
這時候我們就要用 $GLOBALS['HTTP_RAW_POST_DATA'] 來取得資料了。因為其實SERVER端是有拿到資料的,所以用這個參數就可以拿到"完整"資料。
後記:
後來又出現了一個問題,$GLOBALS['HTTP_RAW_POST_DATA'] 如果要可以正確取得資料,需要去把 php.ini 中的功能打開,這對很多專案中客戶是採用虛擬主機的是一個很大的問題。好險有另一個方式也可以取得原始的 post 資料:
echo $data = file_get_contents("php://input");
---------------------------------------------------------------------------------------------
<?php
header ('Content-Type: text/html; charset=UTF8');
$name = $_POST["name"];
$order_date= $_POST["order_date"];
$price = $_POST["price"];
//建立資料連線
$link=mysql_connect("sql102.000space.com","space_13936932","nate8586");
if(!$link){
echo("Failure");
}
//開啟資料庫
$db_selected=mysql_select_db("space_13936932_breakfast",$link);
if(!$db_selected){
echo("not open space_13901458_breakfast<br>".mysql_error($link));
}
mysql_query("SET NAME 'UTF8'");
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET_CLIENT=utf8');
mysql_query('SET CHARACTER_SET_RESULTS=utf8');
//新增資料
$sql="insert into breakfast(order_date, name, price, status) VALUES ('$order_date', '$name', '$price', '0')";
if (mysql_query($sql,$link)){
echo "Database my_db created";
}else{
echo "Error creating database: " . mysql_error();
}
//釋放查詢結果所佔用的記憶體
mysql_free_result($result);
//關閉資料庫
mysql_close($link);
?>
--------------------------------------------------------------------------------------
<?php if($_SERVER['REQUEST_METHOD'] == "POST"){ $inputJson = $_POST['inputJson']; if(!empty($inputJson)){ //...... }else{ $json = array("status" => 1, "msg" => "inputJson is empty"); } }else{ $json = array("status" => 1, "msg" => "Request method not accepted"); } header('Content-type: application/json;charset=utf-8'); echo json_encode($json); ?>
-------------------------------
註:以下是我測試成功的案例:
send.php
<?php
/*
* post 傳送JSON 格式資料
* @param $url string URL
* @param $data_string string 請求的具體內容
* @return array
* code 狀態碼
* result 返回結果
*/
function post_json_data($url, $data_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($data_string))
);
ob_start();
curl_exec($ch);
$return_content = ob_get_contents();
ob_end_clean();
$return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
return array('code'=>$return_code, 'result'=>$return_content);
}
$arr = array('a'=>'555','b'=>56454564);
var_dump(post_json_data('https://www.apiserver.com/receive.php', json_encode($arr)));
?>
https://www.apiserver.com/receive.php
<?php
$data = json_decode(file_get_contents('php://input'), true);
$dbhost = 'localhost';
$dbuser = 'xxxx';
$dbpass = 'xxxxxxx';
$dbname = 'xxxxxxx';
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
//mysqli 預設編號為latin-1,建立資料庫已指定utf8編碼,所以要指定連線時所用編碼
$mysqli->query("SET NAMES utf8");
$sql = "INSERT INTO 66shop_request_log(header_text) VALUES (?)";
$stmt = $mysqli->prepare($sql);
//$stmt->bind_param('s',var_dump(json_encode($data)));
$stmt->bind_param('s',$data['a']);
$stmt->execute();
$stmt->close();
$mysqli->close();
echo "hello world!";
?>
訂閱:
文章 (Atom)
如何判斷現在FORM是在 insert mode? 還是 update mode?
只要用 if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。
-
讓 PHP 接收 post 的 json 資料 - 8月 02, 2013 我們在串接API的時候會用到 CURL 函式 POST 資料給 JSON 接收,雖然我們是使用 POST 傳出資料。但是我們在接收的 SERVER 端使用 $_POST 卻抓不到任何資料。 原來 ...
-
分享:網站上 http://shuai.be/archives/php-undefined-index/ 平時用 $_GET[ ‘ xx ’ ] 取得參數值時,如果之前不加判斷在未傳進參數時會出現這樣的警告 : PHP Notice: undefined i...
-
Note that it's ultimately the responsibility of the server admin to ensure his system is secure. These are some basic security tips tha...