mp4手機版影片不能撥放,電腦版卻可以,可能是影片編碼問題

今日遇到mp4格式手機版影片不能撥放,電腦版卻可以,一開始以為是WORDPRESS有什麼限制,往WP方向找,結果試了很多都失敗,後來發現另一支MP4影片手機卻可以撥放了,

拿來檢查格式,不知道是不是以下原因

1653321039332
如上圖 isom的不能播放
1653323833072
如上圖 base Media / Version2
mp42的可以撥放

可以參考一下,

然後最後用 HandeBrake這軟體把isom的轉過一次 ,就可以了
專出來是.m4v檔案,可以自己改成.mp4

幫自己記錄一下

WP後台新增文章出現這個網站目前可能處於離線狀態。

升級wp 5.8後
WP後台新增文章出現這個 [網站目前可能處於離線狀態]。

請檢查 設定-> 一般
WordPress 位址(URL)網站位址(URL)
你的網址有沒有寫錯
再來http跟https也沒有寫錯,現在好像要變成寫https了
可以試看看這樣,我是這樣成功搞定的

(沒搞定這個 連右邊 分類、標籤 都會讀取不到)

WP後台登入 這個網站發生重大問題。請檢查網站管理員電子郵件收件匣以取得相關說明。

輸入後台網址卻出現如下:

WordPress後台登入 這個網站發生重大問題。請檢查網站管理員電子郵件收件匣以取得相關說明。

後台完全不能登入,但前台可以正常瀏覽

查了一下,可以看主機裡的error_log

我看到這段

