[PHP] Debian 安裝 Composer

先安裝 php-cli ( PHP command line )

 sudo apt install php-cli

下載 Composer 安裝檔

 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

驗證下載檔,https://composer.github.io/pubkeys.html 中取得 驗證碼,並帶入指令中,如果回覆Installer verified代表下載檔可以正常安裝

 php -r "if (hash_file('sha384', 'composer-setup.php') === '驗證碼') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

安裝 composer

php composer-setup.php

移除安裝檔

 php -r "unlink('composer-setup.php');"

將執行檔搬移到執行檔目錄

 sudo mv composer.phar /usr/local/bin/composer

安裝完成囉

#composer -V

Composer version 2.3.5 2022-04-13 16:43:00

PHP 載入圖檔

可用於載入內部非web資料夾圖檔,或外部http圖檔

$source_img = '/home/test/test.jpg'; 
//$source_img = 'https://test.jpg';
@$im = imagecreatefromjpeg($source_img);


if(!$im){ // 載入失敗顯示錯誤圖
	$w = 200;
	$h = 200;
	$fontsize = 5; // 1,2,3,4,5 max 5
	$errorstr = 'Image error';
	$im  = imagecreatetruecolor($w, $h); 
	$bgcolor = imagecolorallocate($im, 255, 255, 0);
	$textcolor  = imagecolorallocate($im, 0, 255, 255);

	imagefilledrectangle($im, 0, 0, $w, $h, $bgcolor); // 填滿背景
	$fw = imagefontwidth($fontsize);     // width of a character
	$fh = imagefontheight($fontsize);     // height of a character
	$l = strlen($errorstr);          // number of characters
	$tw = $l * $fw;              // text width
	$th = 1 * $fw;              // text height

	$xpos = ($w - $tw)/2;
	$ypos = ($h - $th)/2;

	imagestring($im, $fontsize, $xpos, $ypos, $errorstr , $textcolor);
}

header("Content-type: image/jpeg");
imagejpeg($im);
imagedestroy($im);
exit;

PHP 多檔案上傳

name 設為[]陣列 ,並在後方加上 multiple

<input type="file" name="userImage[]" id="userImage" multiple>

上傳處理

foreach( $_FILES[userImage][tmp_name] AS $k => $v){
	if(is_uploaded_file($_FILES['userImage']['tmp_name'][$k])) {
		$source_file = $_FILES['userImage']['tmp_name'][$k];
		$target_file = date( "Ymd.His").'_'.$_FILES['userImage']['name'][$k];
		if(move_uploaded_file($source_file,$target_file)) {
			echo $source_file.'上傳成功';
		}
	}
}

[PHP]phplist 電子報 安裝教學

下載phplist:請至 https://www.phplist.org/ 官網下載
下載後解壓縮,只需要裡面的list資料夾

建立資料庫並設定連線帳號:

mysql> CREATE DATABASE 'phplistdb'; // 建立資料庫
mysql> CREATE USER 'phplist'@'localhost' IDENTIFIED BY 'password'; // 建立連線使用者
mysql> GRANT ALL PRIVILEGES ON phplist.* TO 'phplist'@'localhost'; // 設定使用者權限
mysql> FLUSH PRIVILEGES; // 更新權限

config/config.php 基本設定( 更多設定資料可參考config_extended.php )

 // 語言
 $language_module = 'english.inc';
 // 資料庫位址
 $database_host = 'localhost';
 // 資料庫名稱
 $database_name = 'phplistdb';
 // 資料庫連線使用者
 $database_user = 'phplist';
 // 資料庫密碼
 $database_password = 'password';
 // 如果有更換路徑請加入此設定
 $pageroot = '/lists';

資料庫初始化設定:

至管理介面 http://URL/lists/admin/
按下 Initialise Database 連結
照說明填寫設定欄位就可以使用

[PHP]CURL POST 資料

