2021年6月30日 星期三

(PHP) phpinfo()

幹! php 還真難學...
明明記得當初 RH9架站時. 有依鳥哥教學用過 phpinfo() 列出版本資訊, 為何自己怎試就不行(沒顯示任何文字)!?...
原來...
 
<?php  //沒有寫 'php'. 不行!
phpinfo();
?>
 
<? php  // '?' 和 'php' 間多空一格也不行!!
phpinfo();
?>

05_include和require

PHP允許您包括文件,以便頁面內容可以重複使用
兩種方法在PHP中包括文件:
    include
    require
 
包括文件的優點
代碼重用性:可以在許多PHP腳本中重複使用HTML代碼或PHP腳本
 
文件: menu1.html
<head>
    <meta charset="utf-8" />
    <title>html菜單示例</title>
</head>
<a href="https://JimmyKenny.blogspot.com">蕃薯家的生活</a> |  
<a href="https://50air.blogspot.com/">50新空域</a> |  
<a href="https://sites.google.com/view/yellowcat">黃子貓工作室 (雲端主頁)</a> |   
<a href="https://dyhms.blogspot.com/">黃子貓工作室 (部落格)</a>
 
文件: include1.php
<?php include("menu1.html"); ?> 
<h1>這是主菜單(include)</h1>
include VS require 差異在於: 文件丟失時的處理方式
include語句允許腳本繼續
require語句暫停腳本產生致命的E_COMPILE_ERROR級別錯誤。

2021年6月29日 星期二

04_表單處理

獲取表單數據,需要使用: $_GET$_POST
表單請求可以是getpost
從get請求中檢索數據,需要使用$_GET,而$_POST用於檢索post請求中的數據
 
GET表單
GET是表單的默認請求。 以get請求傳遞的數據在URL瀏覽器上是可見的,因此它不太安全。通過 get 請求發送的數據量是有限的,所以不適合使用Get請求方法發送大量數據
 
文件: form1.html
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="utf-8" />
        <title>Get表單示例</title>
    </head>
<body>
 
<form action="welcome.php" method="get"> 
用戶名: <input type="text" name="name"/> 
<input type="submit" value="提交"/> 
</form>
 
文件: welcome.php
<head>
    <meta charset="utf-8" />
    <title>歡迎</title>
</head>
<?php 
$name=$_GET["name"];     //接收$name的內容 
echo "歡迎您, $name"; 
?>
Post表單
Post廣泛用於提交大量數據的表單,如:文件上傳,圖像上傳,登錄表單,註冊表單等。
以post請求傳遞的數據在URL瀏覽器上不可見,因此它是安全的。可以用來發送請求發送大量的數據。
 
從PHP中接收來自post請求的數據的例子
文件: form2.html
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="utf-8" />
        <title>POST表單示例</title>
    </head>
<body>
<form action="login.php" method="post">  
用戶名:<input type="text" name="name"/>
密碼:<input type="password" name="password"/>  
<input type="submit" value="登錄"/>
</form>
 
文件: login.php
<head>
    <meta charset="utf-8" />
    <title>登錄</title>
</head>
<?php 
$name=$_POST["name"];
$password=$_POST["password"];
echo "歡迎: $name, 您密碼是: $password"; 
?>
 
 
 
 

(不想探究) Timeout waiting for PADO packets

不想探究!? 才怪!
你搞得我連網不順. 不探 ''. 才怪!!
-
斷斷續續. 總會發生網路斷線. 連不上網路. 或開不了某些網頁的問題...
不斷地嚐試. 追蹤. 除錯, 當然情況漸入佳境!!...
 
今天的進展心得是: 可能是中華電信的委外廠商的網管問題!!?...
新追蹤到的問題情況:
- 網頁開不了: 發生 [無法與 reCAPTCHA連線] 問題
- 斷線重撥訊息: Timeout waiting for PADO packets
 
