2017-10-16 19 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'] ?>" /> 

をしかし、私は、データベースに記事を保存するとき、この2つのパラメータは保存されません。 。

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

ISN」:

<?= $author_id, $author ?>、すべてのビューは、現在ログインしているユーザーのIDと名前を書きですので、私の事があり、それには、[OK]を作品:私はこれはビューに与えました問題はありません。問題がある場合や問題を解決する方法についてアドバイスをお願いします。すべてのアドバイスについては、事前にあなたに感謝します。

+2

また、ManagerUsersクラスを共有してください。 –

+0

このコードではどこで '$ _SESSION'を使用していますか?ユーザーは隠れた入力に入れないでください。なぜなら、ユーザーはブラウザのコンソールでそれらを変更できるからです。 – Barmar

答えて

1

1)quick'n'dirty

あなたが隠しフィールドを使用して、フォームをauthorauthor_idを渡した場合、あなたはこれらのフィールドを使用する必要があります。おそらく最良の方法)と同じ2などの

種類を

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

2)より良い方法

は、これら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直接追加します「テンプレート」$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

ありがとう、私は2番目のソリューション(良い方法)を使用し、すべて正常に動作します。 –

関連する問題