Seite 2 von 3
Verfasst: 16.11.2004 23:53
von Groovecommander
MrMind echt spitze Deine Antwort !!!
Werde erst mal ne Zeit lang brauchen, um das alles aus zu probieren. Auf jeden Fall bringt mich das ein ganzes Stück weiter...
Vielen dank nochmal und
beste Grüße
Verfasst: 17.11.2004 00:05
von Blutgerinsel
MrMind hat geschrieben:
das Array brauchste net weiter zu geben, da alle deine Seiten die du erstellst so aussehen sollten. Somit wird das Array $userdata immer wieder ersetllt.
Da du nach dieser Vorlage arbeitest ist es einfach dir eine Hilfestellung zu geben.
Als erstes solltest du eine Seite (z. B. inserate_edit.php) erstellen und nur den Link zu dieser Seite anzeigen lassen, wenn der User auch angemeldet ist. Das kannste wie folgt bewerkstelligen:
Das ist ja das Prinzip von Sessions ich übergebe eine minimal Information halte damit die Anzahl klein und hole wieder über die DB die ganzen Daten.
Bei Warenkörben usw. werden die Artikelnr. z.B. in die Session gelegt......
Im Grunde sollte man sich immer Fragen:
- Muss das sein ?
- Gibts andere Wege ?
- Brauche ich anderweitige Wege ?
- Was erzeugt weniger Last für DB und Server ?
etc.
Hab mir abgewöhnt alles detailiert zu erklären weil in n Beiträgen wird es wieder vorkommen....
Verfasst: 17.11.2004 08:39
von MrMind
Blutgerinsel hat geschrieben:Das ist ja das Prinzip von Sessions ich übergebe eine minimal Information halte damit die Anzahl klein und hole wieder über die DB die ganzen Daten.
Bei Warenkörben usw. werden die Artikelnr. z.B. in die Session gelegt......
Im Grunde sollte man sich immer Fragen:
- Muss das sein ?
- Gibts andere Wege ?
- Brauche ich anderweitige Wege ?
- Was erzeugt weniger Last für DB und Server ?
etc.
Hab mir abgewöhnt alles detailiert zu erklären weil in n Beiträgen wird es wieder vorkommen....
Ich kenn die Funktion der Sessions
Session find ich in der Regel auch net schlecht, aber wenn ein User mit dem phpBB arbeiten möchte, dann bringen ihm solche Informationen nichts, da er - sobald er die PHP-Dateien so anlegt wie im Artikel beschrieben - die phpBB Session wirken. Diese sind aber keine Session nach dem Schema:
Die Session von phpBB ist nur ein UNIQ ID möcht ich mal so sagen (weiß jetzt net 100% ob mit uniq_id() oder mit md5() gearbeitet wird). Sprich es ist nur eine eindeutige ID und keine Session in der man Variablen speichert bzw. auslesen kann.
Mfg
MrMind
Verfasst: 17.11.2004 09:33
von Groovecommander
Da wär sie auch schon, eine Frage zum Thema.
Wenn ich die Inserate des Users anzeigen möchte (
$sql = "SELECT * FROM phpbb_inserate WHERE userid = '" . $userdata['user_id'] . "'";
, dann setzt das doch voraus, dass ich die user_id zum entsprechenden Beitrag, mit in der Tabelle speichern muss, oder?
Falls ja, dann sind wir ja wieder beim vorherigen Problem, wie bekomme ich die User_id an die ausführende Datei ( die Datei die die Formulardaten auswertet) gesendet?
Vielen Dank
Verfasst: 17.11.2004 10:50
von MrMind
Groovecommander hat geschrieben:Da wär sie auch schon, eine Frage zum Thema.
Wenn ich die Inserate des Users anzeigen möchte (
$sql = "SELECT * FROM phpbb_inserate WHERE userid = '" . $userdata['user_id'] . "'";
, dann setzt das doch voraus, dass ich die user_id zum entsprechenden Beitrag, mit in der Tabelle speichern muss, oder?
Falls ja, dann sind wir ja wieder beim vorherigen Problem, wie bekomme ich die User_id an die ausführende Datei ( die Datei die die Formulardaten auswertet) gesendet?
Vielen Dank
Genau die user_id muss in der DB gesichert sein bei den inseraten.
Die User_id, wenn du deine PHP-Dateien wie im Artikel erstellst, ist immer vorhanden, nachdem du init_userprefs() aufrufst.
Nach dieser Zeile steht dir das $user_data vollgepackt mit allen Daten aus der phpbb_users zur Verfügung.
Mfg
MrMind
Verfasst: 17.11.2004 11:45
von Groovecommander
Sorry, aber ich raffs noch nett.
Nochmal: In meinem Formular habe ich doch für jedes Eingabefeld einen Namen. Diese Namen stehen mir doch nach dem abschicken, in der Datei, wo die Daten aus dem Formular verabeitet werden, zur Verfügung.
Ich habe aber gar kein Eingabefeld, wo der User seine ID eintippt. Daher wollte ich nun fragen, wie ich die ID des users (mittels $userdata[user_id]) , der bereits eingeloggt ist, an meine Datei schicken kann, die das Formular verarbeitet.
Verstehst Du was ich meine? Ich bin immernoch bei dem Schritt, wo ich die Daten des Inserats in die DB schreibe. Alle Daten werden aus dem Formular an z.B. work_formular.php geschickt, wo sie dann in die DB geschrieben werden. Wie bekomme ich $userdata[usr_id] zu work_formular.php, ohne das der User sie selbst in ein eingabefeld eingeben muss?
Hoffe Du hast nochmal eine Tip. Besten Dank.
Verfasst: 17.11.2004 12:35
von Blutgerinsel
Loggst du dich bei diesem Formular ein?
Wenn nein? Dann musst du zu dem Zeitpunkt wo du das Formular generierst z.B. ein <input type="hidden" name="user_id" value="DieermittelteUserID"> übergeben....
Davon rate ich ab weil ich dann ein HTTP-POST selber faken könnte und wäre eingeloggt....
Warum nur liest du nicht was MrMind sagt?
Die User_id, wenn du deine PHP-Dateien wie im Artikel erstellst, ist immer vorhanden, nachdem du init_userprefs() aufrufst.
Nach dieser Zeile steht dir das $user_data vollgepackt mit allen Daten aus der phpbb_users zur Verfügung.
Verfasst: 17.11.2004 14:55
von MrMind
Danke für deine Unterstützung @Blutgerinsel
@Groovecommander
Ich würde aus Sicherheitsgründen die Userid niemals via Formular versenden.
Die Empfänger Datei für diene Formulareingabe solltest du genauso aufbauen wie in dem Artikel wo du die erste schon erstellt hast.
Nach dieser Anweisung:
Code: Alles auswählen
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
Wird das Array $userdata neu gesetzt und iniziiert.
Nun kannst du ohne Sorgen $userdata['user_id'] verwenden und du hast immer die Userid von dem User, der die Seite aufgerufen hat. Diese kann dann nicht manipuliert werden.
Wenn du es wirklich mit dem Formular übergeben möchtest, dann mach es wie Blutgerinsel sagte:
Code: Alles auswählen
<input type="hidden" name="user_id" value="{USER_ID}" \>
die Zuweisung in der Template sieht dann so aus:
Code: Alles auswählen
$template->assign_var(array('USER_ID' => $userdata['user_id']));
Aber wie schon gesagt, es ist nicht nötig und es gefährdet die Sicherheit des Scriptes.
Mfg
MrMind
Verfasst: 18.11.2004 09:24
von Groovecommander
Ok, recht vielen Dank an Euch beide. Werde jetzt ersteinmal ein wenig rum experimentieren und mich dann wieder melden, wenn es Probleme gibt, die ich nicht selber irgendiwe gebacken bekomme.
Ich werde es dann so machen, wie ihr das vorgeschlagen habt: also
Code: Alles auswählen
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
aufrufen und dann die User_id zum jeweilgen Inserat setzten.
Vielen Dank nochmal für die Hilfe. Das mit den ganzen Variablen, die da schon irgendwo, irgendwann gesetzt werden... dauert ein wenig, bis man so dahinter steigt, was die so bewerkstelligen.

Verfasst: 18.11.2004 15:41
von MrMind
Groovecommander hat geschrieben:Ok, recht vielen Dank an Euch beide. Werde jetzt ersteinmal ein wenig rum experimentieren und mich dann wieder melden, wenn es Probleme gibt, die ich nicht selber irgendiwe gebacken bekomme.
Ich werde es dann so machen, wie ihr das vorgeschlagen habt: also
Code: Alles auswählen
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
aufrufen und dann die User_id zum jeweilgen Inserat setzten.
Vielen Dank nochmal für die Hilfe. Das mit den ganzen Variablen, die da schon irgendwo, irgendwann gesetzt werden... dauert ein wenig, bis man so dahinter steigt, was die so bewerkstelligen.

Also das mit der PAGE_INDEX will ich noch sagen, musst du auch noch anpassen. So wie es im Artikel erklärt ist
Naja wenn du wirklich wissen willst welche Variablen du nach der Schablone hast, dann guck mal in die common.php, dort findest du folgendes:
Code: Alles auswählen
$board_config = array();
$userdata = array();
$theme = array();
$images = array();
$lang = array();
...
Das sind die Variablen die später in deiner Schablone verfügbar sind und auch gefüllt sind.
Diese Deklaration zeigt die globalen Variablen die man eigentlich immer brauch, bzw. die Schablone brauch es definitiv

Und du hast auch vollen zugriff darauf.
Mfg
MrMind