首頁  >  文章  >  後端開發  >  帶有同步令牌的表單工具包

帶有同步令牌的表單工具包

WBOY
WBOY原創
2016-07-25 09:09:56909瀏覽
話說深圳 2011 的大運會不是要來啦嘛,於是深大要開發一個志工服務站,我被團委抓去服役了。過程中寫了一個小小的表單工具包。驗證功能不是我自己實現的,依賴 Kohana_Validate(Kohana V3.0x 分支)。但自己就按照 《J2EE 噁心模式》所說,弄了個同步令牌,防止重複提交表單。這個元件也設定了抽象層,我覺得可以把驗證碼也當作一個令牌子類別整合。但現在沒時間弄,先把程式碼分享上來等被拍磚啦~
  1. namespace Form;
  2. use VolunteerFormAbstractForm;
  3. class NewsPoster extends Abstract; */
  4. public function bindAllElement()
  5. {
  6. $this->bindToken('valid_token')
  7. ->addElement('新聞標題', 'title',
  8. array(
  9. 'not_empty' => null,
  10. 'max_length' => array(60)
  11. ),
  12. array(
  13. 'trim' => null,
  14. 'htmlspecialchars' => array( ENT_QUOTES),
  15. ))
  16. ->addElement('縮寫網址', 'urlName',
  17. array(
  18. 'max_length' => array(50),
  19. 'regex' = > array('~^[a-zA-Z0-9-%]+$~')
  20. ),
  21. array(
  22. 'trim' => null,
  23. 'urlencode' => null,
  24. ))
  25. ->addElement('關鍵字', 'keyWords',
  26. array(
  27. 'max_length' => array(100),
  28. ),
  29. array (
  30. 'trim' => null,
  31. 'htmlspecialchars' => array(ENT_QUOTES),
  32. ))
  33. ->addElement('新聞作者&記者', 'author',
  34. array(
  35. 'max_length' => array(60),
  36. ),
  37. array(
  38. 'trim' => null,
  39. 'htmlspecialchars' => array(ENT_QUOTES),
  40. 'htmlspecialchars' => array(ENT_QUOTES),
  41. 'htmlspecialchars' => array(ENT_QUOTES),
  42. 'htmlspecialchars' => array(ENT_QUOTES),
  43. ))
  44. ->addElement('新聞編輯', 'editor',
  45. array(
  46. 'max_length' => array(60),
  47. ),
  48. array(
  49. 'trim' => null,
  50. 'htmlspecialchars' => array(ENT_QUOTES),
  51. ))
  52. ->addElement('新聞來源', 'source',
  53. array(
  54. ' max_length' => array(60),
  55. ),
  56. array(
  57. 'trim' => null,
  58. 'htmlspecialchars' => array(ENT_QUOTES),
  59. 'htmlspecialchars' => array(ENT_QUOTES),
  60. html)
  61. ))
  62. ->addElement('新聞分類', 'category',
  63. array(
  64. 'not_empty' => null,
  65. 'digit' => null,
  66. 'regex' => array('~ ^[1-9]d*$~')
  67. ),
  68. array())
  69. ->addElement('封面圖片', 'cover_image',
  70. array(),
  71. array(
  72. 'trim' => null,
  73. 'urlencode' => null,
  74. ))
  75. ->addElement('包含媒體資訊', 'mediaTag',
  76. array(
  77. 'not_empty' => null,
  78. 'digit' => null,
  79. 'regex' => array('~^[0123]$~')
  80. ),
  81. array() )
  82. ->addElement('新聞摘要', 'summary',
  83. array(
  84. 'max_length' => array(255),
  85. ),
  86. array(
  87. 'trim ' => null,
  88. 'htmlspecialchars' => array(ENT_QUOTES),
  89. ))
  90. ->addElement('發佈狀態', 'state',
  91. array(
  92. 'not_empty' => null,
  93. 'digit' => null,
  94. 'regex' => array('~^[01]$~')
  95. ),
  96. array())
  97. - >addElement('“是否顯示在首頁”選項', 'showInHome',
  98. array(
  99. 'boolean' => null,
  100. ),
  101. array())
  102. ->addElement ('新聞內容', 'content',
  103. array(
  104. 'not_empty' => null,
  105. ),
  106. array(
  107. 'tidy_parse_string' => array(
  108. array(> array(> array(> array(> array(> array(>)
  109. 'indent' => true,
  110. 'output-xhtml' => true,
  111. 'clean' => true,
  112. 'drop-font-tags'=> true,
  113. ' show-body-only'=> true
  114. ), 'UTF8'),
  115. 'trim' => null
  116. ));
  117. }
  118. }
複製程式碼
  1. public function action_GET()
  2. {
  3. // 取得url 中的ID
  4. $id = $this->request->param('id', null);
  5. // 將令牌送到視圖層(放在表單的隱藏域)
  6. $this->view['token'] = FormNewsPoster::getToken()->useToken( );
  7. }
  8. public function action_POST()
  9. {
  10. $id = $this->request->param('id', null);
  11. $ form = FormNewsPoster::factory($_POST);
  12. $form->bindAllElement();
  13. if ($form->checkForm()) {
  14. // 驗證通過,呼叫領域模型執行操作~
  15. $this->view['success'] = true;
  16. } else {
  17. $this->view['success'] = false;
  18. // 將錯誤訊息送回視圖層
  19. $this->view['message'] = array_values($form->getMessage());
  20. }
  21. }
複製代碼
帶有同步令牌的表單工具包 帶有同步令牌的表單工具包 帶有同步令牌的表單工具包


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn