Potřebovala bych poradit, pokud mám jeden soubor, ve kterém je umístěn kód php (viz kód 1), funguje mi přepínání jazykové verze.
Pokud ho rozdělím do dvou souborů (viz soubor + kód 2), nefunguje.
V čem je problém? Poraďte, prosím...
kód 1:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<? if (!isset($lg)) { // není-li zvolena verze, zvolit automaticky
$lg = explode(",",$HTTP_ACCEPT_LANGUAGE);
$lg = StrToLower(Substr(chop($lg[0]),0,2)); // vybrat první dva znaky preferovaného jazyka
}
if ($lg=="sk") // pokud klient preferuje slovenštinu, kterou nemáte k dispozici, přenastavit jinou vhodnou verzi
$lg="cs";
if (($lg<>"en") && ($lg<>"cs")) // ověřit, zda není požadována nedostupná verze
$lg="en";
if (($lg=="cs") or ($lg=="sk")):
echo "<title>Výroba modelů a maket</title>";
else:
echo "<title>Production of models</title>";
endif ?>
</head>
<body>
<? if (($lg=="cs") or ($lg=="sk")):
echo "<h1>Výroba modelů a maket</h1>";
else:
echo "<h1>Production of models</h1>";
endif ?>
<a href="?lg=cs">česky</a> | <a href="?lg=en">English</a>
</body>
soubor:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<? require "http://lasinka.wz.cz/verze.php"?>
</body>
kód 2:
<? if (!isset($lg)) { // není-li zvolena verze, zvolit automaticky
$lg = explode(",",$HTTP_ACCEPT_LANGUAGE);
$lg = StrToLower(Substr(chop($lg[0]),0,2)); // vybrat první dva znaky preferovaného jazyka
}
if ($lg=="sk") // pokud klient preferuje slovenštinu, kterou nemáte k dispozici, přenastavit jinou vhodnou verzi
$lg="cs";
if (($lg<>"en") && ($lg<>"cs")) // ověřit, zda není požadována nedostupná verze
$lg="en";
if (($lg<>"en") && ($lg<>"cs")) // ověřit, zda není požadována nedostupná verze
$lg="en";
if (($lg=="cs") or ($lg=="sk")):
echo "<title>Výroba modelů a maket</title>";
else:
echo "<title>Production of models</title>";
endif ?>
<? echo "</head>" ?>
<? echo "<body>" ?>
<? if (($lg=="cs") or ($lg=="sk")):
echo "<h1>Výroba modelů a maket</h1>";
else:
echo "<h1>Production of models</h1>";
endif ?>
<a href="?lg=cs">česky</a> | <a href="?lg=en">English</a>
1. Nevkladej to tam absolutni cestou, protoze tak se ti strati promenne
2. Tohle je blbost:<? if (($lg=="cs") or ($lg=="sk")):, lang nemuze byt sk, vzdy se prepina na cs ...
Díky za radu, nedošlo mi, že vlastně nepotřebuji if (($lg=="cs") or ($lg=="sk")):, protože mám předtím slovenštinu převedenou na češtinu, s php teprve začínám, takže mám ještě spoustu mezer.
Je nějaký způsob, jak vyřešit, aby se proměnné neztratily, čili aby se dala využít i absolutní cesta, pokud by soubory byly na dvou různých serverech?
Vítám každou radu...
To by neslo, dej to na stejny server a pouzij relativni adresu (./soubor.php)
A netušíš, jestli je nějaká možnost, jak rozchodit tuhle situaci:
mám kompletní web na jiném serveru, kde funguje sice php, ale nefunguje tam přepínání verzí v jednom souboru (čili kód 1), takže mne napadlo právě to, že by se dala část s detekcí umístit jako součást jiného mého webu tady, kde to funguje, a soubory propojit.
Stěhovat celý web by sice bylo řešení, jenže potom by bylo dost práce měnit veškeré registrace ve vyhledávačích a katalozích.
Vim proc na tom webu nejde to prepinani (asi), ty spolehas na to, ze tam je zaplne register_globals, ale tam asi neni, takze pri predavani promenne pres URL pouzivej superglobalni promennou $_GET ($_GET['lg]) a tam to je, protoze kdyz je register_globals=off, tak se to nepredava do promenne $lg, ale pouze do $_GET (postaru $HTTP_GET_VARS), takze to hledej tam. Skus google, tato tematika je vsude omilana cast. Jinak pro jazykove verze doporucuji Session ...
Díky za vysvětlení a typy, tušila jsem, že bude příčinou něco takového, takže vzhledem ke svým dosavadním chabým znalostem a zkušenostem budu doplňovat poznatky a hledat nějaké řešení.
Pokud by náhodou měl někdo i konkrétní typ na vhodný ucelený kód, byla bych mu neskonale vděčná...
Ale tak chabe znalosti v php mel asi kazdy, pokud budu mit cas a naladu (ted jsem nemocny, casu dost ;), tak napis ... 174706276
Tak v této podobě mi chodí přepínání verzí, ale nefunguje mi detekce jazyka, nejspíš se nedá použít zahajovací script v té podobě, jak ho mám. Poradí mi někdo, jak to napsat správně?
Díky...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<script language="php"> if (!isset($_GET["lg"])) { // není-li zvolena verze, zvolit automaticky
$_GET["lg"] = explode(",",$HTTP_ACCEPT_LANGUAGE);
$_GET["lg"] = StrToLower(Substr(chop($_GET["lg"][0]),0,2)); // vybrat první dva znaky preferovaného jazyka
}
if ($_GET["lg"]=="sk") // pokud klient preferuje slovenštinu, kterou nemáte k dispozici, přenastavit jinou vhodnou verzi
$_GET["lg"]="cs";
if (($_GET["lg"]<>"en") && ($_GET["lg"]<>"cs")) // ověřit, zda není požadována nedostupná verze
$_GET["lg"]="en";
if ($_GET["lg"]=="cs"):
echo "<title>Výroba modelů a maket</title>";
else:
echo "<title>Production of models</title>";
endif </script>
</head>
<body>
<script language="php"> if ($_GET["lg"]=="cs"):
echo "<h1>Výroba modelů a maket</h1>";
else:
echo "<h1>Production of models</h1>";
endif </script>
<a href="?lg=cs">česky</a> | <a href="?lg=en">English</a>
</body>
1.Co znamená <script language="php">? Já používám vždycky jenom
<?
echo "blebleble";
?>
2.možná by to mohlo být tím, že máš za tym: if ($_GET["lg"]=="sk") dvě lomítka a hodnotu máš až na dalšim řádku. Mělo by to vypadat asi takto:
if ($_GET["lg"]=="sk") $_GET["lg"]="cs"; // pokud klient preferuje slovenštinu, kterou nemáte k dispozici, přenastavit jinou vhodnou verzi
if (($_GET["lg"]<>"en") && ($_GET["lg"]<>"cs")) $_GET["lg"]="en"; // ověřit, zda není požadována nedostupná verze
Ale nevím, zda jsi tu nápovědu nenapsala pouze kvuli nám.
Kdybys potřebovala něco o PHP napiš.
> 1.Co znamená <script language="php">
Jen dalsi zpusob, jak sdelit serveru, ze se jedna o php..
Ještě malá připomínka: na stránce http://lasinka.wz.cz/ předpokládám že tvoje, bys mohla povolit rozšiřování horního frámu, 1: dá se schovat reklama, 2: po naběhnutí nejsou vidět odkazy pod reklamou.
Ad [Sojkovec]: jo díky taky mě to napadlo, ale já tuhle verzi používam s JavaScriptem, tak jsem si nebyl jist.
Pif: ja vim, vypada to trochu podivne, ale funguje to...
Díky všem za rady, konečně mi funguje - výsledný script, který chodí i na serveru, kde jsou vypnuté register_globals je následující:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<? if (!isset($_GET["lg"])) {
$_GET["lg"] = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$_GET["lg"] = StrToLower(Substr(chop($_GET["lg"][0]),0,2));
}
if ($_GET["lg"]=="sk")
$_GET["lg"]="cs";
if (($_GET["lg"]<>"en") && ($_GET["lg"]<>"cs"))
$_GET["lg"]="en";
if ($_GET["lg"]=="cs"):
echo "<title>Výroba modelů a maket</title>";
else:
echo "<title>Production of models</title>";
endif;
?>
</head>
<body>
<? if ($_GET["lg"]=="cs"):
echo "<h1>Výroba modelů a maket</h1>";
else:
echo "<h1>Production of models</h1>";
endif;
?>
<a href="?lg=cs">česky</a> | <a href="?lg=en">English</a>
</body>
Bylo potřeba upravit začátek - doplnit: $_SERVER['HTTP_ACCEPT_LANGUAGE'] - tenhle účinný typ mi poskytl #lama, takže díky.
ad Pif
díky taky za připomínku k rámům, ta stránka je moje, i když ne zrovna aktuální a využívaná, hlavně jsem potřebovala otestovat prostor, než na něj umístím stránky, které tvořím teď.
Tvoji nabídku na pomoc s php vedu v patrnosti, ráda ji někdy využiju