首頁  >  文章  >  後端開發  >  史上最全爆肝整理PHP入門筆記(總結分享)

史上最全爆肝整理PHP入門筆記(總結分享)

WBOY
WBOY轉載
2021-12-22 18:59:097657瀏覽

這篇文章為大家帶來了PHP入門筆記,其中記錄的知識點非常詳細,PHP語言作為一種語言程序,其專用性逐漸在應用過程中顯現,希望大家能夠從中感受到PHP的魅力,希望對大家有幫助。

史上最全爆肝整理PHP入門筆記(總結分享)

簡介

PHP (超文本預處理器)原始為Personal Home Page的縮寫,已經正式更名為"PHP : Hypertext Preprocessor"。自1990年代國內網路開始發展到現在,網路資訊幾乎涵蓋了我們日常活動所有知識範疇,並逐漸成為我們生活、學習、工作中不可或缺的一部分。根據統計,從2003 年開始,我國的網頁規模基本上保持了翻倍的成長速度,並且呈現上升趨勢。 PHP 語言作為當今最熱門的網站程式開發語言,它具有成本低、速度快、可移植性好、 內建豐富的函式庫等優點,因此被越來越多的企業應用於網站開發中。但隨著網路的不斷更新換代,PHP語言也出現了不少問題。 

根據動態網站要求,PHP語言作為一種語言程序,其專用性逐漸在應用過程中顯現,其技術水平的優劣與否將直接影響網站的運作效率。其特點是具有公開的原始程式碼, 在程式設計上與通用型語言,如C語言相似性較高,因此在操作過程中簡單易懂,可操作性強。同時,PHP語言具有較高的資料傳送處理水平及輸出水平,可廣泛應用在Windows系統及各類Web伺服器中。如果資料量較大,PHP語言還可以拓寬連結面,與各種資料庫相連,緩解資料儲存、檢索及維護壓力。隨著科技的發展,PHP 語言搜尋引擎還可以量體裁衣,實行個人化服務,例如根據客戶的喜好進行分類收集儲存,大大提高了資料運作效率。

主要特點

(一)開源和免費性

由於PHP的解釋器的源代碼是公開的,所以安全係數較高的網站可以自行更改PHP的解釋程序。另外,PHP 運作環境的使用也是免費的。

(二)快速性

PHP是一種非常容易學習和使用的語言,它的語法特點類似C語言,但又沒有C語言複雜的位址操作,而且又加入了物件導向的概念,再加上它有簡潔的語法規則,使得它操作編輯非常簡單,實用性很強。

(三)資料庫連接的廣泛性

PHP可以與許多主流的資料庫建立起連接,如MySQL、ODBC、Oracle等,PHP是利用編譯的不同函數與這些資料庫建立起連接的,PHPLIB就是常用的為一般事務提供的基底庫。

(四)面向過程和物件導向並用

在PHP語言的使用中,可以分別使用面向過程和物件導向, 而且可以將PHP面向過程和物件導向兩者一起混用,這是其它很多程式語言做不到的。 

優點

(一)流行,容易上手

PHP是目前最受歡迎的程式語言,這毋庸置疑。它驅動全球超過2億多個網站,有全球超過81.7%的公共網站在伺服器端採用PHP。 PHP常用的資料結構都內建了,使用起來方便簡單,一點都不複雜,表達能力相當靈活。 

(二)開發職位很多

在伺服器端的網站程式設計中PHP會更容易幫助你找到工作。很多網路相關企業都在使用PHP開發框架,所以可以說市場對PHP的開發程式設計師的需求還是比較大的。 

(三)仍在不斷發展

PHP在不斷相容著類似closures和命名空間等技術,同時兼顧性能和當下流行的框架。版本是7之後,一直在提供更高效能的應用。 

(四)可植入性強

PHP 語言在修補程式漏洞升級過程中,核心部分植入簡單易行,且速度快。 

(五)拓展性強

PHP 語言在資料庫應用過程中,可從資料庫調取各類數據,執行效率高。

缺點

(一)PHP的解釋運行機制

在PHP 中,所有的變數都是頁面層級的,無論是全域變數, 還是類別的靜態成員,都會在頁面執行完畢後被清空。

(二)設計缺陷,缺少關注PHP被稱作是不透明的語言,因為沒有堆疊追踪,各種脆弱的輸入。沒有一個明確的設計哲學。早期的PHP受到Perl的影響,而帶有out參數的標準函式庫又是有C語言引入,物件導向的部分又是從 C 和Java學來的。

(三)對遞迴的不良支援

PHP並不擅長遞迴。它能容忍的遞歸函數的數量限制和其他語言比起來明顯少。


