基礎(chǔ)語(yǔ)法復(fù)習(xí)——PHP

What's PHP ?

Hypertext Preprocessor(超文本預(yù)處理器),是一種腳本語(yǔ)言唆迁,PHP腳本在服務(wù)器上運(yùn)行灌侣,結(jié)果以純HTML形式返回給瀏覽器。
PHP可以對(duì)服務(wù)器上的文件進(jìn)行操作研儒,也可以對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作。

關(guān)于運(yùn)行的服務(wù)器独令,可以考慮一下phpStudy呀~配置簡(jiǎn)單易上手

PHP基礎(chǔ)語(yǔ)法

<?php   //這是開(kāi)頭
//這是單行注釋

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

/* 這是
多行注釋*/

echo "這是用echo直接輸出,","可以輸出多個(gè)字符串,","比print看起來(lái)優(yōu)秀一點(diǎn)","<br>";
print "這是用print直接輸出端朵,只能輸出一個(gè)字符串";

//這是結(jié)尾 ?> 

變量及數(shù)據(jù)類型

  • 變量名前需帶$符號(hào);
  • 變量名必須用字母或者下劃線開(kāi)頭燃箭;
  • 變量名區(qū)分大小寫冲呢、不能包含空格;
  • 沒(méi)有聲明的變量招狸,當(dāng)?shù)谝淮伪毁x值時(shí)敬拓,被創(chuàng)建。

變量作用域

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

$x = 9; //這是一個(gè)全局變量
echo "全局變量x的值為:$x";
echo "<br>";
echo "<br>";

function demo(){
    $y = 12;  //這是一個(gè)局部變量
    echo "局部變量y的值為:$y";
    echo "<br>";

    global $x;  //使用global裙戏,在函數(shù)內(nèi)引用全局變量
    $z = $x + $y;
    echo "全局變量x和局部變量y的和為:$z";
    echo "<br>";

    $m = $GLOBALS['x'] + 2 * $y;  //也可以用$GLOBALS[]數(shù)組的形式乘凸,引用全局變量
    echo "第二種引用全局變量方式的結(jié)果為:$m";
    echo "<br>";

}

function demo2(){
    static $n = 1;  //這是一個(gè)加了static關(guān)鍵字的局部變量
    echo "加了static關(guān)鍵字的局部變量第","$n","次輸出是:$n";
    $n++;
    echo "<br>";
}

demo();
echo "<br>";
demo();
echo '<p style="color:red">由此可見(jiàn),當(dāng)一個(gè)函數(shù)完成時(shí)累榜,它的所有變量一般都會(huì)被刪除营勤。</p>';

demo2();
demo2();
demo2();
echo '<p style="color:red">由此可見(jiàn)灵嫌,加了static的局部變量,每次調(diào)用該函數(shù)時(shí)葛作,會(huì)保留前一次被調(diào)用結(jié)束時(shí)的值寿羞。</p>';
?>

效果如下:

PHP將所有全局變量存儲(chǔ)在數(shù)組$GLOBALS[index]的數(shù)組中,index保存變量的名稱赂蠢。

PHP對(duì)象類似JAVA對(duì)象绪穆,看一眼就行。

常量

define虱岂,類似C語(yǔ)言中的define玖院。語(yǔ)法:
bool define(string $name,mixed $value[, bool $case_insensitive = false])
參數(shù):
name,參數(shù)名第岖,必選难菌;
value,參數(shù)值绍傲,必選扔傅;
case_insensitive:大小寫敏感耍共,默認(rèn)為false大小寫敏感烫饼,可選。

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

define("a","Fine");  //默認(rèn)试读,大小寫敏感
define("B","Fine",false);  //設(shè)置為false杠纵,大小寫敏感
define("C","Fine",true);  //設(shè)置為true,大小寫不敏感

echo A,"<br>";
echo a,"<br>";

echo B,"<br>";
echo b,"<br>";

echo C,"<br>";
echo c;
?>

運(yùn)行結(jié)果:

運(yùn)算符

