2016-12-01 50 views
0

我會盡力就什麼,我要完成的是儘可能簡短:如何爲每個(唯一)重定向URL生成PHP表單?

  • 比方說,我通過短信發送消息&電子郵件至5000次接觸(但我想這個工作甚至只有10或1000.000,無論音量如何)。 在這封郵件中,我正在某個特別的地方宣傳一場類似於舉辦晚宴的活動。每個收到此消息的人都會被邀請。每條消息都包含一個URL,鏈接到專用於該事件的登錄頁面。這個頁面是響應式的,它打開一個漂亮的圖片+一些文本,基本信息和一個PHP表格來回答邀請。

  • 此表單有幾個字段。在這個例子中,我們假設:

    你要參加派對嗎? (回答選擇:「是」或「不,謝謝」)。 你會陪同? (回答選擇:「只有我」或「+1」,「+2」)。 還有什麼你想讓我們知道的嗎? (免費打字字段)。 [提交]

  • 在發送的消息中的每個網址鏈接實際上UNIQUE重定向,每一個屬於達到5000個觸頭1。 每個聯繫人在SMS和電子郵件上都收到了他自己的鏈接。 所有這一切意味着在我用來發送消息的數據庫中,每個聯繫人都被歸爲重定向/短URL。 這樣,我可以很好地知道誰甚至剛剛打開了登錄頁面,而無需要求開瓶器填寫任何信息。 我只知道,例如:

    Mr. Skywalker is http://website.com/dinnerparty/01 
    Ms. Organa is http://website.com/dinnerparty/02 
    Mr. Solo is http://website.com/dinnerparty/1138 
    Mr. Calrissian is http://website.com/dinnerparty/4469 
    
    And they all redirect to http://website.com/dinnerparty/ 
    

到目前爲止好,對不對?! 現在,這裏的棘手的部分...

  • 我需要你們幫我,是如何「鏈接,並鎖定」 PHP的形式在頁面上的這些獨特的URL。 基本上,當Calrissian先生點擊/ 4469時,我希望他能點擊「是」(我來參加聚會),「+2」,[提交]。

一旦他提交,如果他刷新頁面,他不能再提交表格。相反,他看到一條信息,如「您的回答已收到,謝謝!」 該頁面對於聯繫人列表中的每個人都基本相同,但是因爲它是HIS鏈接,所以顯示的是他的HIS表單。

  • 之後,我需要能夠檢索這些信息(他所做的選擇)。

我知道這可以做到,因爲我之前遇到過這種過程。我只是不知道如何重現它!我不是一個程序員,只是一個嘗試自己學習的小菜鳥。

到目前爲止,我認爲我必須以某種方式爲每個5000個表單提供和標識,並且我只是猜測說'這個URL =此表單'的信息將包含在URL中,它看起來像' http://website.com/dinnerparty-356a192b7913b04c54574d18c28d46e6395428ab'

這一切都響鈴嗎?我到目前爲止的查詢(使用關鍵字「PHP」&「URL」)只是教會了我如何使用GET數組將信息從聯繫表單傳輸到另一個頁面的內容,但這不是我所需要的。

所以,如果你有任何線索,關於如何實現這一點的任何線索,我會很感激!

感謝您的閱讀,任何幫助將不勝感激!

PS:抱歉壞英語;)第一

回答

0

第一件事,不使用增量的ID。這很容易出現所謂的序列號攻擊。改用UUID。否則,訪客可以輸入下一個/上一個/隨機ID,也可能輸入另一個訪客的RSVP。這對你來說是個壞消息,但是對攻擊者來說卻很好(他們會爲lulz做點什麼......這可能會讓受害者大吃一頓,例如購買不必要的晚餐)。請參閱https://www.youtube.com/watch?v=CgJudU_jlZ8https://www.youtube.com/watch?v=gocwRvLhDf8以獲得一些很好的解釋。其次,您應該在URL中維護UUID,例如http://website.com/guest/123e4567-e89b-12d3-a456-426655440000 - 使用腳本或類似.htaccess之類的東西,您可以獲取UUID並將其傳遞給單個腳本。例如:

RewriteEngine On 
RewriteRule ^/guest/(.*)$ /my-form.php?id=$1 [L] 

從那裏,在你我的-form.php的,你可以檢查,看看是否存在$_GET['id'],然後驗證它(它已存在先前提交等?)。如果驗證通過,您可以像往常一樣顯示錶單併發布到自我(使用URL中的UUID,仍然)。提交後,您再次驗證ID並處理提交。

然後,在後續的頁面加載中,您可以拒絕表單再次提交......或者相反,允許用戶編輯他們的回覆。也許他們不再是+2 ......但用例取決於你,有些RSVP在X日期之後不允許編輯......所以記住這一點。

-

現在,討論羣發短信/電子郵件服務,你想擁有的用戶數據庫了。爲了發送獨特的鏈接,你只需要做所謂的「郵件合併」(或合併標籤等)......基本上,你會在通訊/消息中的URL如下:http://website.com/guest/[guest_id]和mailmerge將用數據庫中的UUID替換[guest_id]

有很多郵件/短信羣發郵件服務那裏,所以我不需要列出任何。選擇一個具有API並符合您的要求的人。

希望這會有所幫助。祝你好運:)