Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
直接从索引文件调用PHP条件语句(与HTML标记混合)是一种不好的做法吗?_Php_Html_Conditional - Fatal编程技术网

直接从索引文件调用PHP条件语句(与HTML标记混合)是一种不好的做法吗?

直接从索引文件调用PHP条件语句(与HTML标记混合)是一种不好的做法吗?,php,html,conditional,Php,Html,Conditional,有些人告诉我,以下代码不利于HTML验证: index.php: 第1~5行(此行可以,仅供参考): 第15行(如果选择中文,则加载这些CSS文件): 第21行(如果英语是当前语言更改,则为其指定类别:当前): lozalization.php(仅供参考): 我陷入了不良做法或验证问题?代码是有效的,但是有没有一种方法可以更干净、更好地完成上面的工作?我不能专门针对错误的做法,但是在加载正确的jquery脚本方面,只需对$lang_文件的内容进行子字符串匹配,然后将其连接到包含所

有些人告诉我,以下代码不利于HTML验证:

index.php:

第1~5行(此行可以,仅供参考):


第15行(如果选择中文,则加载这些CSS文件):


第21行(如果英语是当前语言更改,则为其指定类别:当前):


lozalization.php(仅供参考):



我陷入了不良做法或验证问题?代码是有效的,但是有没有一种方法可以更干净、更好地完成上面的工作?

我不能专门针对错误的做法,但是在加载正确的jquery脚本方面,只需对$lang_文件的内容进行子字符串匹配,然后将其连接到包含所有脚本的目录的末尾。这样,您就可以添加/删除区域设置,而无需更改脚本。

如果索引文件中的PHP语句生成有效的HTML,那么它们对HTML验证来说并不坏。如果您在web浏览器中检查页面的源代码,您将看到所有的PHP标记都消失了,并替换为它们要生成的任何内容。这就是得到验证的东西

至于让东西更干净,你可以试着更换

<?php if($lang_file=='lang.en.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-en.js"></script>';} ?>
<?php if($lang_file=='lang.es.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-es.js"></script>';} ?>
<?php if($lang_file=='lang.zh-tw.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-zh-tw.js"></script>';} ?>
<?php if($lang_file=='lang.zh-cn.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-zh-cn.js"></script>';} ?>

有点像

<?php
$lang = explode('.',$lang_file);
echo '<script type="text/javascript" src="scripts/jquery-validate/val-'.$lang[1].'.js"></script>' ?>


这样,假设
$lang_file
和验证脚本之间的变量转换总是沿着lang.en.php到val-en.js的行进行,这将支持您想要使用的任何语言,而不需要每个语言都有一行代码。显然,如果用户可以操纵$lang_文件,那么您需要确保它包含您希望它包含的内容。

我工作得很好,谢谢。还有一件事,为什么要包含爆炸的东西?不要运行代码!他想炸掉你的服务器!J/k:BTW,为Firefox安装PHP.net搜索工具。这样你就可以很容易地查找php函数。@Lèse majestéHa你吓了我一跳,因为我不知道j/k的含义。explode将字符串转换为数组,沿参数分解,在本例中为“.”-实际上,我们需要的是$lang_文件前两点之间的部分。因此,首先我们将其分解为一个数组,然后选择第二个元素(索引1)
<li <?php if($lang_file=='lang.en.php') {echo 'class="current"';} ?>>
<a href="index.php?lang=en">ENGLISH</a></li>
<?php if($lang_file=='lang.en.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-en.js"></script>';} ?>
<?php if($lang_file=='lang.es.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-es.js"></script>';} ?>
<?php if($lang_file=='lang.zh-tw.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-zh-tw.js"></script>';} ?>
<?php if($lang_file=='lang.zh-cn.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-zh-cn.js"></script>';} ?>
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang'])) {
    $lang = $_GET['lang'];

    // register the session and set the cookie
    $_SESSION['lang'] = $lang;
    setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang'])) {
    $lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang'])) {
    $lang = $_COOKIE['lang'];
}
else {
    $lang = 'en';
}

// use appropiate lang.xx.php file according to the value of the $lang
$languages = array('en', 'es', 'zh-tw', 'zh-cn');
if (in_array($_SESSION['lang'], $languages)) {
    $lang_file = 'lang.'.$_SESSION['lang'].'.php';
} else {
    $lang_file = 'lang.en.php';
}

//localization helper function
function l($localization) {
    global $lang;
    return $lang[$localization];
}
    include_once 'languages/'.$lang_file;
?>
<?php if($lang_file=='lang.en.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-en.js"></script>';} ?>
<?php if($lang_file=='lang.es.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-es.js"></script>';} ?>
<?php if($lang_file=='lang.zh-tw.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-zh-tw.js"></script>';} ?>
<?php if($lang_file=='lang.zh-cn.php') {echo '<script type="text/javascript" src="scripts/jquery-validate/val-zh-cn.js"></script>';} ?>
<?php
$lang = explode('.',$lang_file);
echo '<script type="text/javascript" src="scripts/jquery-validate/val-'.$lang[1].'.js"></script>' ?>