處置方式:
- 以 cmd 的 tracert 指令查詢卡關的路由: 發現 168.95.98.254 這傢伙很卡...
- 以 iptables -A INPUT -i $EXTIF -s 168.95.98.254 -j DROP 在 NAT Sever 上過濾掉. 一切好像就變順了...
 
我的道理:
- 有可能電信的委外廠商以網管手段. 轉址方便所造成
- 因此. 我採 [我只發訊息叫你處理. 不接受你網管訊息] 的策略應對之
 
有待後續持續觀察策略的成效....
 

03_數據類型

數據類型
分爲3大類型
    標量類型
    複合類型
    特殊類型
 
4種標量數據類型
    布爾
    整數
    浮動
    字符串
 
2種複合數據類型
    數組
    對象
 
2種特殊的數據類型
    資源
    NULL值

02_常量&魔術常量

PHP兩種定義方式:
    使用 define() 函數定義
    使用 const 關鍵字定義
 
define(name, value, case-insensitive)
    name:指定常量名稱。
    value:指定常量值。
    case-insensitive:默認值爲false。默認情況下區分大小寫。
<?php 
    define( "MESSAGE","Hello YiiBai PHP"); 
echo MESSAGE, "<br/>"; 
?>
----------- 結果 -----------
Hello YiiBai PHP
<?php 
    define( "MESSAGE","Hello YiiBai PHP",true); //指定不分大小寫
echo MESSAGE,"<br/>"; 
echo message,"<br/>";
?>
----------- 結果 -----------
Hello YiiBai PHP
Hello YiiBai PHP
 
const關鍵字
是一個語言構造不是一個函數。
比define()快一點,因爲它沒有返回值。
要區分大小寫
 
 
魔術常量
- PHP中的預定義常量, 依使用而改變
- 以雙下劃線(__)開頭,以雙下劃線(__)結尾。
- 不分大小寫
 
__LINE__
使用當前行號。
 
__FILE__
文件的完整路徑和文件名。 如果它在include中使用,則返回包含文件的名稱。
 
__DIR__
文件的完整目錄路徑。 等同於dirname(__file__)。 除非它是根目錄,否則它沒有尾部斜槓。 它還解析符號鏈接。
 
__FUNCTION__
表示使用它的函數名稱。如果它在任何函數之外使用,則它將返回空白。
 
__CLASS__
表示使用它的函數名稱。如果它在任何函數之外使用,則它將返回空白。
 
__TRAIT__
表示使用它的特徵名稱。 如果它在任何函數之外使用,則它將返回空白。 它包括它被聲明的命名空間。
 
__METHOD__
表示使用它的類方法的名稱。方法名稱在有聲明時返回。
 
__NAMESPACE__
表示當前命名空間的名稱。
<?php
 
    echo "<h3>Example for __LINE__</h3>"; 
    echo "You are at line number " . __LINE__ . "<br><br>";// print Your current line number i.e;3 
    echo "<h3>Example for __FILE__</h3>"; 
    echo __FILE__ . "<br><br>";//print full path of file with .php extension 
    echo "<h3>Example for __DIR__</h3>"; 
    echo __DIR__ . "<br><br>";//print full path of directory where script will be placed 
    echo dirname(__FILE__) . "<br><br>"; //its output is equivalent to above one. 
    echo "<h3>Example for __FUNCTION__</h3>"; 
    //Using magic constant inside function. 
    function cash(){ 
        echo 'the function name is '. __FUNCTION__ . "<br><br>";//the function name is cash. 
    } 
 
    cash(); 
 
    //Using magic constant outside function gives the blank output. 
    function test_function(){ 
        echo 'HYIIII'; 
    } 
 
    test_function(); 
    echo  __FUNCTION__ . "<br><br>";//gives the blank output. 
 
    echo "<h3>Example for __CLASS__</h3>"; 
    class abc 
    { 
        public function __construct() { 
            ; 
        } 
 
        function abc_method(){ 
        echo __CLASS__ . "<br><br>";//print name of the class abc. 
        } 
    } 
    $t = new abc; 
    $t->abc_method();
 
    class first{ 
        function test_first(){ 
            echo __CLASS__;//will always print parent class which is first here. 
        } 
    } 
 
    class second extends first 
    { 
        public function __construct() { 
            ; 
        } 
    } 
    $t = new second; 
    $t->test_first(); 
 
    echo "<h3>Example for __TRAIT__</h3>"; 
    trait created_trait{ 
        function abc(){ 
            echo __TRAIT__;//will print name of the trait created_trait 
        } 
    } 
 
    class anew{ 
        use created_trait; 
    } 
    $a = new anew; 
    $a->abc(); 
    echo "<h3>Example for __METHOD__</h3>"; 
 
    class meth{ 
        public function __construct() { 
            echo __METHOD__ . "<br><br>";//print meth::__construct 
        } 
        public function meth_fun(){ 
            echo __METHOD__;//print meth::meth_fun 
        } 
    } 
    $a = new meth; 
    $a->meth_fun(); 
 
    echo "<h3>Example for __NAMESPACE__</h3>"; 
    class name{ 
        public function __construct() { 
            echo 'This line will be printed on calling namespace'; 
        } 
    } 
    $clas_name= __NAMESPACE__ .'\name'; 
    $a = new $clas_name; 
 
