我是CakePHP的新手,正在嘗試做一些類似博客的練習,然後遇到了一些問題。在CakePHP中使用POST將變量從視圖傳遞到控制器
看到一個名爲Post
的模型,然後在PostsController
下生成了一個view
動作來檢查單個博客文章。我想要的是允許用戶能夠在Posts/view
頁面上添加對帖子的評論,而不是被重定向到新的Comments/add
頁面。要做到這一點,我需要告訴我的CommentsController
用戶正在評論哪些帖子。所以寫了這個我/app/View/Posts/view.ctp
:
<?php
echo $this->Form->create('Comment', array('controller' => 'comments', 'action' => 'add');
echo $this->Form->input('content', array('row' => '3'));
// this is the line I'm not sure about
echo $this->Form->input('post_id', array('default' => $post['Post']['id'], 'type' => 'hidden'));
echo $this->Form->end('Submit');
?>
現在,這個解決方案將在$post['Post']['id']
值發送到add
行動CommentsController
在$this->request->data['post_id']
形式,但叫我肛門,我擔心這是否是正確的,或「專業」的方式來做到這一點,因爲人們可以通過在任何現代瀏覽器中使用「檢查元素」來改變某些屬性,從而使隱藏的領域變得可見,並不一定存在潛在的安全漏洞,但我個人感覺不舒服。因此,如果有人曾經與CakePHP一起工作過,那麼與我分享一些經驗吧。
謝謝!所以你所說的基本上是,這是一種正確的方法,我需要的是更多的安全層。我的理解是否正確? – alxyzc
是的。不管你做什麼,你總會不信任傳入的數據,並確保沒有人可以做出惡意的事情。這適用於*每個*程序和編程語言。你介意將答案標記爲正確嗎?謝謝。 ;) – burzum
哦,當然。我只是想知道是否有其他方式可以做到這一點,比如調用控制器的引用者(在本例中是post URL)並解析它以確定該帖子的「id」。但這聽起來很混亂,因爲你有很高的聲譽......哈!只是在開玩笑;) – alxyzc