【问题标题】:PHP session variable to be added to URL (and Vice Versa)要添加到 URL 的 PHP 会话变量(反之亦然)
【发布时间】:2016-05-04 09:33:49
【问题描述】:

当用户第一次进入我的网站时,他们被要求选择一个位置,这决定了他们的货币。选择后,国家代码存储在$_SESSION['countryCode'] 中并显示在屏幕上。

但是我也希望在 URL 中反映这一点,例如,如果用户选择德国,则 URL 将重定向到 http://test.com/de/。此外,如果用户键入上述 URL,然后在页面加载时将会话设置为 'de',我也希望这样做。

我不确定从哪里开始我认为我们必须在 htaccess 文件中进行 url 重写,但我不知道这将如何与 php 会话进行交互,所以任何帮助将不胜感激.

一切顺利, 马特

【问题讨论】:

  • 您需要出示您的代码,否则其他人将不知道如何帮助您。基本上,您需要一个基本控制器来处理语言,路由功能会将用户引导到基本控制器,控制器读取 url 中的国家代码以设置会话。
  • 使用$_SERVER['request_uri']获取uri,然后从字符串中获取de部分并保存在会话中。

标签: php .htaccess session url


【解决方案1】:

您可能希望全局存储您的国家/地区会话,然后在您的头文件/引导文件中引用它。

我会亲自运行一个 switch 语句来确定 URL 的结构,默认为 GB。

session_start();

// Assuming your country has come in from a validated form post.
$urlBit = $_POST['country'];

switch($urlBit) {
    case 'de':
        $country = $urlBit;
        break;
    case 'es':
        $country = $urlBit;
        break;
    default:
        $country = 'gb';
        break;
}

$_SESSION['country'] = $country;

反之亦然,您可以编写一些代码将 URL 放入字符串中并在字符串中查找 '/de/'、'/gb/'。

同样,一旦您知道结果,我将恢复为 switch 语句来处理它。然后,使用$_SESSION['country'] 将其全部存储。

session_start();

// Assumed URL structure. 
$url = 'http://www.website.com/de/';

// The switcheroo.
$urlParts = explode('/', $url);
$urlBit   = $urlParts[3]; // Returns 'de'

// The same switch as above. Stick it in a function or class/method, maybe.
switch($urlBit) {
    case 'de':
        $country = $urlBit;
        break;
    case 'es':
        $country = $urlBit;
        break;
    default:
        $country = 'gb';
        break;
}

$_SESSION['country'] = $country;

这是我可以在不先看代码的情况下提供的最佳答案,但是假设您知道如何实现上述内容,这个简单的逻辑将解决您的问题。

没有 htaccess 你可以轻松做到这一点,但如果没有看到你的代码就很难说。

【讨论】:

    【解决方案2】:

    您可以在没有 .htaccess 的情况下执行此操作。 创建一个包含在所有脚本中的 lang 文件。该 lang 文件将具有从您的会话变量生成的变量,该变量将附加到您的所有链接,并且将带有货币代码

    【讨论】:

      【解决方案3】:

      最初在登录时,cuntry 由 gps 定位。然后根据国家/地区,您编写 php 代码,如 as.initially 您定义国家货币值..

      使用caseif condition

      对于选择的货币国家 像

       switch($cuntry_name)
      
      {case(germany):
      
       $_SESSION['countryCode'] = 'de';
       break;
      case(...):
      $_SESSION['countryCode'] = '..';
      break;
      }
      

      【讨论】:

        猜你喜欢
        • 2013-08-16
        • 2012-06-27
        • 1970-01-01
        • 2017-01-08
        • 1970-01-01
        • 2012-11-09
        • 2012-12-06
        • 1970-01-01
        • 2013-02-16
        相关资源
        最近更新 更多