我正在开发一个使用phalcon for php framework的小应用程序。我已经实现了多个控制器和模型,但到目前为止,当我想编辑用户时,我使用链接到
的链接localhost / myappname / User / edit / 11“用户ID”
我被告知这不是最好的方法,我试图这样做而不通过url传递id,就像使用表格中的post方法但到目前为止没有成功。 这是编辑或删除条目的唯一正确方法还是有更好的方法? 我试图搜索问题,但无法确定如何命名这个问题所以我还没有找到一个已回答的问题。
答案 0 :(得分:0)
你可以使用sessionStorage。它会将userId的值存储在浏览器中,并在它们离开页面后立即删除。
http://www.w3schools.com/html/html5_webstorage.asp
在一页上设置
sessionStorage.userId = 11;
访问另一个
var user = sessionStoarge.userId;
答案 1 :(得分:0)
如果您不想让每个人都能访问编辑页面,您可以通过以下几种方式执行此操作。
您可以使用Phalcon ACL来阻止无权编辑此页面的用户,因此只允许管理员等人员编辑用户或其他内容。
您可以加密/解密用户ID,因此在URL中它不会被人类读取,然后在编辑方法中尝试解析该ID,如果它不是有效的回显错误。
<?php
use Phalcon\Crypt;
// Create an instance
$crypt = new Crypt();
$key = 'le password';
$user_id = 5;
$encrypt = $crypt->encryptBase64($user_id, $key);
// Use $encrypt for URL like <a href="/User/edit/{{encrypt}}">Edit</a>
// Use decrypt to get the real id of a user
$crypt->decryptBase64($encrypt, $key);
?>
通过这种方式,用户可以看到类似
的URL本地主机/ myappname /用户/编辑/ nomGPPXd + gAEazAP8ERF2umTrfl9GhDw1lxVvf39sGKF34AFNzok31VdaT / OwADPPJ4XgaUNClQKrlc / 2MfaXQ ==
有关详细信息,请参阅Encryption/Decryption
但我的个人意见是,最好使用ACL。在为所有事情做出所有ACL之后。
注意!如果您想使用Encrypt / Decript,请记住包装解密 在
try/catch
块中的编辑方法中捕获异常,这样就不用了 如果有人试图猜测sone id,请收到错误。
如果您仍想使用POST执行此操作,请不要使用<a href="...">Edit</a>
,而是可以尝试以下操作:
<form method="POST">
<input type="hidden" name="uid" value="{{ user_id }}"/>
<button type="submit">Edit</button>
</form>
然后在编辑方法中捕获id,如:
<?php
$user_id = $this->request->getPost("uid");
?>
注意!以这种方式,您的网址不会包含用户ID,但仍有人 可以发布另一个uid,这样你甚至可以尝试隐藏真正的用户ID 来自输入类型隐藏。您可以再次使用crypt / decrypt以便输入 隐藏的uid 可以加密,然后在方法中解密后期数据。