如何根据Cookie值显示内容

时间:2014-01-09 08:37:27

标签: javascript php jquery cookies

我想以 USD GBP 显示产品价格。我的默认货币是美元。如果用户来自UK ip range,则此脚本将在cookie中设置货币代码GBP。

如何根据Cookie值显示价格(java-Script方法)?

脚本:

<?php
$con=mysqli_connect("localhost","userip","asdfgh","userip");
$ip = $_SERVER['REMOTE_ADDR'];
$query = "SELECT id FROM ip WHERE '$ip' BETWEEN f AND t"; // check user ip from UK ip range
$result = mysqli_query($con,$query);
if(mysqli_num_rows($result) > 0)
{
  setcookie('currency', 'GBP', time()+604800);
}
mysqli_close($con);
?>

3 个答案:

答案 0 :(得分:1)

您可以阅读$ _COOKIE global var:

switch ($_COOKIE['currency']) {
  case "GBP": [...]; break;
   default: [...]

更多详情:http://www.php.net/manual/en/reserved.variables.cookies.php

答案 1 :(得分:0)

在PHP中,您可以通过$_COOKIE访问Cookie。

switch($_COOKIE['currency']) {
    case 'GBP':
        $price = <...>;
    break;

    // USD
    default:
    $price = <...>;
}

在JavaScript中它有点不同: http://www.w3schools.com/js/js_cookies.asp

function getCookie(cname)
{
    var name = cname + "=";
    var ca = document.cookie.split(';');

    for(var i=0; i<ca.length; i++) 
    {
        var c = ca[i].trim();
        if (c.indexOf(name)==0) return c.substring(name.length,c.length);
    }

    return "";
}

注意:用户可以在浏览器中更改Cookie,因此请注意。用户可能会将货币更改为试图破坏脚本的任何内容。

答案 2 :(得分:0)

如果您想在javascript中执行此操作,可以使用以下函数来读取/写入cookie。

function read_cookie(name) {
  var arg=name+"=";
  var alen=arg.length;
  var clen=document.cookie.length;
  var i=0;
  while (i<clen){
    var j=i+alen;
    if (document.cookie.substring(i, j)==arg)
       return arguments_cookie(j);
    i=document.cookie.indexOf(" ",i)+1;
    if (i==0) break;
  }
  return null; 
}

function write_cookie(name, val, expires) {
  document.cookie=name+"="+escape(val)+
  ((expires==null) ? "" : ("; expires="+expires.toGMTString()));
}

function arguments_cookie(offset){
    var endstr=document.cookie.indexOf (";", offset);
    if (endstr==-1) endstr=document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr)); 
}
相关问题