2013-04-21 74 views
1

我有一些代碼依賴於會議PHP多語言問題

這裏改變我的語言是我的PHP代碼

function make_lang(){ 
     session_start(); 
     if(isset($_POST['a'])){ 
      $_SESSION['a']=true; 
      unset ($_SESSION['e']); 
      unset ($_SESSION['f']); 
     } 
     if(isset($_POST['e'])){ 
      $_SESSION['e']=true; 
      unset ($_SESSION['a']); 
      unset ($_SESSION['f']); 
     } 
     if(isset($_POST['f'])){ 
      $_SESSION['f']=true; 
      unset ($_SESSION['e']); 
      unset ($_SESSION['a']); 
     } 
    } 

    function lang_path(){ 

     if(!isset($_SESSION['e']) or !isset($_SESSION['f'])){ 
      include('lan/a.php'); 
      echo '<link rel="stylesheet" type="text/css" href="css/style-z.php" />'; 
     } 

     if(isset($_SESSION['a'])){ 
      $lang = "a"; 
     } 

     if(isset($_SESSION['e'])){ 
      $lang = "e"; 
     } 

     if(isset($_SESSION['f'])){ 
      $lang = "f"; 
     } 

     $path="lan/".$lang.".php"; 

     return $path; 
    } 

    function lang_css(){ 
     if(isset($_SESSION['a'])){ 
      $css = "style-z"; 
     } 

     if(isset($_SESSION['e'])){ 
      $css = "style-zleft"; 
     } 

     if(isset($_SESSION['f'])){ 
      $css = "style-zleft"; 
     } 
     $css_i="css/".$css.".css"; 
     return $css_i; 
    } 

    make_lang(); 

    $l_file = lang_path(); 
    include($l_file); 

    $l_css = lang_css(); 
    echo '<link rel="stylesheet" type="text/css" href="'.$l_css.'" />'; 

HTML表單

 <form method="post" class="login-img"> 
     <input name="e" type="submit" value="English" class="login-img" /> 
     <input name="a" type="submit" value="Arabic" class="login-img" /> 
     <input name="f" type="submit" value="Frinch" class="login-img" /> 
     </form> 

問題是

當你點擊網站上的任何超鏈接都不起作用的代碼,但在按下語言按鈕的情況下GE網站出現以及 但在壓力上的任何其他超級鏈接的情況下無法正常工作的網站

網站鏈接:http://www.hh4track.com/

感謝您的幫助。

+0

請縮進代碼,並與所有那些'未設置()單曲我覺得你這樣做是完全錯誤的。此外,你還不清楚你想做什麼。 – HamZa 2013-04-21 14:02:37

+0

'include'這個php文件在其他人的開始 – Amir 2013-04-21 14:10:26

+0

我做了三個會話。任何語言都有一個sesison ok,並將語言文件和css文件添加到會話中 – 2013-04-21 14:17:12

回答

0

看你的網頁源代碼,它看起來像你的呼應<head></head>標籤之外樣式表,以及<!DOCTYPE ...>標記之前 -
索引頁面的源代碼 -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="keywords" content="tracker" /> 
<meta name="description" content="" /> 
<title>HH4track</title> 
<link href="css/style-z.css" rel="stylesheet" type="text/css" /> 
</head> 

所有其它頁面的源代碼 -

<link rel="stylesheet" type="text/css" href="css/style-z.php" /><link rel="stylesheet" type="text/css" href="css/.css" /><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
.... 
</head> 

不管是用什麼語言鏈接點擊,您echo'ed樣式表是 -

<link rel="stylesheet" type="text/css" href="css/style-z.php" /> 
<link rel="stylesheet" type="text/css" href="css/.css" /> 

看起來您的語言會話設置不正確。爲什麼還有3 $_SESSION變量?你可以用1做 - $_SESSION['lang']和簡化代碼 -

session_start(); 
function make_lang(){ 
    if(isset($_POST['a'])){ 
    $_SESSION['lang']='a';} 
    if(isset($_POST['e'])){ 
    $_SESSION['lang']='e';} 
    if(isset($_POST['f'])){ 
    $_SESSION['lang']='f';} 
} 

function lang_path(){ 
    if($_SESSION['lang'] == 'a'){ 
     $lang = "a";} 
    if($_SESSION['lang'] == 'e'){ 
     $lang = "e";} 
    if($_SESSION['lang'] == 'f'){ 
     $lang = "f";} 

    $path="lan/".$lang.".php"; 

    return $path; 
} 

function lang_css(){  
    if($_SESSION['lang'] == 'a'){ 
     $css = "style-z";} 
    else{ 
     $css = "style-zleft";} 

$css_i="css/".$css.".css"; 
return $css_i; 
} 


make_lang(); 

$l_file = lang_path(); 
include($l_file); 

$l_css = lang_css(); 
echo '<link rel="stylesheet" type="text/css" href="'.$l_css.'" />'; 
+0

不工作我的朋友 – 2013-04-23 07:21:49

+0

任何其他的想法proplem – 2013-04-23 07:22:49

+0

您是否嘗試在其他頁面上打印/回顯您的$ _SESSION數組以確保它們已設置? '的print_r($ _ SESSION)' – Sean 2013-04-23 16:12:22