HTML/PHP/AJAX/JS - PHP i replace dla języków
Radek - 22-04-2008, 12:20
A nie lepiej tego w cookies trzymać?
WoGuziczek - 22-04-2008, 13:06
Widmo napisał/a: | WoGuziczek, poniewaz $_SESSION przechowywane jest przez serwer, a wczesniej wyfiltrowaliśmy już zmienne i nie ma mozliwości ataku, możesz zrobić tak:
Kod: | <?php include 'language/lang_' . $_SESSION['lang'] . '.php'; ?> |
|
OK! W takim razie nazwy plików to:
lang_pl.php
lang_eng.php
lang_ger.php
?
[ Dodano: 22-04-2008, 14:07 ]
RuseK, a jak to w cookies trzymać?
Skrypt pls
[ Dodano: 22-04-2008, 14:17 ]
Niestety mam błąd...
Tak wygląda mój plik testowy index.php:
Kod: | <?php
// otwieramy sesję
session_start();
// pobieramy ustawienie z GET i zapisujemy w sesji nasz jezyk
if( isset( $_GET['lang'] ) )
{
switch( $_GET['lang'] )
{
case: 'pl'
$_SESSION['lang'] = 'pl';
break;
case: 'en'
$_SESSION['lang'] = 'en';
break;
case: 'de'
$_SESSION['lang'] = 'de';
break;
}
}
// wybieramy domyślny język
if( $_SESSION['lang'] == '' )
{
$_SESSION['lang'] = 'pl';
}
// dobieramy odpowiednie pliki ze zmiennymi językowymi
include 'lang/lang_' . $_SESSION['lang'] . '.php';
// wyświetlamy
echo 'Twój jezyk to: <b>' . $_SESSION['lang'] . '</b>;
?> |
ERROR:
Kod: | Parse error: syntax error, unexpected ':' in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 11 |
Radek - 22-04-2008, 13:48
index.php
Kod: | <?php
// otwieramy sesję
session_start();
// pobieramy ustawienie z GET i zapisujemy w sesji nasz jezyk
if( isset( $_GET['lang'] ) )
{
switch( $_GET['lang'] )
{
case 'pl':
$_SESSION['lang'] = 'pl';
break;
case 'en':
$_SESSION['lang'] = 'en';
break;
case 'de':
$_SESSION['lang'] = 'de';
break;
}
}
// wybieramy domyślny język
if( $_SESSION['lang'] == '' )
{
$_SESSION['lang'] = 'pl';
}
// dobieramy odpowiednie pliki ze zmiennymi językowymi
include 'lang/lang_' . $_SESSION['lang'] . '.php';
// wyświetlamy
echo 'Twój jezyk to: <b>' . $_SESSION['lang'] . '</b>;
?> |
pliki nazywasz
lang_pl.php
lang_en.php
lang_de.php
WoGuziczek - 22-04-2008, 14:12
Kod: | Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 35
Parse error: syntax error, unexpected '<' in /home/wog/domains/zobaczip.info/public_html/2/index.php on line 35 |
Radek - 22-04-2008, 14:20
Kod: | echo 'Twój jezyk to: <b>' . $_SESSION['lang'] . '</b>; |
zamien na:
Kod: | echo 'Twój jezyk to: <b>' . $_SESSION['lang'] . '</b>'; |
WoGuziczek - 22-04-2008, 14:36
DZIAŁA!
I tak powinno być
Dzisiaj jeszcze będę testował dokładniej, także jak coś - dam znać w temacie.
Widmo - 22-04-2008, 23:04
RuseK napisał/a: | A nie lepiej tego w cookies trzymać? |
moszna
mozna z cookiesa do sesji kopiowac jak jest jak nie to z sesji do cookiesa.
WoGuziczek, zainstaluj sobie pajaczka, bo jak bedziesz mial kolorowanie skladni to szybciej bledy znajdziesz.
Rusek, OK
WoGuziczek - 23-04-2008, 15:39
Witam!
Oto mój plik testowy index.php
Kod: | <?php
// otwieramy sesję
session_start();
// pobieramy ustawienie z GET i zapisujemy w sesji nasz jezyk
if( isset( $_GET['lang'] ) )
{
switch( $_GET['lang'] )
{
case 'en':
$_SESSION['lang'] = 'en';
break;
case 'de':
$_SESSION['lang'] = 'de';
break;
case 'pl':
$_SESSION['lang'] = 'pl';
break;
}
}
// wybieramy domyślny język
if( $_SESSION['lang'] == '' )
{
$_SESSION['lang'] = 'pl';
}
// dobieramy odpowiednie pliki ze zmiennymi językowymi
include 'lang/lang_' . $_SESSION['lang'] . '.php';
// wyświetlamy zmienną językową z sesji
echo 'Twoja zmienna językowa: <b>' . $_SESSION['lang'] . '<br><br></b>';
//poładniamy nazwy języka
echo 'Twój język to: ';
if ( $_SESSION['lang'] == 'en' )
{
print '<b>English</b>';
}
elseif ( $_SESSION['lang'] == 'de' )
{
print '<b>Deutsch</b>';
}
else
{
print '<b>Polski</b>';
}
echo '<br><br>';
//wybieramy język manualnie [skrypt wykonujący]
echo '<script type="text/javascript">
function lang_change(url)
{ location = url; }
</script>';
//wyświetlamy listę języków i wybieramy język manualnie
echo '<select onChange="lang_change(this.value);">';
if ( $_SESSION['lang'] == 'en' )
{
echo '<option value="?lang=en">English (EN)</option>
<option value="?lang=de">Deutsch (DE)</option>
<option value="?lang=pl">Polski (PL)</option></select>';
}
elseif ( $_SESSION['lang'] == 'de' )
{
echo '<option value="?lang=de">Deutsch (DE)</option>
<option value="?lang=en">English (EN)</option>
<option value="?lang=pl">Polski (PL)</option></select>';
}
else
{
echo '<option value="?lang=pl">Polski (PL)</option>
<option value="?lang=de">Deutsch (DE)</option>
<option value="?lang=en">English (EN)</option></select>';
}
echo '<br><br>';
echo '<center><font color="red" size="4">$page_name</font></center>';
|
Niestety mam taki problem, że skrypt nie wyświetla mi prawidłowo zmiennych.
Wpisując na środku strony $page_name na stronie wyświetla się dokładnie $page_name zamiast tego co mam w zmiennej w pliku:
lang/lang_pl.php
Kod: | <?php
$page_name = 'zobaczIP.info';
?> |
O co kaman
adam.exe - 23-04-2008, 16:26
Zmień cudzysłów z ' na " tam gdzie masz tę zmienną.
Kod: |
$lang =en;
echo'$lang';
|
wyswietli $lang, ale:
Kod: |
$lang =en;
echo"$lang";
|
wyświetli en
gaku - 23-04-2008, 16:59
Kod: | echo '<center><font color="red" size="4">'.$page_name.'</font></center>'; |
WoGuziczek - 23-04-2008, 17:13
ani pierwszy, ani drugi sposób nie działa
może ktoś skrypcik uruchomi, hm?
gaku - 23-04-2008, 17:32
Kod: | echo "<center><font color=\"red\" size=\"4\">".$page_name."</font></center>"; | To już musi działać
WoGuziczek - 23-04-2008, 17:50
Zrobiłem tak:
Kod: | echo "<center><font color='red' size='4'>$page_name</font></center>"; |
i złapał
Widmo - 23-04-2008, 22:16
ale tak jest nie ladnie
Kod: | echo '<center><font color="red" size="4">'. $page_name . '</font></center>'; |
tak musi byc i MUSI dzialac.
WoGuziczek - 24-04-2008, 13:54
OK!
A teraz chciałem zapytać jak z kodowaniem zrobić?
W indexie mam:
Kod: | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="pl"> |
w plikach językowych tylko zmienne z wartościami (polskie znaki są)
i na stronie nie wyświetla polskich znaków.
Jak rozwiązać ten problem?
[ Dodano: 24-04-2008, 14:58 ]
Po ustawieniu na stronie kodowania iso8859-2, a w plikach językowych polskie znaki zastąpiłem odpowiednikami np. ą > ± to wtedy już działa. Mimo wszystko chciałbym wiedzieć jak rozwiązać ten problem na unicode utf8.
Mogę jeszcze zrobić tak, że w plikach językowych dać polskie znaki, i dorzucić skrypt zamieniający np. Kod: |
array(
'ą' => '±',
'Ą' => 'ˇ',
'ż' => 'ż',
'Ż' => 'Ż',
'ź' => 'Ľ',
'Ź' => '¬',
'ę' => 'ę',
'Ę' => 'Ę',
'ć' => 'ć',
'Ć' => 'Ć',
'ś' => '¶',
'Ś' => '¦',
'ł' => 'ł',
'Ł' => 'Ł',
'ó' => 'ó',
'Ó' => 'Ó',
'ń' => 'ń',
'Ń' => 'Ń'
); |
I niestety to nie działa, bo teraz zamiast polskich znaków - pojawiają się krzaczkii ;/
Co jest?
w znacznikach code niektóre znaki iso8859-2 straciły wygląd i są oznakowane przez te np. #8518 bla bla
[ Dodano: 24-04-2008, 18:49 ]
A i mam jeszcze takie pytanie, bo mam link do zmiany linku
Kod: | <a href="?lang=pl">Zmien na polski</a> |
Załóżmy, że mam otwartą stronę index.php?url=podstrona
i jak kliknę zmianę języka to mi wbija samo index.php?lang=pl.
Co mogę zrobić, żeby mi dodawał to do obecnej zawartości get, a nie zastąpywał?
|
|
|