Seite 1 von 2

Profil editieren,... mit Weiterleitung auf eigene HP

Verfasst: 27.09.2004 15:59
von Leddl
Ich wollte auf meiner Homepage die Funktionen von phpBB nutzen. (Also Login/out, bestimmte Profileinträge, usw) Daher hab ich auf meiner Homepage nach den diversen Anleitungen hier eine LogIn-Box eingebaut. Das funktioniert wunderbar.
Da mir die reine An- und Abmeldung auf meiner Homepage allerdings nicht reicht, wollte ich noch diverse andere Links hinzufügen (Profil, Registrieren, Passwort vergessen, Administrationsbereich) Da allerdings liegt mein Problem. Aufrufen kann ich das ja ganz einfach. Schwerer wirds, wenn ich nach Aufrufen von meiner Homepage später auch wieder auf selbiger lande. Standardmäßig wird man ja auf die index.php weitergeleitet.
Gut, der Admin-Bereich geht ja eigentlich. Muß ich ja nur bei Admin- und Foren-Index noch Homepage hinzufügen.

Mein Problem sind also die folgenden 3 Aufrufe:

Code: Alles auswählen

http://www.meinehomepage.de/forum/profile.php?mode=editprofile
http://www.meinehomepage.de/forum/profile.php?mode=register
http://www.meinehomepage.de/forum/profile.php?mode=sendpassword
Mein Problem is, daß in der profile.php über include andere Dateien aufgerufen werden. Genauer gesagt für edtiprofile und register die "includes/usercp_register" und für sendpassword die "includes/usercp_sendpassw". Soviel hab ich schonmal rausgefunden.
Nur weiß ich nicht, wie ich an diese Dateien im Bedarfsfall jetzt die URL übergebe, die später aufgerufen werden soll. Einfach an die URL in include ranhängen geht ja net.
Hat jemand ne Idee? Darf auch ein bißchen ausführlicher sein :wink:, bin nämlich noch nicht besonders gut in PHP.

Danke schonmal im Voraus!

Verfasst: 27.09.2004 16:50
von Saber_Rider
in der usercp_sendpasswd.php such die zeile

Code: Alles auswählen

'META' => '<meta http-equiv="refresh" content="15;url=' . append_sid("index.$phpEx") . '">')
dies ist die weiterleitung auf die index seite.
also zum beispiel

Code: Alles auswählen

http://www.meinehomepage.de/forum/index.php
wenn du jetzt direkt auf deine homepage willst musst hier einfach ne änderung vornehmen.
schreib:

Code: Alles auswählen

'META' => '<meta http-equiv="refresh" content="15;url='http://www.meinehomepage.de')
und schon ist die automatische weiterleitung geändert.
um jetzt noch den link zu ändern suchst du:

Code: Alles auswählen

$message = $lang['Password_updated'] . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
(steht genau drunter) und änderst hier wieder den teil

Code: Alles auswählen

<a href="' . append_sid("index.$phpEx") . '">
in

Code: Alles auswählen

 <a href="http://www.meinehomepage.de>
das

Code: Alles auswählen

sprintf($lang['Click_return_index']
änderst du in einen eigenen text, damit da nicht Klick hier um zum Index zurückzukehren steht.

in der usercp_register.php suchst du

Code: Alles auswählen

"META" => '<meta http-equiv="refresh" content="5;url=' . append_sid("index.$phpEx") . '">')
und änderst es auch entsprechend. sowie

Code: Alles auswählen

$message = $lang['Profile_updated'] . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
für den link.

registrieren, profil und passwort vergessen sollte somit geändert sein.
wenn du nebenher noch das forum verwenden willst, also so, dass auch noch das mit der weiterleitung auf index.php funktioniert wird es etwas schwieriger.
sagen wir mal du hängst einfach ein irgendwas=meinehp an den url wenn du zu deiner hp weiter geleitet werden willst und sonst lässt du es normal. jetzt musst du in den beiden datein einfach ein

Code: Alles auswählen

$irgendwas = isset($HTTP_GET_VARS['irgendwas'])  ? $HTTP_GET_VARS['irgendwas'] : '';
rein schreiben und schon hast du 'meinehp' in $irgendwas drin stehen.
jetzt einfach vor den sachen die du geändert hast:

Code: Alles auswählen

if ($irgendwas == '') { der alte code
} else { der neue code
}
oder so ähnlich könnte es funkionieren. hab es nicht getestet. also musst du da eventuell noch ein bischen rumspielen.

Verfasst: 27.09.2004 17:08
von Leddl
Danke für die schnelle Antwort, aber so bringt mir das grad leider nix. Soweit war ich ja schon. Das Problem war ja, daß in der profile.php die Weiterleitung zu den jeweiligen Dateien geschieht. Und da ich nicht immer auf meine HP umleiten will, sondern nur, wenn von da geklickt wurde, kann ich das nicht fest eincoden. Aber in der profile.php wird eben include aufgerufen:

Code: Alles auswählen

include($phpbb_root_path . 'includes/usercp_register.'.$phpEx);
Darein kann ich keine Parameter packen. Hat

Code: Alles auswählen