算數(shù)運(yùn)算符钩骇、賦值運(yùn)算符比藻、遞增/遞減運(yùn)算符、比較運(yùn)算符倘屹、邏輯運(yùn)算符银亲、三元運(yùn)算符與C語(yǔ)言類似。

數(shù)組運(yùn)算符
example:
<?php
$x = array('a' =>"cat", 'b' =>"orange", 'm' =>"fine");
$p = array('a' =>"cat", 'b' =>"orange", 'm' =>"fine");
$y = array('c' =>"rabbit", 'd' =>"white", 'm' =>"fine");
$q = array('c' =>"rabbit",'m' =>"fine", 'd' =>"white");

$z = $x + $y; //合并x纽匙、y兩個(gè)數(shù)組务蝠;


//var_dump()函數(shù)用于輸出表達(dá)式的類型和值
var_dump($z);  //輸出合并后的數(shù)組z,做并集
echo "<br>","<br>";
var_dump($x == $y);  //比較兩個(gè)數(shù)組烛缔,如果所有鍵/值對(duì)相等馏段,不管順序是否相同,就返回true
echo "<br>";
var_dump($y ==$q);
echo "<br>","<br>";
var_dump($x === $p);  //比較兩個(gè)數(shù)組践瓷,鍵/值對(duì)和順序完全相同才返回true
echo "<br>";
var_dump($x === $y);
echo "<br>","<br>";
var_dump($x != $y);  //比較兩個(gè)數(shù)組院喜,如果不相等,則返回true
echo "<br>";
var_dump($x <> $y);
echo "<br>";
var_dump($x !== $y);

?>

運(yùn)行結(jié)果:

超全局變量

這是PHP 4.1.0之后系統(tǒng)中自帶的變量晕翠,在一個(gè)腳本的全部作用域中都可用喷舀。

$GLOBALS

超級(jí)全局變量組。
在前面變量作用域中有提到,這里做一個(gè)簡(jiǎn)單的演示元咙。

<?php
$x = "Flexible";
$y = "Cat";

function globalsDemo(){
    $GLOBALS['z'] = $GLOBALS['x'].$GLOBALS['y']; //z在這里也被定義為全局變量
    echo $z; //這樣是不行的梯影,因?yàn)閦是全局變量
    echo $GLOBALS['z'];
}

globalsDemo();
echo "<br>";
echo $z; //在函數(shù)外直接用$z是可以的
?>

運(yùn)行結(jié)果:
$_SERVER

包含了服務(wù)器、當(dāng)前腳本等部分信息庶香,是數(shù)組甲棍,數(shù)組中的項(xiàng)目由Web服務(wù)器創(chuàng)建。
示例:

<?php
echo $_SERVER['PHP_SELF'], "<br>"; //返回當(dāng)前腳本的相對(duì)地址
echo $_SERVER['SCRIPT_FILENAME'], "<br>";  //返回當(dāng)前腳本的絕對(duì)地址
echo $_SERVER['SERVER_ADDR'], "<br>";  //返回當(dāng)前腳本所在服務(wù)器的IP地址
echo $_SERVER['SERVER_NAME'], "<br>";  //返回當(dāng)前運(yùn)行腳本所在服務(wù)器的主機(jī)名
echo $_SERVER['SERVER_SOFTWARE'], "<br>";  //返回服務(wù)器表示字符串
?>

運(yùn)行結(jié)果:

更多元素及其含義可以需要時(shí)找度娘赶掖。

$_REQUEST

收集HTML表單提交的數(shù)據(jù)感猛,不論method為POST還是GET都可以。奢赂。
示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>requestDemo</title>
</head>
<body>
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF']?>">
        <!--action的值表示陪白,在當(dāng)前腳本頁(yè)面顯示結(jié)果-->

        Lover:<input type="text" name="someone">
        <input type="submit">
    </form>

    <?php
    @$name = htmlspecialchars($_REQUEST['someone']); 
    echo "My lover is ".$name;
    ?>

</body>
</html>

運(yùn)行結(jié)果:
$_POST

收集來(lái)自表單中method="post"的表單值,用POST方法的表單發(fā)送的值不會(huì)在瀏覽器的地址欄顯示膳灶,并且發(fā)送的信息量也無(wú)限制咱士。
示例:

