this select form loads right domain, page , language variable when clicked. when user changes language 2 times in row url has 2 language variables. example: domain.com/page.php?lang=en_us?lang=nl_be
how prevent this?
<div class="country_selector"><?php echo $lang['region']; ?> <select id="source" onchange="navigateto(this, 'window', false);"> <option value="https://domain.cc<?php echo $_server['request_uri']; ?>?lang=en_eu">europa</option> <option value="https://domain.be<?php echo $_server['request_uri']; ?>?lang=nl_be">belgiƫ</option> <option value="https://domain.nl<?php echo $_server['request_uri']; ?>?lang=nl_nl">nederland</option> <option value="https://domain.uk<?php echo $_server['request_uri']; ?>?lang=en_uk">united kingdom</option> <option value="https://domain.cc<?php echo $_server['request_uri']; ?>?lang=en_us">united states</option> </select> </div>
$_server['request_uri']
includes query string. use $_server['php_self']
instead.
another option, if have more parameters in $_server['request_uri']
want preserve in generated urls write function analyzes $_get[]
or $_server['query_string']
, adds or replaces lang
parameter , generates url:
function generatelanguageurl(array $params, $lang) { // add language $params (or replace if it's there) $params['lang'] = $lang; // generate query string, append script's uri , return // generate partial urls. there no need put protocol // , host name in url if same of current page. return $_server['php_self'].'?'.http_build_query($params); }
the first argument (array $params
) lets use $_get
generate urls contain parameters of current query string, array()
generate urls without other parameters or other combination of parameters need (e.g. array('q' => 'foo', 'items' => 10, 'page' => 2)
).
how use it:
<div class="country_selector"><?php echo $lang['region']; ?> <select id="source" onchange="navigateto(this, 'window', false);"> <option value="<?php echo generatelanguageurl($_get, 'en_eu'); ?>">europa</option> <option value="<?php echo generatelanguageurl($_get, 'nl_be'); ?>">belgiƫ</option> <option value="<?php echo generatelanguageurl($_get, 'nl_nl'); ?>">nederland</option> <option value="<?php echo generatelanguageurl($_get, 'en_uk'); ?>">united kingdom</option> <option value="<?php echo generatelanguageurl($_get, 'en_us'); ?>">united states</option> </select> </div>
you can improve function let generate url need site adding script path, hostname , protocol optional arguments, using values of current page defaults.
Comments
Post a Comment