【发布时间】:2023-03-05 18:22:01
【问题描述】:
我很确定这在以前是有效的,所以我不知道我为开发中的网站使用的语言选择器的代码发生了什么变化。这是php:
<?php
session_start();
if(isset($_POST['language'])) {
$_SESSION['language'] = $_POST['language'];
}
$language = (isset($_SESSION['language']) ? $_SESSION['language'] : "english");
include('/Languages/'.$language.'.php');
?>
HTML:
<form method="post">
<input type="image" name="language" value="english" src="Images/english.png"/>
<input type="image" name="language" value="spanish" src="Images/spanish.png"/>
...
</form>
每个“字典”文件中的 PHP:
<?php
$content = array(
"identifier1"=>'content with html to be included',
"identifier2"=>'more content to be included'
);
?>
最后,在实际页面上调用正确语言的代码:
<?php echo $content['identifier1']; ?>
所以这应该通过让用户单击表单中的一张图像来工作。表单发送单击图像的值,即应打开的语言文件的名称。位于页面头部的 PHP 然后获取该值,并包含字典文件(例如,english.php),然后可以从上面的 echo 在 HTML 中引用该文件。
但是,我无法让它工作。当我单击图像时,页面会重新加载。我试过做一个<?php echo 'stuff'; ?>,这很有效,所以我的PHP应该可以工作。这意味着代码一定有问题。
【问题讨论】:
-
您是否尝试过调试问题出现在哪一点?
-
我认为所有内容都包含在同一页面中,因为您使用
<form method="post">没有任何操作。默认情况下,没有任何操作就像发帖给自己一样。 -
另外
<?php echo $content['index1']; ?>不应该是<?php echo $content['identifier1']; ?>吗?并且您的表单元素(如果它们是输入)可能需要不同的名称。两者都设置为name="language" -
如示例中所示,$content 不包含“index1”条目。应该是'indentifier1',不是吗?
-
这段代码非常危险,它允许用户在您的服务器上包含他们知道路径的ANY php 文件。
标签: php html translation