example8.php:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>postDemo</title>
</head>
<body>
    <form action="Hey.php" method="post">
        Who are you?<input type="text" name="fname">
        <input type="submit" value="OK">
    </form>
</body>
</html>
Hey.php:
<?php
    echo "Hey ".$_POST["fname"].", you are soooo pretty~";
?>

運(yùn)行結(jié)果:
$_GET

收集來(lái)自表單中method="get"的表單值,用GET方法的表單發(fā)送的值會(huì)在瀏覽器的地址欄顯示轧钓,并且發(fā)送的信息不能超過(guò)2000個(gè)字符序厉。
示例代碼僅將上一個(gè)示例中的POST改成GET。

運(yùn)行結(jié)果:
$_FILES

用于從客戶端向遠(yuǎn)程服務(wù)器上傳文件毕箍。語(yǔ)法:

$_FILES["file"]["name"]  //客戶端上傳文件的名稱
$_FILES["file"]["type"]  //所上傳的文件類型
$_FILES["file"]["size"]  //所上傳的文件大小
$_FILES["file"]["temp_name"]  //上傳的文件保存在服務(wù)器中的臨時(shí)文件名弛房,無(wú)法用putenv()方法設(shè)置
$_FILES["file"]["error"]  //和該文件上傳相關(guān)的錯(cuò)誤代碼
  • 在表單中需要上傳文件時(shí),用enctype屬性規(guī)定提交表單時(shí)要使用的內(nèi)容類型而柑。文件內(nèi)容屬于二進(jìn)制數(shù)據(jù)文捶,所以需要使用multpart/form-data。
  • 允許用戶上傳文件是由很大的安全風(fēng)險(xiǎn)的媒咳,在編寫上傳腳本時(shí)最好加上文件的上傳限制粹排。

具體可以扒CTF中的文件上傳類題型源碼來(lái)看,本胖這里就暫時(shí)不寫了涩澡,還不是因?yàn)閼?/del>顽耳。

$_ENV

存儲(chǔ)了一些系統(tǒng)的環(huán)境變量,使用<?php print_r($_ENV); ?>查看筏养,但是因?yàn)闋砍兜綄?shí)際的操作系統(tǒng)斧抱,所以一般情況下不可能讓你查看它的完整列表。

  • 如果非要看的話渐溶,那么辉浦,打開(kāi)php.ini
  • 改成EGPCS,就OK了茎辐。

講道理這樣是沒(méi)問(wèn)題的宪郊,但是我也不知道為什么我的虛擬機(jī)里不行掂恕,慫的不敢在本機(jī)上瞎折騰,各位看官們了解一下就好弛槐。

$_COOKIE

cookie一般用來(lái)識(shí)別用戶懊亡,使用setcookie()創(chuàng)建cookie,語(yǔ)法:
setcookie(name, value, expire, path, domain)
$_COOKIE變量就是用來(lái)獲取cookie的值的乎串。
刪除cookie時(shí)店枣,將過(guò)期日期變成過(guò)去的時(shí)間點(diǎn)就行啦。

這一塊的示例叹誉,回(隨)頭(緣)再補(bǔ)吧

$_SESSION

session變量用來(lái)臨時(shí)存儲(chǔ)關(guān)于單一用戶會(huì)話的信息鸯两,或者更改用戶會(huì)話的設(shè)置。
session工作機(jī)制:為每位用戶創(chuàng)建一個(gè)唯一的UID长豁,并根據(jù)這個(gè)UID來(lái)存儲(chǔ)變量钧唐。UID存儲(chǔ)在cookie中,或者通過(guò)URL進(jìn)行傳導(dǎo)匠襟。

  • 在php中使用session必須在<html>標(biāo)簽前加上<?php session_start(); ?>钝侠,這樣就會(huì)向服務(wù)器注冊(cè)用戶的會(huì)話,為用戶會(huì)話分配一個(gè)UID酸舍;
  • 存儲(chǔ)和獲取session變量的值都是使用$_SESSION變量完成帅韧,_SESSION['UID']
  • 銷毀session時(shí)父腕,可以用unset()釋放指定的session變量弱匪,也可以用session_destroy()函數(shù)徹底銷毀session青瀑。
