2017-10-16 1 views
0

Ich habe ein Problem auf meiner Website. Ich habe Editor von Artikeln und ich möchte zu jedem Artikel Name und ID des Benutzers, der diesen Artikel erstellen. Diese Daten gebe ich von $_SESSION. In der Datei EditorController.php habe ich diesen Code:

$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)); 

und im Hinblick editor.phtml Ich habe diese:

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

aber wenn ich Artikel in der Datenbank diese beiden Parameter speichern, werden nicht gespeichert. Ich habe zu der Ansicht folgt aus:

<?= $author_id, $author ?> und alles OK arbeitet, um die Ansicht ID und Name des Benutzers schreiben ist, die jetzt in Log Also ich Ding, dass es:.

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

isn‘ t irgendein Problem. Bitte geben Sie mir einen Rat, wo das Problem ist und wie es zu beheben ist. Für alle Ratschläge danke Ihnen im Voraus.

+2

Bitte teilen Sie auch die ManagerUsers Klasse. –

+0

Wo verwenden Sie '$ _SESSION' in diesem Code? Sie sollten dies wahrscheinlich nicht in versteckte Eingaben einfügen, da der Benutzer diese in der Browser-Konsole ändern kann. – Barmar

Antwort

1

1) quick'n'dirty

Wenn Sie author und author_id durch Ihre Form versteckte Felder mit geben, müssen Sie diese Felder verwenden.

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

2) bessere Weise

Lassen Sie diese beiden Tasten aus und fügen Sie sie direkt

$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) vielleicht beste Weg

Art der gleiche wie 2 , aber fügen Sie "Vorlage" $review vor und verschmelzen Formularwerte.

$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

Vielen Dank Ich habe die zweite Lösung (besser) und alles funktioniert OK. –

Verwandte Themen