16-Sep-2021 17:07:29 UTC] WordPress 資料庫錯誤: Unknown column ‘user_id’ in ‘field list’ (由 require(‘wp-blog-header.php’), wp, WP->main, do_action_ref_array(‘wp’), WP_Hook->do_action, WP_Hook->apply_filters, WP_STATISTICS\Hits->record_wp_hits, WP_STATISTICS\Hits::record, WP_STATISTICS\UserOnline::record, WP_STATISTICS\UserOnline::add_user_online 的查詢 INSERT INTO `wp_statistics_useronline` (`ip`, `timestamp`, `created`, `date`, `referred`, `agent`, `platform`, `version`, `location`, `user_id`, `page_id`, `type`) VALUES (

 

我看到一個我看 WP_STATISTICS

看起來像是plugins,但又沒辦法進後台關閉,

我就去檔案,把 WP_STATISTICS這資料夾改成 WP_STATISTICS_qq

再去後台看,現在可以登入了,只是WP_STATISTICS 我就不能用了

linebot 串google sheetg使用php的坑

linebot 串google sheetg使用php的坑

目前發現

1.如果有時候正常,有時候不正常,到後來完全無作用不寫入google sheet,但之前都沒問題,很有可能不是你的程式碼錯誤,是主機商怪怪的,我之前用sugxx 主機,一開始ˇ沒問題用爽爽,後來開始line串不到google sheet,會timeout(可能)的樣子,後來,改用另一家主機商 遠X 居然好了,曾經一度有懷疑可能是ignore_user_abort(true) 不起作用,但目前還是不清楚,確實換主機完全正常了,line串到php去驅動google sheet又成功了。

google sheet如果不指定範圍就append只要輸入空格就會發生推移-Appending rows with empty cells results in increasing row indentation

使用google sheet api V4 with php

google sheet如果不指定範圍就寫append程式只要輸入空格就會發生推移如下

row

 

$rangeNOW=’代墊費’;

$values = [[date(‘Y/m/d’),$item, $money, ‘ ‘ ,’努狗巴弟巴弟紀錄’]]

$body = new \Google_Service_Sheets_ValueRange([
‘values’ => $values
]);

$params = [
‘valueInputOption’ => ‘USER_ENTERED’
];

$service->spreadsheets_values->append($spreadsheetId, $rangeNOW, $body, $params);

 

只要插入新的一行,會從你上一列最後出現值的欄位下方開始插入新一列的資料,
非常靠北

後來再github找到解
(這裡尾巴解)
https://github.com/burnash/gspread/issues/537

也就是你一定要"指定範圍"

$rangeNOW=’代墊費!:A60′;
//要指定代墊費這個工作表從A60格開始 append
‘工作表名稱!欄位點’

那很靠北的,也就是你要知道目前最後一列用到哪格了,
很抱歉sheet api沒有提供這個給php,不像mysql那樣方便

所以我自己用了很愚蠢的方式,先取得這工作表資料,再算出最後一列

//這邊算取得最後一ROW是第幾ROW
$range=’代墊費’;
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$value_all = $response->getValues();//所有資料
$lastRow_number=count($value_all); //取得最後一行,例如第111行

//$lastRow_number 這個就是目前最後一ROW囉

再回到上述程式

$rangeNOW=’代墊費!A’.$lastRow_number; //這樣就是 代墊費!A60 囉

$service->spreadsheets_values->append($spreadsheetId, $rangeNOW, $body, $params);

google sheet api wiht php 好多坑

 

 

php資料夾內的所有檔案數量總和包含第一層資料夾的所有檔案數量

目前能計算總合數量
以及第一層目錄 每一個目錄的內含檔案總量(包括第N層)
第二層以及第二層後的只會列出該資料夾內的數量

 

<?php

//此程式子資料夾內的數量不對
//但是第一層資料夾總和是正確的 (包括N層的總和)
//第二層後的只會秀該資料夾內的檔案數量 不會包含第二層到第三層的~~~~到N層的總和
//只花1小時寫沒有寫很好

$dirn = 0; //目錄數
$filen = 0; //檔案數
$filen_this=0;//第一層子資料夾內檔案總合數
$filen_this_now=0;
$timeplus=0;

//打開目錄
$dir = opendir(“./"); // ./代表目前目錄
//$dir = opendir(“qq123″); // ./代表目前目錄

//列出 目錄中的文件
while($file = readdir($dir)) {
if($file!="." && $file !="..")
{
$filen_this=0;

if(is_dir($file)) {

getdirnum($file);
echo ‘<p style="background-color:#ffe58f;">’.$file."資料夾-總檔案數為:{$filen_this}<br></p>";
}

}
}

closedir($dir);
//用來統計一個目錄下的檔案和目錄的個數
function getdirnum($file) {

global $dirn;
global $filen;
global $filen_this;

global $filen_this_now;

$filen_this_now=0;
//算目前資料夾下檔案數
$FileNum=count(glob(“$file/*.*"));
$filen=$filen+$FileNum;

$filen_this=$filen_this+$FileNum;
$filen_this_now=$filen_this_now+$FileNum;

$dir = opendir($file);
echo " -“.$file."資料夾-檔案數為:{$filen_this_now}<br>";

while($filename = readdir($dir)) {

if($filename!="." && $filename !="..")
{

$filename = $file."/".$filename; //因為子資料夾要加路徑/符號

if(is_dir($filename)) {

//echo " -“.$filename."資料夾-檔案數為:{$filen_this_now}<br>";

getdirnum($filename); //遞迴,就可以檢視所有子目錄

}
// else {}
}
}

closedir($dir);

}//getdirnum()END
//echo “全部-目錄數為:{$dirn}<br>";
echo “全部-檔案數為:{$filen}<br>";

?>

wp contact form7 reacptchaV3 無效改用ReCaptcha v2 for Contact Form 7

嘗試了contact form7裡面自帶的reacptchaV3  整合

但是啟用 表單就會一直驗證失敗不知為何

後來索性找了外掛ReCaptcha v2 for Contact Form 7

也去google recaptcha啟用了 v2金鑰

停用原本自帶的reacptchaV3  整合(就是移除整合那邊V3金鑰就好)

然後選擇reacptcha版本 V2,

最重要一步 在表單設計裡 也就是表單HTML設計裡 加入 [recaptcha]

就可以看到recaptcha V2 那個要打勾才能送出的 大框框了

1611779599097

虛擬主機 出去ip 跟進來ip 不一樣用php curl測試

測試端
ip-t.php
<?php
//請另存成ip-t.php 然後上傳server網路上跑,會送去ip.php看 進與出的IP
//init curl
$ch = curl_init();
//curl_setopt可以設定curl參數
//設定url
curl_setopt($ch , CURLOPT_URL , “https://yourdomain.com/ip.php");
//設定header
curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Content-type: application/x-www-form-urlencoded’));
//啟用POST
curl_setopt($ch, CURLOPT_POST, true);
//傳入POST參數
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query( array( “name"=>"johnson") ));
//執行,並將結果存回
$result = curl_exec($ch);
//關閉連線
curl_close($ch);
?>

接收端
ip.php
<?php
echo $_SERVER[“HTTP_REFERER"];
echo ‘<br>’;
//echo $_SERVER[‘HTTP_X_FORWARDED_FOR’];
//echo ‘<br>’;
echo $_SERVER[‘REMOTE_ADDR’]; //使用者出去的ip
echo ‘<br>’;
echo $_SERVER[‘SERVER_ADDR’]; //進來的ip
?>

使用情境:
因為有時候會需要由server發向另一台主機程式
而另一台總是擋掉ip 才發現虛擬主機給的ip 只是進去,發出的ip是不同的
原理:
而使用者 如果用$_SERVER[‘REMOTE_ADDR’]; 去看 只會看到使用者自己電腦的IP,
所以需要用server主機 使用curl模擬post出去 就會是server端送出了。

[坑] wordpress用ajax變數過去總是回傳404-WordPress via POST data and return the 404 errors

wordpress用ajax變數過去總是回傳

404-WordPress via POST data and return the 404 errors

如果你確定網址輸入不是404,東西存在,ajax過去的網頁內容檢查也沒錯誤,

那你有可能是使用了 wordpress 裡的 變數

請查看妳有沒有用到裡面得變數 有的話請改變數名稱,

https://codex.wordpress.org/WordPress_Query_Vars

例如

我用 ajax 使用post方式 變數是用了 page,但總是回傳404,可是檢查被ajax那頁完全沒問題,後來變數改成pageQQ就可以了,

真實踩坑血淚實例。

感謝此國外神人踩過的坑

WordPress POST data and the 404 errors: The mystery of the restricted query variables

wordpress http強制轉https wordpress http force to https

找到 .htaccess 檔案 加入下列兩行 程式

插入於RewriteEngine On 跟 RewriteBase / 之間

 

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>