$ _GET上的变量更改,否则修复

时间:2016-02-22 09:28:33

标签: php session

所以我想以这种方式使用$user_country

  • 当我在网址中没有country=时,我希望$user_country成为数据库中的国家/地区;
  • 当我在网址country=United States $user_country时,我希望country从原来的国家/地区从数据库更改为美国,坚持更改为其值,直到下一个网址值更改 session_start(); $emailc=$_SESSION["email"]; $req1=mysql_query("SELECT country FROM users WHERE email='$emailc'"); $countryz= mysql_fetch_assoc($req1); //Get country from URL: $country = isset($_GET['country']) ? $_GET['country'] : null; //Check the URL to see if we change $user_country if(isset($country)){ $_SESSION['country']=$_GET['country']; } else{ $_SESSION['country']=$countryz['country']; } //Assign value to `$user_country` $user_country=$_SESSION['country']; ;

    $user_country

我的问题:

www.example.com?country=United States
在这种情况下$user_country =美国 刷新$user_country后,从数据库返回它的值 即使刷新后我希望$user_country等同于美国,直到网址中国家/地区的值再次更改为止;
www.example.com?country=Canada 之前,我希望$user_country =美国,所以我可以在未来的条件中使用它的值 .controller('MainCtrl', ['$scope', 'md5', function($scope, md5) { $scope.$watch('email' ,function() { $scope.message = 'Your email Hash is: ' + md5.createHash($scope.email || ''); }); }]);

5 个答案:

答案 0 :(得分:2)

我认为当用户导航时,您将DB中的值设置为会话。因此,更新代码(添加elseif)应该可以正常工作

if(isset($country)){
   $_SESSION['country']=$_GET['country'];
} elseif (empty($_SESSION['country'])) {
  $_SESSION['country']=$countryz['country'];
}

答案 1 :(得分:2)

当您的用户登录或开始浏览您的网站时,您必须在$_SESSION中为该国家/地区提供基本价值。

if (empty($_SESSION['country'])) { $_SESSION['country'] = initializeCountry(); }

在初始设置之后,只有在设置$ _GET参数时才需要更改值,因此您的代码如下所示:

if(isset($country)){ $_SESSION['country']=$_GET['country']; }

没有else语句。

答案 2 :(得分:1)

我认为你的问题出现在这一行

$country = isset($_GET['country']) ? $_GET['country'] : null;

如果刷新页面,您的代码会将国家/地区覆盖为null  这就是为什么你必须检查$ _GET是否不存在然后从会话中获取国家

   if ( isset($_GET['country']) ) {
    $country = $_GET['country'];    
  } else {
    $country = isset($_SESSION['country']) ? $_SESSION['country'] : null;
  }

您的完整代码:

session_start();
 $emailc=$_SESSION["email"];
 $req1=mysql_query("SELECT country FROM users WHERE email='$emailc'");
 $countryz= mysql_fetch_assoc($req1);

 //Get country from URL:
 // Add this code
  if ( isset($_GET['country']) ) {
    $country = $_GET['country'];    
  } else {
    $country = isset($_SESSION['country']) ? $_SESSION['country'] : null;
  }
  //$country = isset($_GET['country']) ? $_GET['country'] : null;

//Check the URL to see if we change $user_country

if(isset($country)){
   $_SESSION['country']=$_GET['country'];
 }
  else{
  $_SESSION['country']=$countryz['country'];
}

//Assign value to `$user_country`
  $user_country=$_SESSION['country'];

答案 3 :(得分:0)

编写如下代码: -

session_start();
$emailc=$_SESSION["email"];
$req1=mysql_query("SELECT country FROM users WHERE email='$emailc'");
$countryz= mysql_fetch_assoc($req1);

//Get country from URL:
$country = (isset($_GET['country'])  && !empty($_GET['country'])) ? $_GET['country'] : $countryz['country'];

//Set session variable

$_SESSION['country']=$country; 

//Assign value to `$user_country`
$user_country=$_SESSION['country'];

希望它会对你有所帮助:)。

答案 4 :(得分:0)

有一些重要的错误。 你应该: 1)数据库应该选择else statemenet使用的时间。 2)我认为你想使用if语句 $country = isset($_GET['country']) ? $_GET['country'] : null;
但我认为你应该使用
$country = (isset($_GET['country'])) ? $_GET['country'] : null; 而是null,将其设置为value。你不需要做第二个。