在带有另一个GET变量的页面上追加一个GET变量


Append a GET variable on to a page with another GET variable

我有一个profile.php页面与变量uid?=12,我有一个语言栏是在一个单独的页面称为lang.inc.php:

个人资料页:

<div class="langbar">
    <?php include 'inc/lang.inc.php'; ?>
</div>

lang.inc.php

<center>
    <a class="flag_USA" title="English" href="<?php echo basename($_SERVER['PHP_SELF']); ?>"><img src="css/images/us.png"></a> <span> </span> 
    <a class="flag_France" title="French" href="<?php echo basename($_SERVER['PHP_SELF']); ?>?lang=fr"><img src="css/images/fr.png"></a> <span> </span> 
    <a class="flag_dutch" title="Dutch"  href="<?php echo basename($_SERVER['PHP_SELF']); ?>?lang=de"><img src="css/images/de.png"></a> <span> </span> 
    <a class="flag_Italy" title="Italian" href="<?php echo basename($_SERVER['PHP_SELF']); ?>?lang=it"><img src="css/images/it.png"></a> <span> </span> 
    <a class="flag_Italy" title="" href="<?php echo basename($_SERVER['PHP_SELF']); ?>?lang=es"><img src="css/images/sp.png"></a> <span> </span> 
    <?php echo $_SERVER['PHP_SELF']; ?>
</center>

正如你所看到的,我试图将?lang=fr附加到profile.php?uid=12的末尾,所以它看起来像profile.php?uid=12&lang=fr,但它所做的就是profile.php?lang=fr

我很确定$_SERVER['PHP_SELF']不包括get变量,只是文件路径,所以你必须自己添加uid到href

<?php
    $basename = basename($_SERVER['PHP_SELF']); // Lets store the basename
    $basename_with_uid = $basename . "?uid=" . $_GET['uid']; // and append the uid from the URL. Make sure to do some validation if $_GET['uid'] exists.
?>

<a class="flag_France" title="French" href="<?php echo $basename_with_uid; ?>&lang=fr"><img src="css/images/fr.png"></a>

REQUEST_URI可能是您要的:

<a class="flag_France" title="French" href="<?php echo $_SERVER['REQUEST_URI']; ?>&lang=fr"><img src="css/images/fr.png"></a>

如果你的页面是profile.php?Uid =12,输出应为:

profile.php?uid=12&lang=fr

Ref: PHP $_SERVER variables

edit您可能仍然需要在REQUEST_URI周围添加basename(),这取决于您正在做什么