将PHP会话变量添加到URL(和Versa)

时间:2016-05-04 09:33:49

标签: php .htaccess session url

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

但是我也想在URL中反映这一点,例如,如果用户选择德国,则该网址会重定向到http://test.com/de/。另外,如果用户输入上述URL,我也会喜欢它,然后当页面加载它以将会话设置为'de'时。

我不知道从哪里开始这个我认为我们必须在htaccess文件中做一个url重写但是我不知道这会如何与php会话交互,所以任何帮助都会被彻底赞赏

一切顺利, 马特

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

最初在登录时,然后由gps找到cuntry。然后根据你的cuntry你写的PHP代码就像as.initially u defind the cuntry currency values ..

使用caseif condition

用于选择货币的cuntry 像是

 switch($cuntry_name)

{case(germany):

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

答案 2 :(得分:0)

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