?>
 
 
 
 
 
 

2021年6月28日 星期一

01_變量

 
PHP中,變量名稱是區分大小寫的。 如例, 變量名稱「color」不同於」Color「,」COLOR「等。
PHP變量名稱必須以字母或下劃線開頭。PHP變量不能以數字和特殊符號開頭。
亂碼:
<head>
<meta charset="utf-8">
</head>
換行: "<br/>"
 
$$var 用於存儲$var的值
<?php 
    $x = "abc"; 
    $$x = 200; 
    echo $x."<br/>"; 
    echo $$x."<br/>"; 
    echo $abc; 
?>
========================
結果:
abc
200
200
 
 
 

2021年6月20日 星期日

(不想探究) 沒了它. 我的Server居然連不上Yahoo....

Iptables下TCPMSS使用
 
mtu是網絡傳輸最大報文包。
mss是網絡傳輸數據最大值。
mss加包頭數據就等於mtu.
 
簡單說拿TCP包做例子。報文傳輸1400字節的數據的話,那麼mss就是1400,再加上20字節IP包頭,20字節tcp包頭,那麼mtu就是1400+20+20. 當然傳輸的時候其他的協議還要加些包頭在前面,總之mtu就是總的最後發出去的報文大小。 mss就是你需要發出去的數據大小
 
1.MSS: Maxitum Segment Size 最大分段大小
2.MSS最大傳輸大小的縮寫,是TCP協議裡面的一個概念。
3.MSS就是TCP數據包每次能夠傳輸的最大數據分段。
 
為了達到最佳的傳輸效能TCP協議在建立連接的時候通常要協商雙方的MSS值,這個值TCP協議在實現的時候往往用MTU值代替(需要減去IP數據包包頭的大小20Bytes和TCP數據段的包頭20Bytes)所以往往MSS為1460。通訊雙方會根據雙方提供的MSS值得最小值確定為這次連接的最大MSS值。

--set-mss value #設置特定MSS值
--clamp-mss-to-pmtu #根據MTU自動調整MSS
 
例如:
 
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
這條規則的目的就是改變TCP MSS以適應PMTU(Path MTU)
 
一種是把mss設置為一個固定值:
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN- j TCPMSS --set-mss 1460

2021年6月17日 星期四

04_HTML 屬性

屬性是 HTML 元素提供的附加信息
HTML 屬性
HTML 元素可以設置屬性
屬性可以在元素中添加附加信息
屬性一般描述於開始標籤
屬性總是以名稱/值對的形式出現,比如:name="value"。
(例)
HTML 鏈接由 <a> 標籤定義。鏈接的地址在 href 屬性中指定:
<a href="https://dyhms.no-ip.oirg">這是一個鏈接</a>
 
