Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.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文件_Php_Html - Fatal编程技术网

根据所选选项需要不同的php文件

根据所选选项需要不同的php文件,php,html,Php,Html,我对php非常陌生,我曾考虑通过要求一个包含变量的文件(取决于所选语言)来改变网站上的语言 目前,它只有两种语言,但会更多。带有英语块的变量存储在content.php文件中,变量存储在俄语ru.php中 这是我的html表单: EN 茹 要在整个网站中持久保存用户的语言选择,并在一段时间内存储他们的偏好,您有3个主要选项: COOKIES $\u会话变量 数据库查找 出于各种原因,我喜欢$u课程。学习 必须在每个页面的顶部使用以下PHP(我们称之为requires.PHP)。它可能是这样的

我对php非常陌生,我曾考虑通过要求一个包含变量的文件(取决于所选语言)来改变网站上的语言

目前,它只有两种语言,但会更多。带有英语块的变量存储在content.php文件中,变量存储在俄语ru.php中

这是我的html表单:


EN
茹

要在整个网站中持久保存用户的语言选择,并在一段时间内存储他们的偏好,您有3个主要选项:

  • COOKIES
  • $\u会话变量
  • 数据库查找
  • 出于各种原因,我喜欢$u课程。学习

    必须在每个页面的顶部使用以下PHP(我们称之为
    requires.PHP
    )。它可能是这样的:


    需要.php

    $timeout = 60*60*3; // 3 hour maximum session timeout
    session_start([
        'name'            => 'my_groovy_session',
        'gc_maxlifetime'  => $timeout, // server session lifetime
        'cookie_lifetime' => $timeout, // client cookie lifetime
        ]);
    
    // set language if empty
    if (empty($_SESSION['lang'])) $_SESSION['lang'] = 'en';
    
    // choose file
    if (is_file('languages/'. $_SESSION['lang'] .'.php')) {
        require_once 'languages/'. $_SESSION['lang'] .'.php';
    } else {
        require_once 'languages/en.php';
    }
    
    $_SESSION['lang'] = $_POST['language'];
    
    $words = [
        'welcome' => 'Welcome to so-and-so',
        'email'   => 'Please email us at blah@blah.com',
        'close'   => 'Close',
    ];
    
    $words = [
        'welcome' => 'Добро пожаловать в такое-то',
        'email'   => 'Пожалуйста, напишите нам на blah@blah.com',
        'close'   => 'Закрыть',
    ];
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am english";
    ?>
    
    </body>
    </html>
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am russian";
    ?>
    
    </body>
    </html>
    

    您的
    lang.php
    就是这样的:

    lang.php

    $timeout = 60*60*3; // 3 hour maximum session timeout
    session_start([
        'name'            => 'my_groovy_session',
        'gc_maxlifetime'  => $timeout, // server session lifetime
        'cookie_lifetime' => $timeout, // client cookie lifetime
        ]);
    
    // set language if empty
    if (empty($_SESSION['lang'])) $_SESSION['lang'] = 'en';
    
    // choose file
    if (is_file('languages/'. $_SESSION['lang'] .'.php')) {
        require_once 'languages/'. $_SESSION['lang'] .'.php';
    } else {
        require_once 'languages/en.php';
    }
    
    $_SESSION['lang'] = $_POST['language'];
    
    $words = [
        'welcome' => 'Welcome to so-and-so',
        'email'   => 'Please email us at blah@blah.com',
        'close'   => 'Close',
    ];
    
    $words = [
        'welcome' => 'Добро пожаловать в такое-то',
        'email'   => 'Пожалуйста, напишите нам на blah@blah.com',
        'close'   => 'Закрыть',
    ];
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am english";
    ?>
    
    </body>
    </html>
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am russian";
    ?>
    
    </body>
    </html>
    

    此方法将所有翻译添加到同一目录中。它们可能看起来像这样:

    en.php

    $timeout = 60*60*3; // 3 hour maximum session timeout
    session_start([
        'name'            => 'my_groovy_session',
        'gc_maxlifetime'  => $timeout, // server session lifetime
        'cookie_lifetime' => $timeout, // client cookie lifetime
        ]);
    
    // set language if empty
    if (empty($_SESSION['lang'])) $_SESSION['lang'] = 'en';
    
    // choose file
    if (is_file('languages/'. $_SESSION['lang'] .'.php')) {
        require_once 'languages/'. $_SESSION['lang'] .'.php';
    } else {
        require_once 'languages/en.php';
    }
    
    $_SESSION['lang'] = $_POST['language'];
    
    $words = [
        'welcome' => 'Welcome to so-and-so',
        'email'   => 'Please email us at blah@blah.com',
        'close'   => 'Close',
    ];
    
    $words = [
        'welcome' => 'Добро пожаловать в такое-то',
        'email'   => 'Пожалуйста, напишите нам на blah@blah.com',
        'close'   => 'Закрыть',
    ];
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am english";
    ?>
    
    </body>
    </html>
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am russian";
    ?>
    
    </body>
    </html>
    

    ru.php

    $timeout = 60*60*3; // 3 hour maximum session timeout
    session_start([
        'name'            => 'my_groovy_session',
        'gc_maxlifetime'  => $timeout, // server session lifetime
        'cookie_lifetime' => $timeout, // client cookie lifetime
        ]);
    
    // set language if empty
    if (empty($_SESSION['lang'])) $_SESSION['lang'] = 'en';
    
    // choose file
    if (is_file('languages/'. $_SESSION['lang'] .'.php')) {
        require_once 'languages/'. $_SESSION['lang'] .'.php';
    } else {
        require_once 'languages/en.php';
    }
    
    $_SESSION['lang'] = $_POST['language'];
    
    $words = [
        'welcome' => 'Welcome to so-and-so',
        'email'   => 'Please email us at blah@blah.com',
        'close'   => 'Close',
    ];
    
    $words = [
        'welcome' => 'Добро пожаловать в такое-то',
        'email'   => 'Пожалуйста, напишите нам на blah@blah.com',
        'close'   => 'Закрыть',
    ];
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am english";
    ?>
    
    </body>
    </html>
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am russian";
    ?>
    
    </body>
    </html>
    

    然后,在任何使用
    requires.PHP
    的PHP文件中,您可以用用户的首选语言输出单词:

    echo $words['welcome'];
    
    只需确保数组
    键本身(欢迎、发送电子邮件、关闭)未翻译



    注意:上面对数组使用了短数组语法
    []
    。如果您使用的是PHP版本<5.4,则需要使用下面的
    array()

    代码结构。您可以添加所需的文件以使其正常工作

    form.html

    我已经更改了
    onchange=“this.form.submit()”

    
    EN
    茹
    
    lang.php

    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $option = $_POST['language'];
    
    if ($option == 'ru')
      {
        require('ru.php');
        echo($word);                 
      }
    
    if ($option =='en')
      {
        require('en.php');
        echo($word); 
      }
    ?>
    
    </body>
    </html>
    
    
    
    en.php

    $timeout = 60*60*3; // 3 hour maximum session timeout
    session_start([
        'name'            => 'my_groovy_session',
        'gc_maxlifetime'  => $timeout, // server session lifetime
        'cookie_lifetime' => $timeout, // client cookie lifetime
        ]);
    
    // set language if empty
    if (empty($_SESSION['lang'])) $_SESSION['lang'] = 'en';
    
    // choose file
    if (is_file('languages/'. $_SESSION['lang'] .'.php')) {
        require_once 'languages/'. $_SESSION['lang'] .'.php';
    } else {
        require_once 'languages/en.php';
    }
    
    $_SESSION['lang'] = $_POST['language'];
    
    $words = [
        'welcome' => 'Welcome to so-and-so',
        'email'   => 'Please email us at blah@blah.com',
        'close'   => 'Close',
    ];
    
    $words = [
        'welcome' => 'Добро пожаловать в такое-то',
        'email'   => 'Пожалуйста, напишите нам на blah@blah.com',
        'close'   => 'Закрыть',
    ];
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am english";
    ?>
    
    </body>
    </html>
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am russian";
    ?>
    
    </body>
    </html>
    
    
    
    ru.php

    $timeout = 60*60*3; // 3 hour maximum session timeout
    session_start([
        'name'            => 'my_groovy_session',
        'gc_maxlifetime'  => $timeout, // server session lifetime
        'cookie_lifetime' => $timeout, // client cookie lifetime
        ]);
    
    // set language if empty
    if (empty($_SESSION['lang'])) $_SESSION['lang'] = 'en';
    
    // choose file
    if (is_file('languages/'. $_SESSION['lang'] .'.php')) {
        require_once 'languages/'. $_SESSION['lang'] .'.php';
    } else {
        require_once 'languages/en.php';
    }
    
    $_SESSION['lang'] = $_POST['language'];
    
    $words = [
        'welcome' => 'Welcome to so-and-so',
        'email'   => 'Please email us at blah@blah.com',
        'close'   => 'Close',
    ];
    
    $words = [
        'welcome' => 'Добро пожаловать в такое-то',
        'email'   => 'Пожалуйста, напишите нам на blah@blah.com',
        'close'   => 'Закрыть',
    ];
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am english";
    ?>
    
    </body>
    </html>
    
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $word = "i am russian";
    ?>
    
    </body>
    </html>
    
    
    
    我觉得你的代码很好。到底什么不起作用?您将很难解决这个问题,因为您的用户必须不断提交表单才能为语言设置
    $\u POST
    变量。如果我是你,我会考虑将值存储在会话中,并基于that@Darren我们不知道ru.php或content.php中有什么。我们也不知道什么不起作用。更好的选择是更改选择框,将语言变量设置为cookie,并根据cookie值包括您的语言文件。此选项将适用于整个站点。仅限content.php和ru.php变量,它们工作正常。我用($check=10;if($check<10){require('ru.php');}或者if($check==10){require('content.php');}谢谢!在移动onchange=“this.form.submit()”进行选择后,提交开始工作。但是它会转到一个空白页,并且只显示回显的变量。是的,这段代码会回显“我是英国人”或“我是俄罗斯人”。你在lang.php中看到一个空白页面吗?不,我添加了echo($title)而不是你的变量,我看到一个空白页面(不完全是空白的,带有文本)和标题内容。我的意思是我想在index.php上更改$title(和其他所有变量),但我不知道怎么做。注意:1)
    en.php
    ru.php
    中的开始/结束和标记在
    lang.php
    中已经存在,这将导致问题。2)这种方法仍然不存储用户的语言选择…这两个文件在下拉选择之后只会使用一次,这似乎与OP的目标不匹配。我将尝试一下。Th谢谢你!