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