屬性值應該始終被包括在引號內
雙引號是最常用的,不過使用單引號也沒有問題。
提示: 在某些個別的情況下,比如屬性值本身就含有雙引號,那麼您必須使用單引號,例如:name='John "ShotGun" Nelson'
屬性和屬性值對大小寫不敏感
不過,萬維網聯盟在其 HTML 4 推薦標準中推薦小寫的屬性/屬性值。
新版本的 (X)HTML 要求使用小寫屬性
 
 

2021年6月16日 星期三

03_HTML 元素

嵌套的 HTML 元素
大多數 HTML 元素可以嵌套(HTML 元素可以包含其他 HTML 元素)。
HTML 文檔由相互嵌套的 HTML 元素構成。
 
HTML 空元素
沒有內容的 HTML 元素被稱為空元素。空元素是在開始標籤中關閉的。
<br> 就是沒有關閉標籤的空元素( <br> 標籤定義換行)。
 
在 XHTML、XML 以及未來版本的 HTML 中,所有元素都必須被關閉
在開始標籤中添加斜杠,比如 <br />關閉空元素的正確方法,HTML、XHTML 和 XML 都接受這種方式。
即使 <br> 在所有瀏覽器中都是有效的,但使用 <br /> 其實是更長遠的保障
 
HTML 提示:使用小寫標籤
HTML 標籤對大小寫不敏感:<P> 等同於 <p>。許多網站都使用大寫的 HTML 標籤。
菜鳥教程使用的是小寫標籤,因為萬維網聯盟(W3C)在 HTML 4 中推薦使用小寫,而在未來 (X)HTML 版本中強制使用小寫
 
 
 

02_HTML基礎

HTML 標題(Heading)是通過<h1> - <h6> 標籤來定義的。
(例)
<h1>這是一個標題</h1>
<h2>這是一個標題</h2>
<h3>這是一個標題</h3>
 
HTML 段落是通過標籤 <p> 來定義的。
(例)
<p>這是一個段落。 </p>
<p>這是另外一個段落。 </p>
 
HTML 鏈接是通過標籤 <a> 來定義的。
(例)
<a href="https://dyhms.no-ip.org">這是一個鏈接</a>
 
HTML 圖像是通過標籤 <img> 來定義的.
(例)
<img loading="lazy" src="/images/logo.png" width="258" height="39" />
(註)圖像的名稱和尺寸是以屬性的形式提供的

01_HTML 簡介

<!DOCTYPE> 聲明有助於瀏覽器中正確顯示網頁
網絡上有很多不同的文件,如果能夠正確聲明HTML的版本,瀏覽器就能正確顯示網頁內容。
 
doctype 聲明是不區分大小寫的,以下方式均可:
<!DOCTYPE html>
<!DOCTYPE HTML>
<!doctype html>
<!Doctype Html>
 
 
聲明方式:
HTML5
<!DOCTYPE html>
HTML 4.01
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
(註)
在HTML 4.01 中,<!DOCTYPE> 聲明需引用 DTD (文檔類型聲明),因為 HTML 4.01 是基於 SGML(Standard Generalized Markup Language 標准通用標記語言)
HTML 4.01 規定了三種不同的 <!DOCTYPE> 聲明,分別是:Strict、Transitional 和 Frameset。
HTML5 不是基于 SGML,因此不要求引用 DTD。

XHTML 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
 
中文編碼
目前在大部分瀏覽器中,直接輸出中文會出現中文亂碼的情況,這時候我們就需要在<head>裡將字符聲明UTF-8 或 Big5。 (建議: UTF-8 ), 例:
 
<head>
<meta charset="UTF-8">
<title>
頁面標題</title>
</head>
 
 

(Centos-7s) 更新: 網卡名稱改回 eth0 的方法

將 CentOS 7 網卡名稱修改, 用回 Eth0 的方法:   1) # vi /etc/sysconfig/grub 內容大概是這樣:   GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release...