向数据库发送数据时出错。
首先我有一个URL,比如:
www.domain.com/container.php?fun=olmaa
发送数据后,URL如下:
www.domain.com/container.php?fun=olmaa&sent=yes
但是,当再次发送时,它看起来像:
www.domain.com/container.php?fun=olmaa&send=yes&发送=是
为什么要再次插入&sent=yes
??
我的代码是:
$url = "http". ((!empty($_SERVER['HTTPS'])) ? "s" : "") . "://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
header('Location: '.$url."&sent=yes");
谢谢
在附加发送的参数之前,只需通过strpos
检查它是否已经存在。试试这个。。
$url = "http". ((!empty($_SERVER['HTTPS'])) ? "s" : "") . "://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$final_url = (strpos($url, '&sent=yes') == false) ? $url."&sent=yes" : $url;
header('Location: '.$final_url);
或者可以使用parse_str
。
$url = "http". ((!empty($_SERVER['HTTPS'])) ? "s" : "") . "://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
parse_str($url, $params);
$final_url = (!isset($params['sent'])) ? $url."&sent=yes" : $url;
header('Location: '.$final_url);
问题是,当您第二次尝试发送数据时,您发送的url是
www.domain.com/container.php?fun=olmaa&sent=yes
因此,当您在$_SERVER['REQUEST_URI']中构建新url时,&send=是的部分,而你又在呼吁它,这就是为什么你看到它两次。user3659034给出的代码解决了这个问题。