要添加到URL的PHP会话变量(以及Vice Versa)


PHP session variable to be added to URL (and Vice Versa)

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

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

我不知道从哪里开始,我想我们必须在htaccess文件中重写url,但我不知道这将如何与php会话交互,所以我们将非常感谢任何帮助。

祝你一切顺利,Matt

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

我个人会运行一个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,你可以很容易地做到这一点,但很难说没有看到你的代码。

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

最初登录时,cuntry由gps定位。然后根据cuntry编写类似as的php代码。首先定义cuntry货币值。。

使用caseif condition

用于选择货币像

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