2013-04-21 57 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