Zum Inhalt springen

if Abfrage per exec_SELECTquery und fe_user user uid (elemente_fenews)

Erstellt am 10. Januar 2011 · 3 Antworten · letzte Antwort am 10. Januar 2011

Tags: PHP, Datenbank, Frage

Robman ·

Hallo an alle und gesundes Neues!

Ich möchte folgende Aufgabe lösen: Es handelt sich um die Erweiterung elemente_fenews. Bei dieser können registierte Miglieder im Frontend Einträge schreiben.

Sicherheitsproblem ist dabei, das nun ein angemeldeter User alle Datensätze und nicht nur die von ihm verfassten bearbeiten kann.

Mein Lösungsansatz ist folgender:

// Abfrage User Id vom aktuellen News Datensatz
// tt_news.tx_elementefenews_feuser = fe_users id vom Verfasser

$abfrage = $GLOBALS['TYPO3_DB']->exec_SELECTquery('tt_news.tx_elementefenews_feuser', 'tt_news', 'tt_news.uid='.$this->piVars['uid']);
$result = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($abfrage);

// Debug der Abfrage ergibt id 48

t3lib_div::debug($result);

// Debug vom user tsfe user ergibt auch 48

t3lib_div::debug($GLOBALS['TSFE']->fe_user->user['uid']);

// wenn FE User aus Abfrage NICHT aktuell eingeloggter User

if ($result != $GLOBALS['TSFE']->fe_user->user['uid']) {
  $subpartArray['###NOUSER###']	= 'Falscher User.'; // Fehlermeldung
}

Irgentwie will aber die if Condition kein passendes Ergebnis liefern...
Es kommt dabei immer false raus. Aber warum?

Gruß,
Robman

vince ·

Hallo,

vielleicht hab ich das Problem falsch verstanden,
aber wenn bei beiden das gleiche rauskommt (in deinem Beispiel 48 ),
dann ist es doch ok, wenn's nicht ungleich ist?

Sprich dann ist doch richtig, wenn $result != $GLOBALS['TSFE']->fe_user->user['uid']
sich zu false auswertet... (weil's ja gleich ist)

gruß,

Vince

Robman ·

Danke an euch für die schnellen Rückmeldungen.

An vince: Bei $result != $GLOBALS['TSFE']->fe_user->user['uid'] kommt immer false raus, egal ob 48 = 48 oder 48 = 10

An Norman2k: Danke für den Hinweis das das $result ein array ergibt.

// Edit (die Zweite): habe es jetz so.

// Abfrage User Id vom aktuellen News Datensatz
$abfrage = $GLOBALS['TYPO3_DB']->exec_SELECTquery('tx_elementefenews_feuser', 'tt_news', 'tt_news.uid='.$this->piVars['uid']);

while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($abfrage)) {
  $user_id[] = $row['tx_elementefenews_feuser'];
}

// wenn FE User aus Abfrage NICHT aktuell eingeloggter User
if ($user_id[0] != $GLOBALS['TSFE']->fe_user->user['uid']) {
  $subpartArray['###NOUSER###']	= 'Falscher User.'; // Fehlermeldung
}
else {
  $subpartArray['###NOUSER###']	= 'Alles O.K.';
}

Funktioniert jetzt. Danke.