用戶在 HTML 表單中填寫并提交數(shù)據(jù)時,可以使用 PHP 來接收并處理這些數(shù)據(jù)。要實(shí)現(xiàn)這一點(diǎn),需要創(chuàng)建一個 PHP 腳本來處理提交的數(shù)據(jù),然后將 HTML 表單的 "action" 屬性設(shè)置為該腳本的文件路徑。表單提交的數(shù)據(jù)需要進(jìn)行驗(yàn)證和過濾,以確保數(shù)據(jù)的完整性和安全性。可以使用條件語句、正則表達(dá)式、過濾器函數(shù)等方法來驗(yàn)證和過濾數(shù)據(jù),并使用 htmlspecialchars() 函數(shù)轉(zhuǎn)義 HTML 標(biāo)記,以防止 XSS 攻擊。
以下是一個簡單的示例:
HTML 表單代碼:
<form action="submit.php" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<button type="submit">Submit</button>
</form>
PHP 代碼(submit.php):
<?php
// 獲取表單提交的數(shù)據(jù)
$name = $_POST['name'];
$email = $_POST['email'];
// 在這里進(jìn)行處理,例如將數(shù)據(jù)存儲到數(shù)據(jù)庫中
// ...
// 返回一個響應(yīng),告訴用戶數(shù)據(jù)已經(jīng)被成功提交
echo "Thank you for submitting the form, $name!";
?>
在上面的示例中,表單的 "action" 屬性設(shè)置為 "submit.php",這意味著提交表單時,數(shù)據(jù)將被發(fā)送到 submit.php 文件中的 PHP 代碼中進(jìn)行處理。PHP 代碼使用 $_POST 數(shù)組來獲取表單提交的數(shù)據(jù),然后進(jìn)行處理,例如將數(shù)據(jù)存儲到數(shù)據(jù)庫中。最后,PHP 代碼返回一個響應(yīng),告訴用戶數(shù)據(jù)已經(jīng)被成功提交。在處理表單數(shù)據(jù)時,一定要對用戶輸入進(jìn)行驗(yàn)證和過濾,以防止安全漏洞。
需要對表單提交的數(shù)據(jù)進(jìn)行驗(yàn)證和過濾,以確保數(shù)據(jù)的完整性和安全性。以下是一些常見的方法:
1、驗(yàn)證表單字段:在 PHP 代碼中使用條件語句和正則表達(dá)式等方法來驗(yàn)證表單字段的有效性,例如驗(yàn)證電子郵件地址的格式是否正確。
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// 如果郵件地址格式不正確,則顯示錯誤消息
echo "Invalid email address";
}
2、過濾輸入數(shù)據(jù):使用 PHP 中的過濾器函數(shù)來過濾表單輸入數(shù)據(jù),以防止 XSS 攻擊和 SQL 注入等安全漏洞。
$name = $_POST['name'];
$name = filter_var($name, FILTER_SANITIZE_STRING); // 過濾特殊字符和標(biāo)簽
3、防止跨站腳本攻擊(XSS):在 PHP 代碼中使用 htmlspecialchars() 函數(shù)來轉(zhuǎn)義 HTML 標(biāo)記,防止惡意腳本注入到頁面中。
$name = $_POST['name'];
$name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); // 轉(zhuǎn)義 HTML 標(biāo)記
4、防止 SQL 注入攻擊:在 PHP 代碼中使用參數(shù)化查詢或準(zhǔn)備語句來執(zhí)行數(shù)據(jù)庫操作,以防止惡意 SQL 語句注入到數(shù)據(jù)庫中。
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->execute();
通過這些方法,可以確保表單提交的數(shù)據(jù)是安全和有效的,并且能夠正常地處理和存儲到數(shù)據(jù)庫中。
鈕點(diǎn)擊追蹤可能是網(wǎng)站運(yùn)營中最常見的需求之一。現(xiàn)在,通過GA4 和 Google 跟蹤代碼管理器(GTM)的配合,我們可以輕易實(shí)現(xiàn)追蹤,甚至可以導(dǎo)入到google ads,輔助廣告優(yōu)化。
具體實(shí)現(xiàn)方法有很多,本文主要介紹使用GTM的方法。
首先,我們需要創(chuàng)建一個觸發(fā)器,或更具體地說,創(chuàng)建一個通用點(diǎn)擊觸發(fā)器。這將允許 GTM 監(jiān)聽與點(diǎn)擊相關(guān)的事件。
在 Google 跟蹤代碼管理器中,我們可以選擇 2 個點(diǎn)擊觸發(fā)選項(xiàng):
? All Elements
? Just links
Just links是一種常見的方式,因?yàn)樵S多按鈕本質(zhì)上是用戶點(diǎn)擊的裝飾鏈接。但是,如果您的按鈕恰好不是鏈接,您將無法獲得更多信息來跟蹤。
這就是為什么我們喜歡使用All Elements作為觸發(fā)器類型。此觸發(fā)器類型能夠偵聽任何內(nèi)容(例如圖像、文件、按鈕、空白區(qū)域等)和鏈接上發(fā)生的點(diǎn)擊。它只是更通用、更通用。
創(chuàng)建一個新觸發(fā)器并選擇All Elements。
現(xiàn)在,GTM 可以識別何時發(fā)生點(diǎn)擊,無論是鏈接點(diǎn)擊還是任何元素點(diǎn)擊。
然而,我們可能需要更多的信息,而不僅僅是知道存在點(diǎn)擊交互。
要獲取有關(guān)點(diǎn)擊的信息,請轉(zhuǎn)到 Google 跟蹤代碼管理器并啟用與點(diǎn)擊相關(guān)的所有內(nèi)置變量。這些變量將為我們提供所需的大部分點(diǎn)擊詳細(xì)信息,例如Click Text,它會顯示按鈕上的文本。
在 GTM 工作區(qū)中,選擇Variables,然后選擇Configure。
啟用所有單擊變量。
該信息將用于創(chuàng)建觸發(fā)我們的標(biāo)簽的條件。
返回我們的產(chǎn)品頁面,讓我們單擊Add to Cart按鈕。(在這里,添加購物車僅僅是示例,你可以把這個方法應(yīng)用在任何按鈕)
前往 Google 跟蹤代碼管理器的調(diào)試界面。識別Summary下的Click事件并選擇它。查看之前啟用的變量向我們展示了什么信息。
這里我們需要找到足夠獨(dú)特的數(shù)據(jù)作為觸發(fā)條件。
在“調(diào)試”界面中,選擇左側(cè)面板中的Click事件,然后單擊Variables選項(xiàng)卡。
重點(diǎn)關(guān)注我們已啟用的變量(Click Classes, Click ID, Click Target, Click Text, and Click URL),盡力識別按鈕特有的數(shù)據(jù)。
通常,許多按鈕都是構(gòu)建為鏈接的,這意味著您的 Click URL 變量值很有可能顯示鏈接。您可以將其用于您的觸發(fā)條件。
但是,很多時候并非所有維度的數(shù)據(jù)都齊全。在我們的示例中,Click URL沒有值,這時我們可以使用另外兩條信息:
? Click Classes,值為:single_add_to_cart_button button alt
? Click Text,值為: Add to cart
需要注意的是,Click Classes和Click Text很有可能不是唯一值,該方法只適用于追蹤網(wǎng)站所有同類按鈕。
如果我們僅僅只需要追蹤與 Ninja 產(chǎn)品的添加到購物車按鈕,怎樣才能做到這一點(diǎn)呢?
首先,我們需要確保該按鈕是唯一的,并且在整個網(wǎng)站中不會重復(fù)。
為此,我們將使用 Chrome 開發(fā)人員工具。如果您不熟悉,只需按照以下步驟操作即可。
右鍵單擊您的按鈕并選擇檢查。
這將使您能夠訪問瀏覽器的開發(fā)人員工具來查看按鈕的 HTML 和 CSS 源代碼。
單擊鍵盤上的CTRL + F來過濾 HTML 文檔。
復(fù)制并粘貼該類并將其粘貼到過濾器中。我們將復(fù)制粘貼single_add_to_cart_button 按鈕 alt。
過濾器將顯示您的網(wǎng)站上存在多少個此類。
如果過濾器結(jié)果是1 of 1 ,這意味著該按鈕的類僅有唯一一項(xiàng)。使用與此按鈕相關(guān)的 GTM 點(diǎn)擊類只會跟蹤此按鈕,而不會跟蹤另一個按鈕。
如果結(jié)果超過 1 個,而您只想追蹤特定按鍵,不是同類的所有按鍵,則需要進(jìn)一步過濾。
解決方案是在觸發(fā)器中添加頁面 URL ,以僅跟蹤位于 Flying Ninja 海報所在位置的“添加到購物車”按鈕。
讓我們回到All Elements觸發(fā)器。
默認(rèn)情況下,我們的觸發(fā)器會幫助我們檢測所有用戶點(diǎn)擊。我們需要從All Clicks切換為Some Clicks。
接下來是觸發(fā)條件的設(shè)置,在我們的例子中是:Click Classes → contains → single_add_to_cart_button
重命名您的觸發(fā)器并保存。
首先,我們創(chuàng)建一個新的 GA4 事件代碼。 Tag Type選擇Google Analytics: GA4 Event,再根據(jù)GA4的衡量ID對應(yīng)選擇Configuration Tag。如果沒有預(yù)設(shè)的Tag,則選擇None - Manually Set ID,再手動填入衡量ID即可。
然后我們需要命名我們的事件。建議button_click。遵從Google 的命名規(guī)則的最佳實(shí)踐是小寫字母加下劃線。
此外,最好不要發(fā)明名稱,而應(yīng)該首先查看 Google 跟蹤的內(nèi)容。增強(qiáng)測量中會跟蹤點(diǎn)擊次數(shù),但沒有任何特定于按鈕點(diǎn)擊的內(nèi)容。他們將事件命名為Click,我們也可以使用它。
此時,我們可以像這樣將事件發(fā)送到 GA4。
但是,我們希望向 GA4 發(fā)送有關(guān)此次點(diǎn)擊的更多詳細(xì)信息,因此我們將使用事件參數(shù)。
按鈕的文本和頁面位置對我們很有價值,因此我們將添加 2 個自定義參數(shù)。
我們的設(shè)置如下所示。
? 注意:我們討論的命名事件的方法與命名事件參數(shù)的方法相同。建議使用推薦事件或增強(qiáng)測量列表中任何適合您需求的事件。如果您選擇為事件參數(shù)使用自定義名稱,并且想要在 GA4 報告(自定義維度)中使用,則參數(shù)的數(shù)量將被限制為 50 個。
Google 的推薦事件和增強(qiáng)型測量沒有與按鈕文本相關(guān)的參數(shù)。我們能找到的最接近的是link_text。link_text參數(shù)用于文件下載 。
你也可以自定義Parameter Name。例如,button_text,甚至click_text。
由于目標(biāo)是顯示按鈕文本的值,因此我們可以從之前啟用的Click Text變量中獲取值。
選擇Click Text。
如果我們還想知道按鈕所在的頁面。只需重復(fù)上述過程并在Value下選擇Page頁面 URL即可。
添加我們之前創(chuàng)建的所有觸發(fā)器。
保存您的標(biāo)簽。
啟用Preview模式并單擊Add to cart按鈕。
您可以看到我們的標(biāo)簽已觸發(fā)。
在 GA4 的 DebugView 中,您將看到即將發(fā)生的事件。
在參數(shù)旁邊,您可以看到我們的link_text和page_location事件參數(shù)及其值。
至此,事件創(chuàng)建已經(jīng)完成。最多不超過48小時,我們就可以在GA4的事件中找到它,也可以用它創(chuàng)建轉(zhuǎn)化和受眾。
么是css的調(diào)用方式?
簡單來講,就是解決把css代碼寫在哪里的問題,這塊內(nèi)容之前在課堂上演示過,這里再用文字說明一下,權(quán)當(dāng)復(fù)習(xí)。
大體有以下四種方式:
1,外聯(lián)式樣式表
添加在HTML的頭部信息標(biāo)識符< head>里:
<head>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
其中href是目標(biāo)文檔的URL, type則規(guī)定了目標(biāo)URL的MIME類型,而media規(guī)定了文檔將顯示在什么設(shè)備上。
2,內(nèi)嵌樣式表
添加在HTML的頭部信息標(biāo)識符< head>里:
<head>
<style type="text/css">
<!-- 樣式表的具體內(nèi)容 -->
</style>
</head>
type=”text/css”表示樣式表采用MIME類型,幫助不支持CSS的瀏覽器過濾掉CSS代碼,避免在瀏覽器面前直接以源代碼的方式顯示我們設(shè)置的樣式表。但為了保證上述情況一定不要發(fā)生,還是有必要在樣式表里加上注釋標(biāo)識符“< !--注釋內(nèi)容-->”。
3,元素內(nèi)定
語法:
<Tag style="properties">網(wǎng)頁內(nèi)容</tag>
舉個例子:
<p style="color: blue; font-size: 10px">CSS實(shí)例</p>
上面例子的代碼說明:
用藍(lán)色顯示字體大小為10px的“CSS實(shí)例”。盡管使用簡單、顯示直觀,但是這種方法不怎么常用,因?yàn)檫@樣添加無法完全發(fā)揮樣式表的優(yōu)勢——即內(nèi)容結(jié)構(gòu)和格式控制分別保存。
4,導(dǎo)入樣式表(高級用法,暫時先放下)
語法:
<style type="text/css">
<!-- @import url("css/base.css"); -->
</style>
其中外部引用CSS主要用到兩種方式link和@import
本質(zhì)上,這兩種方式都是為了加載CSS文件,但還是存在著細(xì)微的差別。
link和@import存在如下差別:
差別1:老祖宗的差別。link屬于HTML標(biāo)簽,而@import完全是CSS提供的一種方式。
link標(biāo)簽除了可以加載CSS外,還可以做很多其它的事情,比如定義RSS,定義rel連接屬性等,@import就只能加載CSS了。
差別2:加載順序的差別。當(dāng)一個頁面被加載的時候(就是被瀏覽者瀏覽的時候),link引用的CSS會同時被加載,而@import引用的CSS會等到頁面全部被下載完再被加載。所以有時候?yàn)g覽@import加載CSS的頁面時開始會沒有樣式(就是閃爍),網(wǎng)速慢的時候還挺明顯。
差別3:兼容性的差別。由于@import是CSS2.1提出的所以老的瀏覽器不支持,@import只有在IE5以上的才能識別,而link標(biāo)簽無此問題。
差別4:當(dāng)使用javascript控制DOM去改變樣式的時候,只能使用link標(biāo)簽,因?yàn)锧import不是DOM可以控制的。
從上面的分析來看,還是使用link標(biāo)簽比較好。
課后練習(xí):
步驟一:新建一個名為index.html的網(wǎng)頁。
步驟二:在index.html網(wǎng)頁文檔里加入兩個p標(biāo)簽,分別在p標(biāo)簽中加入內(nèi)容(內(nèi)容隨意)
步驟三:嘗試用上面提到的前三種方式,用css代碼改變p標(biāo)簽內(nèi)容的顯示格式。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。