PHP 文法

#1804bb18a66aab2001c6e1e3c7f3e260


註解:

##//......單行註解

#......單行註解

/*..........*/ 多行註解


變數:

$array=NAME;    變數名稱必須以字母或底線開始,不能用數字開頭,中間不能有空格! 大小寫敏感!

$x=5;  $X=7;  輸出為不同結果

<?php
$a = 1;
$A = 2;
echo $a . "<br>";
echo $A;
?>


局部變數

<?php
$a=1; //全局变量
function test() { //声明一个函数,名字为 test
    $a=15; //函数内的变量,为局部变量
    echo "内部输出结果:".$a;
    }
test();
echo "<br>";
echo "外部输出结果:".$a;
?>

#
<?php
$a=1;
function test() { //声明一个函数,名字为 test
    global $a; //在函数内声明并引用外部变量,注意这里是小写 global
    echo $a;
    echo "<br>";
}
test(); //使用函数
echo $a;
?>

 

<?php
$a=10;
$b=20;
$c=30;
function test() {    
$a=100;
$GLOBALS[&#39;a&#39;]=$GLOBALS[&#39;b&#39;]+$GLOBALS[&#39;c&#39;]; //引用全局变量,这里的 GLOBALS 必须大写
  echo $a."<br>";
}
Test(); //函数名不区分大小写
 echo "<br>";
echo $a;
?>

<?php
function test() {
    static $a = 0; //静态作用域,保留变量值
    echo $a . "";
    $a++;
}
test();//不使用static的话,每次输出都是 0
echo "<br>";
test();
echo "<br>";
test();
?>




#parameter 參數作用域

<?php
$a = 10;
$b = 20;
function test() {
    $a = 30;
    $b = 40;
    $c = $a + $b;
    echo  "函数内运算值:".$c;
    echo "<br>";
}
test();
$c = $a + $b;
echo "函数外运算值:".$c;
?>


echo 與 print 的差異:

echo "123","456","789";//能夠連續輸出多個字串

print "123","456";  //輸出錯誤

#換行符號:


echo "df250b2156c434f3390392d09b1c9563";

#echo "\n";

echo PHP_EOL; //換行符號


返回變數類型: var_dump

<?php
$a = "1111";
$b = 123;
$c = null;
echo var_dump($a) . "<br>";
echo var_dump($b) . "<br>";
echo var_dump($c) . "<br>";
$d = array(&#39;a&#39;, 1, abc); //数组
echo var_dump($d) . "<br>";
$e = true;
echo var_dump($e);
?>


#
<?php
$text1="ni hao";
$text2="hahaha";
echo $text1."        ".$text2."<br>"; //引用多个变量用 点 . (英文)连接     为空格
$a = strlen($text1);//计算字符串长度数
echo $a;
?>//空格也算作一个字符

強引用與弱引用 
<?php
$text1 = "ni hao";
echo "$text1" . "<br>";// “ ” 双引号输出会显示变量值
echo &#39;$text1&#39;;// ‘’ 单引号会显示变量名本身 
?>


自增自減輸出

<?php
$x = 10;
echo ++$x;//先自增后输出
echo "<br>";
$a=15;
echo --$a . "<br>";//先自减后输出
$y = 20;
echo $y++ . "<br>";//先输出后自增
$b=30;
echo $b--;//先自增后输出
?>


if 條件判斷

<?php
$x = 10;
$y = 20;
if ($x > $y) {//判断 x 和 y 的大小,如果满足 $x > $y 就输出 true 
    echo "true";
}else if($x==$y) {//else if 如果上面的判断不满足,再次判断  $x==$y  是否相等 ,如果满足就输出  $x."等于"$y;
    echo $x."等于"$y;
}
else {//如果上面的判断都不满足就输出 false
    echo "false";
}
?>

<?php
$x= (3>4)? "true":"false";//三元运算符
echo $x;
?>

switch 判斷
<?php
$a="abc";
switch ($a) {
    case &#39;red&#39;:
        echo "red";
        break; //跳出整个循环体,continue跳出本次循环体,继续执行后面的循环体。
    case &#39;green&#39;:
        echo "green";
        break;
    case &#39;black&#39;:
        echo "black";
        break;
    default:
        echo "not color";
}
?>

##陣列

<?php
$cars = array("BMW", "BinLi", "大众");
echo "I like " . "$cars[0]", "  ", "$cars[1]", "  ", "$cars[2]";
?>

<?php
$cars = array();
$cars[0] = "BMW";
$cars[1] = "BINlix";
$cars[2] = "大众";
echo "I like " . "$cars[0]", " ", "$cars[1]", " ", "$cars[2]";
?>

<?php
$cars = array();
$cars[0] = "BMW";
$cars[1] = "BINlix";
$cars[2] = "大众";
echo count($cars) . "<br>";// count 返回数组长度
echo "I like " . "$cars[0]", " ", "$cars[1]", " ", "$cars[2]";
?>

count 取得陣列的長度

var_dump()返還資料型別


strlen(); 傳回字串長度

array(); 建立陣列######$arrayname=array('name' =>"icq", 'age'=>20,'gender'=>true); //關聯型陣列######echo $arrayname["name"];######$arrayName=array('1 ',"zhangsan",20,false,"beijingchangping");//數字型數組###############echo $arrayName[3]; //布林類型true 列印顯示1 #########for 迴圈遍歷陣列:###
    <?php
$cars = array("BMW", "BinLi", "大众");
$arrlength = count($cars);
for ($x = 0; $x < $arrlength; $x++) {
    echo $cars[$x] . "<br>";
}//只输出值
?>


    <?php
$cars = array("BMW", "BinLi", "大众");
$arrlength = count($cars);
print_r($cars);//数据类型,下标值,值都打印出来
?>


关联数组:

<?php
$age = array("gao" => "30", "li" => "20", "zhang" => "10");
echo "gao is    " . "  " . $age[&#39;gao&#39;] . "  " . "     years old.";
?>


关联数组2:

<?php
$age = array();
$age["sun"] = ["20"];
$age["liu"] = ["30"];
$age["zhang"] = ["40"];
print_r($age);
?>


多维数组

<?php
$cars = array(
    array("111", 100, 50),
    array("222", 200, 100),
    array("333", 300, 150),
);
echo $cars[1][0];
?>


<?php
$age = array();
$age["sun"] = ["20"];
$age["liu"] = ["30"];
$age["zhang"] = ["40"];
// print_r($age);
foreach ($age as $key => $value) {
    echo "name is     " . $key . "   old    " . $value . "<br>";
}
?>


排序:

<?php
$cars = array("Blinli", "wzida", "muling");
$x = sort($cars);
echo $x;
print_r($cars);
?>

<?php
$cars = array("Blinli", "wzida", "muling");
$x = rsort($cars);
echo $x;
print_r($cars);
?>



$GLOBALS — 引用全局作用域中可用的全部变量

<?php
$x = 10;
$y = 29;
function add() {
    // global $x, $y;
    // $z = $x + $y;
    // echo $z;
    $GLOBALS[&#39;z&#39;] = $GLOBALS[&#39;x&#39;] + $GLOBALS[&#39;y&#39;];
    echo $GLOBALS[&#39;z&#39;];
}
add();
?>


PHP $_REQUEST 用于收集 HTML 表单提交的数据

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
    <form method="POST" action="request.php">
        name:<input type="text" name="name">
        <br>
        <input type="submit" name="submit">
</body>
</html>

<?php
$name = $_REQUEST[&#39;name&#39;];
echo $name;
?>


循环:

<?php
$a = 0;
while ($a <= 10) {
    echo "number is :" . $a . "<br>";
    $a++;
}
?>


do while 循环:

<?php
$i = 0;
do { //先循环
    $i++;
    echo "number is :" . $i . "<br>";
} while ($i < 5);//再判断
?>


<?php
function add($x, $y) {
    $z = $x + $y;
    return $z;
    // echo $z;
}
// add(5, 15);
echo "1+16" . "=" . add(1, 16);
?>


函数:

<?php
function add() {
    $x = 10;
    $y = 20;
    $z = $x + $y;
    echo $z;
}
add();
?>
 
<?php
function add($x, $y) {
    $z = $x + $y;
    echo $z;
}
add(5, 15);
?>

类和对象: 类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。 对象 − 是类的实例。

<?php
class Person { //定义一个类,名称为 Person 使用驼峰命名法,不能用数字开头,类似于变量的命名方式。
    var $name; //定义一个变量,值为空
    function say() { //定义一个函数
    echo "my name is ".$this->name;
                }
}
$xm=new Person; //实例化对象,具体的使用方式
$xm->name="小明"; //对象属性的赋值
$xm->say(); //访问对象的方法
?>


超级全局变量:

<?php
$string = "123"; //变量
define("DEMO", true); //常量
print_r($GLOBALS); //超级全局变量
?>

$_REQUEST 可以接收 GET POST 发送的数据包

 


$_SERVER['PHP_SELF']; //显示头部信息

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
</head>
<body>
<!-- <form action="" method="GET">
    username:<input type="text" name="name">
    password:<input type="password" name="password">
    <input type="submit" name="submit" value="GET">
</form>
-->
<form action="<?php echo $_SERVER[&#39;HTTP_SELF&#39;]; ?>" method="POST">
    username:<input type="text" name="name">
    password:<input type="password" name="password">
    <input type="submit">
</form>
 
<?php
echo "提交的内容:   <font style=&#39;color:red&#39;>" . @$_POST["name"] . @$_POST["password"] . "</font>"
?>
</body>
</html>
//在PHP中通过打印函数引入我们的HTML+CSS+JS


PHP 连接MYSQL数据库

1、mysql PHP63cb185a123679dd52783a58a6ec5c47"; //指定字符集    

或者:  

header("Content-Type:text/html;charset=utf-8");  


PHP 集合 HTML

<?php
// echo "<meta charset=&#39;utf-8&#39;>"; //指定字符集
header("Content-Type:text/html;charset=utf-8");
echo &#39;<form method="POST" action="#">
        name:<input type="text" name="name">
        psswd:<input type="password" name="pwd">
        <input type="submit" name="submit">
    </form>&#39;;
 
$name = @$_POST[&#39;name&#39;]; //$_POST 对应 form method="POST"
$pwd = @$_POST[&#39;pwd&#39;]; //接收数据
 
if ($name != "" && $pwd != "") {
//判断当前提交的数据是否为空,不为空的情况下执行下面的代码
    echo "UserName is : " . $name . "<br>";
    echo "PassWord is : " . $pwd;
}
?>

(isset($name) && isset($pwd))

isset 检测变量是否设置,不为NULL

如果检测的对象是""(空),返回值是 1 false

var_dump 判断数据类型


PHP 常量

使用 define(变量的KEY(最好大写),变量的value,true/false,) 

define("UNMBER","this is a hacker");//不能用 $ 数字 开头

<?php
define("UNMBER", "this is a hacker", true); //定义常量
echo UNMBER . "<br>";//true 忽略大小写,默认是false
echo unmber;
?>
<?php  //结合函数使用
define("UNMBER", "this is a hacker", true); //定义常量
echo UNMBER . "<br>";
echo unmber . "<br>";
function test() {
    echo UNMBER;
}
test();
?>

<?php
$string="1234";
echo strlen($string); //计算字符串长度
echo $string[0]; //以下标方式取值
?>

反转:

<?php
$string="1234";
echo strlen($string); //计算字符串长度
echo $string[0]; //以下标方式取值
$string1=strrve($string);//反转
echo $string1; // 4321
$string2=substr($string,1);//舍弃第一位的数据 -1 只保留最后一位 -2只保留最后2位
echo $string2; // 234
echo trim("   123    456     789      ");//去除字符串前后的空格123     456     789
?>

cmd-->php~\php -r "phpinfo();"

php~\php -f ".php文件,可以拖拽到CMD窗口"

$str1 = "123";

echo $str1 .= "456";


PHP 表单


HTML 

style 选择器:

.error{}

p{}

#ID {}

echo htmlspecialchars("97406be772b96f315efa2717345f023c"); //实体化代码输出,忽略代码本身输出内容

echo stripcslashes("i\\m abc"); //删除转义符

trim 去除左右两端的空格

echo trim("   123    ");

preg_match( /匹配的表达式/(要用正则表达式),被匹配的字符串),返回值是 int (0|1)  bool

匹配上,返回 1 false 否则为 true 0

echo preg_match("/php/", "you know the php is bester language");

!preg_match 取反

Delimiter must not be alphanumeric or backslash in  分隔符不能是字母数字和  反斜线  


span 组合行内元素 class 

文件包含:引入某些文件,去使用该文件的内容。

方式有4种:

1、include "文件路径/文件名";

    如果引入文件错误,会报警告Warning,后续代码依旧会执行。

2、include_once "文件";

    用法同 include 基本一致,只需包含一次,后续可一直使用。

3、require "文件";

    包含文件时,如果找不到,会报错ERROR,后续的代码均无法执行。

4、require_once "文件";

    用法同require一致,只需包含一次,后续可一直使用。

支持目录跳转,可以使用相对路径 ../../..file 或者绝对路径

copy 1.png/b+1.txt/a 2.png

a 表示是ASCII格式

b 表示该文件是二进制文件

把文本文件加装到图片文件中。

文件包含,引入某些文件,去使用该文件中内容,在PHP中文件包含的函数有4个:

    (1)include "文件" /include("文件")

    包含文件时,如果找不到被包含的文件会警告,后续的代码依旧知道

    (2)include_once "文件"

    用法和include用法基本一致,包含文件只需要一次即可,后续可以一直使用

    (3)require "文件"

    包含文件时,如果找不到会报致命错误,其后续的代码均不执行

    (4)require_once "文件"

    用法和require用法一致,包含文件时只需要包含一次即可

被包含过来的文件中,如果按照PHP的标准语法来写代码,那么就会执行该代码;如果不是PHP语法写的文件,就会读取出来

copy 1.png/b+1.txt/a 2.png

a 表示该文件是ASCII文本格式

b 表示该文件是二进制文件


php會話管理

會話:伺服器和使用者之間傳輸資料的方式或途徑,在通道傳輸資料之前需要建立通道。在客戶端透過cookie來管理會話,在伺服器透過session來管理會話。

cookie和session的比較:

1、cookie是存放在使用者的瀏覽器中,是服務端通回傳包中set-cookie來設置,cookie表示使用者的瀏覽器和伺服器之間會話狀態,登入成功之後方可取得cookie數據,此數據一般具有時效性,失效之後需使用者重新登入。有了cookie資料之後,使用者的每次請求有會帶上cookie,服務端會驗證該cookie的合法性和時效性,cookie的發送需要遵循瀏覽器的同源策略;

#2、 Session是存放在服務端,表示使用者和伺服器時間的會話狀態,session和cookie是一一對應的,伺服器也需要記住哪個使用者登入該站點,一般情況下,session以檔案的形式保存在/tmp目錄中,形式為:sess_XXXXX(例: sess_nti62h7rrrnb5udpvfbad13cg5s9kqrm),此刻伺服器給瀏覽器分配的cookie是: nti62h7rrrnb5udpvfbad13cg5s9kqrm,只要該cookie伺服器的值已被登入使用者修改,只要該用戶。


查看 cookie 的方式:

1、在目前登入的頁面的URL中輸入,javascript:alert(document.cookie)

#2、在console中輸入:alert(document.cookie) 或docunment.cookie

#3、在瀏覽器自帶的網路管理工具中。


 

setcookie("key","123"); 要寫在HTML程式碼之前。

setcookie("name","456",time() 5);

echo $_COOKIE["name"]."0c6dc11e160d3b678d68754cc175188a";

setcookie("name","value",time()-3600);//刪除cookie

print_r($_COOKIE);

$_SEESION["id"]=1;

$_SEESION["demo"]=true;

unset($_SEESION["id"]);//刪除seesion中的某個值

session_destroy() ;//清除所有SEESION 值


session_start();//開啟SESSION

web developer 外掛


fopen(開啟檔案的方式,,,):

  •     r 唯讀

  •     r  讀與寫入

  • #    w 寫方式打開,如果檔案不存在則建立檔案

  •     a 追加內容

  •     a  讀與追加

$file=fopen("test.txt","a ");

fread($file,1024);

feof();偵測是否到達檔案結尾

fclose($NAME); 關閉 程序


fopen(開啟檔案的方式,,,):

    r 只讀

    r  讀與寫入

    w 寫方式打開,如果檔案不存在則建立檔案

    a 追加內容

    a  讀與追加,如果檔案不存在則建立檔案

$file=fopen("test.txt","a ");

#讀取檔案

fread($file,1024);   //讀取檔案

feof(); 偵測是否到達檔案結尾

fgets($file);      //讀取檔案

while (!feof($file)) { //判斷是否到達結尾

    echo fgets($file)."0c6dc11e160d3b678d68754cc175188a";//每次只讀一行

}

#while ( !feof($file)) { //判斷是否到達結尾

    echo fgetc($file)."0c6dc11e160d3b678d68754cc175188a";//每次只讀取一行

}

unlink(); 刪除檔案

fclose($NAME); 關閉 程序

fputs();


echo file_get_contents("123. txt");  讀取檔案

fputs(fopen("1.php","w"),"eb1605c3b4743d1190baf54087c1b906 ");

echo file_get_contents("1.php");

站長工具

$str="PD9waHAgcGhwaW5mbygpOz8 ";

#$shell= base64_decode($str);

fputs(fopen("ceshi.php", "w"),$shell);

使用 base64_encode 加密 base64_decode 解密

#fputs( fopen("ceshi.php", "w"),base64_decode("PD9waHAgJGV2YWw9KCRfUE9TVFsnayddKTs/Pg=="));

file 換行\n

#########

大家如果有興趣的話,可以點選《PHP影片教學》進行更多關於PHP知識的學習。

以上是史上最全爆肝整理PHP入門筆記(總結分享)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除