php: weiterleiten?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

php: weiterleiten?

Beitrag von leopittoni »

Hallo

Ich habe versucht, meine Gäste auf meiner HP weiterzuleiten, wenn sie eingeloggt sind.

So:

Code: Alles auswählen

if ( $userdata['session_logged_in'] &&  $userdata['lang'] =='german' || 'german_sie' )
{
redirect ("php_seite.php?lang=de");
}
else
if ( $userdata['session_logged_id'] )
{
redirect ("php_seite.php?lang=it");
}
else
{
...

Es kommt aber diese Fehlermeldung:

Code: Alles auswählen

Warning: Cannot modify header information - headers already sent by (output started at /usr/kunden/confixx/kunde304/html/liceo/phpBB2/includes/template.php(127) : eval()'d code:1) in /usr/kunden/confixx/kunde304/html/liceo/phpBB2/includes/functions.php on line 813
Wieso kommt diese Fehlermeldung?

Wie kann ich Users weiterleiten?

Danke, Léo
Elo
Mitglied
Beiträge: 318
Registriert: 04.11.2002 17:44

Beitrag von Elo »

Per PHP wird fogendermassen Weitergeleitet:

Code: Alles auswählen

Header('Location: http://www.DeineWeiterleitung');
Hinweis:

Code: Alles auswählen

if ( $userdata['session_logged_in'] &&  $userdata['lang'] =='german' || 'german_sie' ) 
Das funktioniert so nicht.

Gruß,
elo
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag von leopittoni »

Hinweis:

Code: Alles auswählen

if ( $userdata['session_logged_in'] &&  $userdata['lang'] =='german' || 'german_sie' )
Wie geht denn das?

Wie kann ich überprüfen, ob der User eingeloggt ist UND die Sprache "german" oder "german_sie" gewählt hat?

Danke, Léo
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag von Dennis63 »

Zur IF-Abfrage: Du mußt jede einzelne Abfrage klammern.

Code: Alles auswählen

Falsch
if ( 1 && 2==3 )

Was passieren könnte, ohne Klammern:
if ( (1 && 2 ) == 3 )
<<woher soll PHP wissen, wie Du die Klammern gerne hättest??>>

Richtig:
if ( ( 1) && (2==3) )

Zum "Header already......": Es ist ein Bedienerfehler, und zu dem steht schon was in unserer Doku: KB:headers_already_sent

Grüße
Dennis
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag von leopittoni »

Hallo

Und was kann ich tun, damit diese Fehlermeldung "Header already.." nicht mehr erscheint?

Wie kann ich weiterleiten, ohne diese Fehlermeldung?

Wäre mein Code nun so richtig:?

Code: Alles auswählen

if { ($userdata['session_logged_in']) &&  ($userdata['lang'] =='german' || 'german_sie' ) }
Danke, Léo
Benutzeravatar
Schumi
Ehemaliges Teammitglied
Beiträge: 4925
Registriert: 07.10.2002 12:37

Beitrag von Schumi »

Richtig ist:

Code: Alles auswählen

if ( $userdata['session_logged_in'] &&  $userdata['user_lang'] =='german' || $userdata['user_lang'] == 'german_sie' ) 
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag von Dennis63 »

Zum Code: Die geschweifte klammer solltest Du noch in einer normale Klammer ändern.

Zum Header: Hast Du gelesen, was ich gepostet habe?
Die Ursache dieses Fehlers liegt darin, daß versucht wird, die Header-Informationen zu bearbeiten, nachdem bereits normale Ausgabe erfolgt ist.
Sorge dafür, daß das nicht passiert, dann bist Du das Problem los.

Grüße
Dennis
Elo
Mitglied
Beiträge: 318
Registriert: 04.11.2002 17:44

Beitrag von Elo »

if ( $userdata['session_logged_in'] && ( $userdata['lang'] =='german' || $userdata['lang'] =='german_sie' ) )
ist die korrekte Abfrage.

elo
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag von leopittoni »

Hallo

Mein Code funktioniert leider nicht richtig.
Wenn ich eingeloggt bin, leitet es mich zwar weiter, aber immer auf die Deutsche Seite. Wenn ich im Forum "italian" gewählt habe, leitet es mich trotzdem weiter auf die Deutsche Homepage...

Hier mein Code:

Code: Alles auswählen

if ( $userdata['session_logged_in'] && ( $userdata['lang'] == 'german' || 'german_sie' ) )
{
Header('Location: http://domain.net/hp/php_seite.php?lang=de');
}
else
if ( $userdata['session_logged_id'] && $userdata['lang'] == 'italian' )
{
Header('Location: http://domain.net/hp/php_seite.php?lang=it');
}
else
{
$template->assign_vars(array(
'SPRACHE_DE' => 'Herzlich willkommen auf der Homepage...
<br/>
W&auml;le Deine Sprache:',
'SPRACHE_IT' => 'Benvenuti sul sito internet...
<br/>
Scegli la tua lingua:'
));
}

Wieso funktioniert der Code nicht richtig? Wieso werde ich nicht auf die Italienische Seite weitergeleitet, wenn ich "italian" gewählt habe?

Danke, Léo
Elo
Mitglied
Beiträge: 318
Registriert: 04.11.2002 17:44

Beitrag von Elo »

Irgendwie kommt es mir so vor als schreibe ich hier für mich selbst.


elo
Antworten

Zurück zu „Coding & Technik“