unset($_SESSION['UID'])璧亮;  //釋放制定的session變量
session_destroy(); //徹底銷毀所有的session

包含

倆函數(shù)斥难,include和reqire枝嘶,語(yǔ)法:
include 'filename'; require 'filename';
區(qū)別:

  • include一般放在程序的流程控制中,當(dāng)程序執(zhí)行遇到時(shí)才會(huì)引用哑诊;require一般放在PHP文件的最前面群扶,在程序執(zhí)行前就導(dǎo)入要引用的文件。
  • include引入的文件有錯(cuò)誤時(shí)镀裤,不會(huì)中斷竞阐,繼續(xù)執(zhí)行,返回一個(gè)警告暑劝;require引入的文件有錯(cuò)誤時(shí)骆莹,執(zhí)行終端,返回一個(gè)錯(cuò)誤担猛。

今天的白小胖也很優(yōu)秀(≧?≦)/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末幕垦,一起剝皮案震驚了整個(gè)濱河市丢氢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌先改,老刑警劉巖疚察,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異仇奶,居然都是意外死亡貌嫡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門该溯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)衅枫,“玉大人,你說(shuō)我怎么就攤上這事朗伶∠伊茫” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵论皆,是天一觀的道長(zhǎng)益楼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)点晴,這世上最難降的妖魔是什么感凤? 我笑而不...
    開(kāi)封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮粒督,結(jié)果婚禮上陪竿,老公的妹妹穿的比我還像新娘。我一直安慰自己屠橄,他們只是感情好族跛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著锐墙,像睡著了一般礁哄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溪北,一...
    開(kāi)封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天桐绒,我揣著相機(jī)與錄音,去河邊找鬼之拨。 笑死茉继,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚀乔。 我是一名探鬼主播烁竭,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼乙墙!你這毒婦竟也來(lái)了颖变?” 一聲冷哼從身側(cè)響起生均,我...
    開(kāi)封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎腥刹,沒(méi)想到半個(gè)月后马胧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衔峰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年佩脊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垫卤。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡威彰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出穴肘,到底是詐尸還是另有隱情歇盼,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布评抚,位于F島的核電站豹缀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏慨代。R本人自食惡果不足惜邢笙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侍匙。 院中可真熱鬧氮惯,春花似錦、人聲如沸想暗。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)江滨。三九已至铛纬,卻和暖如春厌均,著一層夾襖步出監(jiān)牢的瞬間唬滑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工棺弊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晶密,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓模她,卻偏偏與公主長(zhǎng)得像稻艰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侈净,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • PHP語(yǔ)言是一門后端語(yǔ)言(Hypertext Preprocessor尊勿,中文名:“超文本預(yù)處理器”)是一種通用開(kāi)源...
    PHPer_閱讀 470評(píng)論 1 2
  • 第3章學(xué)習(xí)了如何編寫JavaScript代碼來(lái)動(dòng)態(tài)修改網(wǎng)頁(yè)內(nèi)容僧凤。 雖然JavaScript功能很強(qiáng)大,可以修改網(wǎng)頁(yè)...
    學(xué)哥量化交易學(xué)習(xí)閱讀 807評(píng)論 1 2
  • 1.PHP(外文名:PHP: Hypertext Preprocessor元扔,中文名:“超文本預(yù)處理器”)是一種通用...
    黃花菜已涼閱讀 3,538評(píng)論 1 6
  • 轉(zhuǎn)自陳明乾的博客躯保,可能有一定更新。 轉(zhuǎn)原文聲明:原創(chuàng)作品澎语,允許轉(zhuǎn)載途事,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章 原始出處 、...
    C86guli閱讀 4,675評(píng)論 6 72
  • 你的喜好凸顯了你的性格擅羞,有的人喜歡喝茶尸变,性格如茶般甘醇,寧?kù)o减俏; 有的人喜歡書法召烂,性格如筆尖的字一般,行云流水娃承,有棱...
    愛(ài)雪琪琪閱讀 326評(píng)論 0 1