function CurlPost($PostURL,$PostData,$PStr=null){
     if($PStr){ //使用字串方式post
         foreach ($PostData as $k => $v) {
             $PostStr .= $k.'='.urlencode($v).'&';
             $PostCount++; // 計算共幾個post欄位
         }
         $PostStr = substr($PostStr,0,-1);//消去字尾多餘的 '&'
     }
     $ch = curl_init();
     curl_setopt($ch,CURLOPT_URL, $PostURL); // 設定所要傳送網址
     curl_setopt($ch,CURLOPT_HEADER, false); // 不顯示網頁
     curl_setopt($ch,CURLOPT_POST,1); // 開啟回傳
     curl_setopt($ch,CURLOPT_POSTFIELDS,$PostData); // 將post資料塞入
     curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); // 開啟將網頁內容回傳值
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //略過SSL連線驗證
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //略過SSL連線驗證
     $GetPost = curl_exec($ch); // 執行網頁
     curl_close($ch); // 關閉網頁
     return $GetPost;
 }

PHP & ajax

$.ajax({
url: '//www.gocar.idv.tw/tset/test.php',     
cache:false,      
async:false,     
type: "POST",     
dataType: 'json',     
data: '&key='+key ,     
success: function (data) {          
    $.each(data, function(index, val) {                   
    });
}, error:function(msg){         
      alert('錯誤!'+msg);     
    } 
});

[PHP]MySQL Temporary Table

function create_tmp_table($tmp_table,$tmp_col){
	drop_tmp_table($tmp_table); // 使用前先刪除
	$sql_str = '';
	foreach($tmp_col AS $k => $v){
		$sql_str .= "$k $v,";
	}
	$sql = "CREATE TEMPORARY TABLE $tmp_table ( 
			ID INT NOT NULL AUTO_INCREMENT,
			$sql_str
			tmp_create_time datetime,
			PRIMARY KEY(ID)
		)"; //建立暫存table
	$result  = mysqli_query($conn,$sql);
}

function ins_tmp_table($tmp_table,$arr){
	foreach($arr AS $k => $v){
		$sql_str .= "$k = '$v',";
	}
	$sql = "INSERT INTO $tmp_table  SET $sql_str tmp_create_time = NOW()";
	$result  = mysqli_query($conn,$sql);
}

function drop_tmp_table($tmp_table){
	$sql = "DROP TEMPORARY TABLE IF EXISTS $tmp_table "; 
	$result  = mysqli_query($conn,$sql);
}
$tmp_table = 'tmp_tablename'; // 前面要加 tmp_,避免誤刪正式table
$tmp_col = array( // 設定欄位
	'col1' => 'varchar(20)',
	'col2' => 'varchar(10)',
	'the_time' => 'datetime'
);
create_tmp_table($tmp_table,$tmp_col);
$arr[col1] = 'hello';
$arr[col2] = 'world';
$arr[the_time] = 2019-01-01 00:00:00;
ins_tmp_table($tmp_table,$arr); // 寫入臨時表
/*
SELECT * FROM tmp_table 
*/
drop_tmp_table($tmp_table); // 用完記得要刪除

[PHP]檔案上傳

HTML:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

PHP 程式碼

// 可以取自己想要的檢查使用
$uploadOk = 1; // 若為0代表檢查失敗
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
$target_dir = "uploads/"; // 存放檔案的目錄
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); // 上傳檔案的檔名
//$target_file = $target_dir .date("YmdHis").".".$imageFileType; // 也可以自訂檔名

// 檢查上傳檔案是否為圖檔
if(isset($_POST["submit"])) {
	$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
	if($check !== false) {
		//echo "File is an image - " . $check["mime"] . ".";
		$uploadOk = 1;
	} else {
		echo "很抱歉,檔案非圖檔.";
		$uploadOk = 0;
	}
}
// 檢查檔案是否重複
if (file_exists($target_file)) {
	echo "檔案已存在";
	$uploadOk = 0;
}

// 檢查檔案大小
//if ($_FILES["fileToUpload"]["size"] > 8000000) {
//	echo "很抱歉,,檔案太大.";
//	$uploadOk = 0;
//}

// 檔案格式檢查
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
	echo "很抱歉,檔案格式錯誤";
	$uploadOk = 0;
}


if ($uploadOk == 0) { // 回報上傳失敗
	echo "很抱歉,檔案上傳失敗";
	
} else { // 確認檔案沒問題,就將檔案由暫存區搬移至正式區
	if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
		echo "檔案 : ". basename( $_FILES["fileToUpload"]["name"]). " 上傳成功";
	} else {
		echo "很抱歉,檔案上傳失敗";
	}
}