PHP與前端協作模式的理解(和PHP基礎)
前言-關于PHP
剛學完PHP那時候就想寫篇文,但是無奈我那可憐的PHP學的實在是拿不出手(實際上我的PHP學了三周才勉強學完)那些天考試又多,難得今天有空,就把筆記拿出來扒一遍熟悉熟悉,把它寫出來吧,
有幾個部分是基于對基礎JavaScript與PHP的類比來進行說明的,如果您還沒有進行過對基礎JavaScript語法的學習,可能閱讀會有些許障礙 :·( 不過其他部分應該不會有問題,
@[TOC](文章目錄)
一、寫在甚麼地方?怎么配合其他代碼?
1.在PHP檔案里寫PHP
放在專門的后綴為“.php”的檔案里,
2.在HTML檔案里寫PHP
或者你可以把它放在你的前端HTML檔案中但是你必須把它放在“<? ?>”內部,只有那里面能寫PHP代碼,其他的各寫各的,互不干擾,您只要記住php要寫在這里面就好了,
像是這樣:
<?php
//連接資料庫
$link = mysql_connect("localhost", "username", "password")
or die("Could not connect: " . mysql_error());
print ("Connected successfully");
//選擇資料庫
mysql_select_db('dbname', $link) or die ('Can\'t use db : ' . mysql_error());
//進行你想要的操作
$a =123;
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>發現I Do一刻</title>
<link href="css/public.css" rel="stylesheet" type="text/css">
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
</head>
<body>
<?php
echo $a;
?>
</body>
</html>
3.在PHP檔案里寫HTML
不太一樣的是在PHP檔案里對HTML框架進行填充時,要采用如下格式:
‘HTML內容’ . PHP內容. 'HTML’內容‘
看著不太好明白,實際上就是HTML部分作為字串的形式引入PHP檔案中,
PHP檔案也能決議html代碼,這些html代碼會跟隨著PHP檔案在服務端執行,但是要填充HTML框架,HTML語法需要作為字串和php陳述句進行字串拼接,用php拿來的資料對HTML進行填充,在PHP中,字串拼接使用小數點而不是加號,
二、基礎的PHP語法
1.先寫個HelloWorld吧!
個人覺得其實與JavaScript的語言結構相似度很高:
先看看JS的HelloWorld:
//JS書寫
<script>
let greeting = 'HelloWorld!';
console.log('greeting');
</script>
再看PHP的HelloWorld:
<?php
$greeting = 'HelloWorld';
echo $greeting;
?>
可以了解到的是PHP是使用“echo”來輸出的;
宣告變數時有 在變數名前直接加“$” 即可宣告的方法;
PHP語言必須被包裹在“<?php”
2.PHP 的 for
for($i = 0; $i < 10; $i++) {
echo '<br> . 拼接字串時,加號用小數點代替';
echo '<br>';
## 3.PHP 的 陣列 PHP中兩種陣列:
//這是一個具有三個陣列元素,使用array函式生成的普通陣列;
$陣列名 = array('ele1', 'ele2','ele3');
echo $陣列名[索引號]; //輸出陣列中某個元素;
print_r($陣列名); //輸出一整個陣列;
//這是一個具有三個陣列元素,使用array函式生成的索引陣列;
$陣列名 = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
echo $陣列名['key名']; //輸出陣列中某個key對應的value;
print_r($陣列名); //輸出一整個陣列;
以上是兩種常用的陣列型別,再此基礎上還可拓展出二維陣列、三維陣列、再向更高維度的陣列用的比較少了,
陣列遍歷
從下面開始要涉及到“$ key 和 $ value”,這兩個變數是為了好理解才命名為"key"和“value”的,陣列內的key會經過$ key變數,而value會經過$ value變數,您盡可以把它們換成亂七八糟的名字,只要在那個位置有這么兩個變數,回圈就會知道該干什么,
JS中的回圈遍歷陣列提取陣列內容的方法在PHP中依然存在使用for回圈,或者foreach來進行,
count()函式用在for遍歷中,可以取到陣列的長度,
//for回圈遍歷陣列,count($陣列名)表示取到該陣列的元素個數;
for($i = 0; $i < count($陣列名); $i++) {
echo $陣列名[$i];
}
foreach遍歷:
foreach ($陣列名 as $value) //方法一;
foreach($陣列名 as $key => $value) //方法二;
第一種foreach方法遍歷陣列的原理:
在遍歷進行至每個索引單元(陣列元素)時,都將這個索引單元的value(即鍵對應的值)賦值給變數$ value,并且陣列內部的指標向前移一步來進入下一個索引單元,
第二種foreach方法遍歷陣列的原理:
在遍歷進行至每個索引單元(陣列元素)時,都將這個索引單元的key(即鍵名)賦值給變數$ key(這樣說很難理解,其實$ key完全可以改成“$i”,相當于for回圈中的 i),并且陣列內部的指標向前移一步來進入下一個索引單元,
兩種方法實際上一個是利用鍵來遍歷,一個利用值來遍歷,
foreach輸出索引陣列的內容:
foreach($陣列名 as $value) {
each $value."<br>";
}
//陣列的各個key對應的值value會被輸出;
三、接收、發送提交資料
1.$_GET接收來自前端的資料
PHP檔案中預定義的超全域變數$_GET用于收集使用get法提交的表單的資料,
詳細如下:

(拿PS畫的爛圖)
GET法提交資料的本質是在url之后拼接上陣列的"?key=value",上面圖里action屬性進行的操作就是提供拼接的url有些時候表單的name屬性是value的值,
url發送到服務器,指定的php檔案開始接收資料:
歡迎 <?php echo $_GET["fname"]; ?>!<br>
你的年齡是 <?php echo $_GET["age"]; ?> 歲,
get法弊端1:就是拼接url在瀏覽器上部是可視的,這可能會造成隱私泄露,您的密碼說不定會被放在現在的url里展覽,安全性比較差勁,
get法弊端2:是資料如果太長,url會很長,可讀性很差,部分瀏覽器會限定url的長度,服務器也會忽略太長的url;另外url太長測驗起來也比較麻煩,
1.$_POST接收來自前端的資料
PHP檔案中預定義的超全域變數$_POST用于收集使用post法提交的表單的資料,也可以接收檔案,
提醒一下,您必須要在表單的method屬性中指明您要使用post方法來提交資料,表單才會用post提交,默認是使用get法提交,并且用post提交時您必須為表單添加enctype屬性,因為使用的是包含檔案上傳控制元件的表單,enctype的值必須為enctype=“multipart/form-data”,
步驟與 $ _GET法提交相似,區別似乎主要體現在對于URL的處理上,使用$ _POST接收的url十分簡潔,直接拼接的是目標php檔案的名字,
http://www.runoob.com/welcome.php
3.$_FILES接收POST法提交的檔案
PHP檔案中預定義的全域變數$_FILES包含了上傳的檔案的所有資訊,
用于收集使用post法提交的檔案,如果為單個檔案上傳,那么 $_FILES 為二維陣列;如果為多個檔案上傳,那么 $_FILES 為三維陣列
因為使用post提交,所以要確保檔案上傳表單的屬性有enctype并且因為使用的是包含檔案上傳控制元件的表單,值應當是 enctype=“multipart/form-data”,
url傳到服務器,用于接受檔案的php檔案接收檔案:
“print_r”是必須的,否則無法接收,
<?php
echo "<pre>";
print_r($_FILES);
?>
檔案上傳到服務器后會先存到一個臨時目錄下,這個臨時目錄會在PHP檔案執行完畢后銷毀,在銷毀前被移出該目錄的檔案才會被存入服務器的盤內,
移出:
move_uploaded_file(檔案名 , 移動至路徑);
總結
碼了一個下午…
您要是覺得還可以就點個贊吧 :·)
感覺寫的還是有點粗略,因為我對PHP并沒有太多研究,我舉的例子有點以偏概全的感覺,以后有計劃把HTML里寫PHP獲取HTML頁面資訊的那塊仔細說說,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/277344.html
標籤:其他