redirect(append_sid("usercp_register.$phpEx, true));
die selbe Wirkung? Oder fehlt dann was? Weil dann könnte ich das ja benutzen.

Verfasst: 27.09.2004 17:15
von Saber_Rider
naja wenns darum geht.
mach einfach vor das include... $irdenwas = irgendetwas; diese variable kannst du auch in der includierten datei verwenden (das include kannst dir so vorstellen als wenn der code einfach an der stelle steht).
also musst du einfach nur ne datei früher die variable auslesen. das sollte dann funktionieren.

Verfasst: 27.09.2004 17:21
von Leddl
Ne, das ging glaub ich nich, weil er dann eben nach der Datei "www.meinehomepage.de/forum/includes/use ... ?irgendwas" gesucht hat, und die gibts ja net. Oder hab ich da jetzt was falsch verstanden?
Kann ich, wenn ich z.B. in der profile.php die $irgendwas mit der URL belege, dann in der usercp_register.php die $irgendwas mit dem richtigen Wert benutzen??? Das wär ja mal optimal! :grin:

[Edit]
OK, hätts auch gleich en bißle gründlicher lesen können.
Klar wars das, was du meintest. Mann bin ich doof!

Danke vielmals, man lernt nie aus! :D
[/Edit]

Verfasst: 28.09.2004 00:34
von Leddl
Hmm, zu früh gefreut... Irgendwie klappt das nich.

Ich hab in der profile.php die per "redirect=" angehängte URL ausgelesen und mit

Code: Alles auswählen

$redirect = isset($HTTP_GET_VARS['redirect'])  ? $HTTP_GET_VARS['redirect'] : '';
in ner Variable gespeichert.

Dieses Variable hat dann allerdings in den "includierten" Dateien (Die Aufrufe erfolgen erst nach dem Setzen der Variablen) den Wert "". Also ein leerer String. Kann es sein, daß der Wert doch verloren geht?

Verfasst: 28.09.2004 00:47
von Saber_Rider
im normalfall geht das und habe ich auch schon öffter gemacht.
weise testhalber der $redirect mal in der profile.php den gewünschten wert zu. ob es dann geht.
ansonsten schau mal wegen ifs oder ähnlichem ob die zeile mit dem get_vars auch wirklich aufgerufen wird.

Verfasst: 28.09.2004 01:32
von Leddl
OK, mit festgelegtem Wert in der profile.php funktionierts wie gewollt. Das heißt dann wohl, daß die URL beim Aufruf der profile.php verloren geht.
Kanns daran liegen, daß der Aufruf wie folgt aussieht?

Code: Alles auswählen

http://www.meinehomepage.de/forum/profile.php?mode=editprofile&redirect=http://www.meinehomepage/index.php
Aber es is doch eigentlich normal, daß die einzelnen Parameter mit "&" voneinander getrennt werden, oder?

Verfasst: 28.09.2004 11:13
von Acid
Was genau soll denn passieren ?
Einfach den redirect dranzuhängen funktioniert nicht, da beim submit (Abschicken des Profilformulars) der redirect nicht übernommen wird.
Wenn du die Weiterleitung nach dem Abschicken ändern möchtest, müsstest du den "meta" in der usercp_register.php anpassen.

Verfasst: 28.09.2004 12:12
von Leddl
Ähm, hast du das gesamte Thema gelesen?
Wie gesagt ,es funktioniert eigentlich alles. Es hapert nur an einem Punkt!
Ich fass das ganze nochmal zusammen:

Ich hab auf meiner Homepage eine LogIn-Box, einen Registrieren-,Profil- und Passwort-vergessen-Link. Nach Klick darauf soll das gewohnte Fenster aufgerufen werden. Funktioniert auch. Nur dann soll (aber eben nur, wenn auch von meiner Homepage geklickt wurde) wieder zurück zu meiner Homepage weitergeleitet werden, und nicht zum Forenindex.
Beim LogIn/Out funktioniert das tadellos. Problematisch sind also die 3 anderen, die allesamt die profile.php mit verschiedenem mode-Parameter aufrufen.
Daher habe ich zu den jeweiligen URLs einen neuen Parameter (redirect=) hinzugefügt, der in der profile.php ja ursprünglich nich abgefragt wird.
Also hab ich mit

Code: Alles auswählen

$redirect = isset($HTTP_GET_VARS['redirect'])  ? $HTTP_GET_VARS['redirect'] : '';
in der profile einer Variablen den Wert des redirects zugewiesen.
In includes/usercp_sendpassw.php bzw includes/usercp_register (Die Dateien werden aus der profile.php aufgerufen, um das ganze zu handlen) habe ich an den Aufrufen der index.php eine Abfrage gesetzt. Ist $redirect leer, dann wird der alte Code ausgeführt. Andernfalls ein neuer, der auf meine Homepage leitet.
Wenn ich die profile.php jetzt aber mit einem redirect-Parameter aufrufe, dann wird nach wie vor der alte Code ausgeführt. Setze ich allerdings in der profile.php die $redirect manuell auf meine URL, dann klappt es genauso, wie ich es will. Irgendwas scheint also an der Übergabe nicht zu stimmen.
Ich hab so den Verdacht, daß es daran liegt, daß der redirect-Parameter nicht der einzige ist. Genaugenommen hab ich 3 - mode, redirect und sid.
Der Aufruf des Profils sieht also wie folgt aus:

Code: Alles auswählen

http://www.meinehomepage.de/forum/profile.php?mode=editprofile&redirect=http://www.meinehomepage/index.php&sid=sessionid
Sieht für mich nicht so besonders falsch aus, oder? Oder muß ich für einen Aufruf mit mehreren Parametern die Abfrage anpassen?