Seite 1 von 2

php: weiterleiten?

Verfasst: 06.05.2005 11:58
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

Verfasst: 06.05.2005 12:45
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

Verfasst: 06.05.2005 12:52
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

Verfasst: 06.05.2005 13:35
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

Verfasst: 06.05.2005 13:49
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

Verfasst: 06.05.2005 13:56
von Schumi
Richtig ist:

Code: Alles auswählen

if ( $userdata['session_logged_in'] &&  $userdata['user_lang'] =='german' || $userdata['user_lang'] == 'german_sie' ) 

Verfasst: 06.05.2005 13:58
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

Verfasst: 06.05.2005 19:15
von Elo
if ( $userdata['session_logged_in'] && ( $userdata['lang'] =='german' || $userdata['lang'] =='german_sie' ) )
ist die korrekte Abfrage.

elo

Verfasst: 07.05.2005 14:28
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

Verfasst: 08.05.2005 00:11
von Elo
Irgendwie kommt es mir so vor als schreibe ich hier für mich selbst.


elo