2010-10-18 58 views
2

你到處都能看到它們。就像在博客和網站上顯示的twitter和facebook按鈕一樣,它們顯示許多「推文」或「喜歡」。 我需要做的就是根據兩個變量(用戶名和ID)從我的MySQL數據庫中顯示一個數字。以某種方式加密變量可能會很有用,以便用戶不能只更改徽章的代碼並顯示其他用戶的號碼。 但更重要的是,我只需要知道如何使用HTML代碼,就像您在社交網絡徽章中找到的一樣,並與我的服務器上的PHP腳本進行交談,該代碼將根據徽章中的變量計算數據庫中的數字。你如何製作社交網絡徽章?

任何線索從哪裏開始?

編輯:我不是在談論那種徽章,就像你在stackoverflow上找到的那樣,我的意思是其他網站可以粘貼在你的博客/網站上。像Digg可以讓你顯示你的網站已被挖掘7000次,等等。

+0

最好的方法是用另一個隨機值將用戶名加密成字符串,並在服務器腳本上解密。當然,如果沒有將徽章的引用域綁定到您的服務器應用程序,您不能通過任何方式阻止任何人在另一臺服務器上使用它。 – woodscreative 2010-10-18 22:50:29

回答

5

你可能希望查找用於PHP和相關教程的GD庫。基本上,所有這些徽章由靜態圖片組成,其中一些動態文本插入頂部,通常由用戶名和數字組成(喜歡,推文等)。

對於HTML代碼,你會做類似的東西:

<img src="http://www.yourserver.com/yourscript.php?username=miki&id=1337" /> 

這將發送一個HTTP GET請求,你的腳本,使其執行。然後,您的腳本可以與數據庫通信,獲取用戶的信息,使用GD將該文本插入到模板中,然後使用正確的MIME類型和內容將其返回給瀏覽器。

2

你說的基本上是調用遠程腳本。

我認爲你的意思是這樣 - 你正在查看你的個人資料。例如,您有一個承諾顯示您擁有的點數的小部件。 你提供了一個「代碼」按鈕,如youtube embed或facebook「like」 用戶點擊此按鈕,獲取一段代碼,並且可以將其粘貼到互聯網上的任何地方,代碼將生成一個圖標或據推測是用戶名和他們的點。

首先,您可以通過多種方式來做到這一點。在我看來,最具成本效益的是在更新時在服務器上生成用戶按鈕 - 就像說你的觀點意味着「收到你的文章的贊成數量」,因此它將是一個整數值。每次你豎起大拇指時,你都會重新緩存按鈕並將其寫入一個純文本文件。如果你很好,你可以將它寫入圖像並將其壓平成jpg或gif。如果你不知道怎麼做,你可以把它寫到html中,並保存爲用戶特定的「slug」,如md5(username)。'。html' - 每次調用服務器時,你都不會使用冗餘查詢和帳戶查找功能不需要在帶寬上進行堆疊。您只能提供優化的圖像或html文件。

第二 - 你可以給用戶一個帶有html的iframe。這通常是Facebook如何「喜歡」爲不使用fbml方法的人做的。問題是,許多網站將iframe視爲潛在的xss攻擊,並將其排除。因此,爲了使用iframe,您需要控制域名,如果意圖分享您的個人資料,這可能會破壞您的請求的目的。第三,你可以在你的服務器上調用一個js文件,該文件對數據庫進行ajax調用並提供結果。這也很有可能會被視爲xss攻擊,你甚至可能不會多加考慮。

我提到了iframe和js方法,以防您爲其他運行自己站點的人提供選項。網站所有者使用「like」這種方式來顯示他們的域名被多少次「喜歡」等等。這些人控制了域名,因此iframe和js方法是合乎邏輯的。

所以 - 這個答案可能沒有太多的原始代碼給你,但它應該可以幫助你開始。 我會做圖像方法,因爲它更安全。你會給用戶一個圖像標籤,並在src屬性中使用他們的slug。他們可以將其粘貼到任何位置,並且無法在圖像中重新編寫數字。大多數論壇和地方,你可以發佈到其他人的網站允許圖像。只要做一個谷歌搜索繪製圖像與PHP,以及使用imagemagick庫合併文本和圖像。

+0

- 正是miki所說的,除非我實際上將它壓平成一個圖像,所以你不要在src中調用一個php文件。很多網站會直接從你的帖子中提取出來。 – 2010-10-18 23:34:14

+0

我提供了一個基本的例子,但是當你說把它壓平成圖像會更好時,你是絕對正確的。 用我的描述,如果很多用戶使用這個特性,那麼你顯然需要一些緩存,把它保存到一個圖像中,以免打到數據庫並在GD上使用CPU時間。 – 2010-10-18 23:41:51