2017-10-16 58 views
0

我已经在我的网站的问题。我有文章的编辑,我想要获得每篇文章的名称和创建这篇文章的用户的ID。这个数据我从$_SESSION给出。在文件EditorController.php我有这样的代码:

$managerUsers = new ManagerUsers(); 
$user = $managerUsers->returnUser(); 
$this->data['author'] = $user['name']; 
$this->data['author_id'] = $user['users_id']; 
$review = array(
      'reviews_id' => '', 
      'author_id' => '', 
      'author' => '', 
if ($_POST) 
      { 
      $keys = array($author_id, $author, 'title', 'content', 'url', 
'description', 'keywords'); 
      $review = array_intersect_key($_POST, array_flip($keys)); 

,并鉴于editor.phtml我有这样的:

<input type="hidden" name="author_id" value="<?= $review['author_id'] ?>" /> 
<input type="hidden" name="author" value="<?= $review['author'] ?>" /> 

但是当我保存文章到数据库两个参数不会被保存。我给的观点是:

<?= $author_id, $author ?>,一切工作正常,该视图是写用户的ID和名称谁现在登录所以我东西,有:

$managerUsers = new ManagerUsers(); 
$user = $managerUsers->returnUser(); 
$this->data['author'] = $user['name']; 
$this->data['author_id'] = $user['users_id']; 

ISN”没有任何问题。请给我一些建议,问题在哪里以及如何解决。对于所有建议,请提前向您致谢。

+2

也请分享ManagerUsers类。 –

+0

你是哪里在这段代码中使用'$ _SESSION'?你可能不应该把它放在隐藏的输入中,因为用户可以在浏览器控制台中修改它们。 – Barmar

回答

1

1)quick'n'dirty

如果您使用隐藏域传递authorauthor_id通过你的表格,你必须使用这些字段。

-$keys = array($author_id, $author, 'title', 'content', 'url', 'description', 'keywords'); 
+$keys = array('author_id', 'author', 'title', 'content', 'url', 'description', 'keywords'); 

2)更好的方式

离开这两个键调出,并直接将它们添加

$keys = array('title', 'content', 'url', 'description', 'keywords'); 
$review = array_intersect_key($_POST, array_flip($keys)); 
$review['author'] = $user['name']; 
$review['author_id'] = $user['users_id']; 

3)也许最好的办法

类一样2 ,但增加了“模板” $review之前和合并形式的值。

$managerUsers = new ManagerUsers(); 
$user = $managerUsers->returnUser(); 
$this->data['author'] = $user['name']; 
$this->data['author_id'] = $user['users_id']; 
$review = array(
    'reviews_id' => '', 
    'author_id' => $user['users_id'], 
    'author' => $user['name'], 
); 
if ($_POST) { 
    $keys = array('title', 'content', 'url', 'description', 'keywords'); 
    $review = array_merge(
     $review, 
     array_intersect_key($_POST, array_flip($keys) 
    ); 
    // do something with $review 
} 
+0

非常感谢你我用第二种方案(更好的方法),一切工作正常。 –