我应该如何在mvc中编辑模型条目?

时间:2015-08-19 12:03:09

标签: html model-view-controller edit models

我正在开发一个使用phalcon for php framework的小应用程序。我已经实现了多个控制器和模型,但到目前为止,当我想编辑用户时,我使用链接到

的链接
  

localhost / myappname / User / edit / 11“用户ID”

我被告知这不是最好的方法,我试图这样做而不通过url传递id,就像使用表格中的post方法但到目前为止没有成功。 这是编辑或删除条目的唯一正确方法还是有更好的方法? 我试图搜索问题,但无法确定如何命名这个问题所以我还没有找到一个已回答的问题。

2 个答案:

答案 0 :(得分:0)

你可以使用sessionStorage。它会将userId的值存储在浏览器中,并在它们离开页面后立即删除。

http://www.w3schools.com/html/html5_webstorage.asp

在一页上设置

sessionStorage.userId = 11;

访问另一个

var user = sessionStoarge.userId;

答案 1 :(得分:0)

如果您不想让每个人都能访问编辑页面,您可以通过以下几种方式执行此操作。

解决方案#1

您可以使用Phalcon ACL来阻止无权编辑此页面的用户,因此只允许管理员等人员编辑用户或其他内容。

See Access Control Lists ACL

解决方案#2

您可以加密/解密用户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,请收到错误。

解决方案#3

如果您仍想使用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 可以加密,然后在方法中解密后期数据。