Mod rewrite突然改变了PHP变量
我目前正在开发一个网站,将显示一些产品。我最初从外部XML文件获取这些产品,并将其存储在数据库中,然后从数据库中获取这些产品并将其显示在网站上,从XML到数据库是一个自动化的cronjob过程 这一切都很好,但我想提供一些背景信息 对于本网站,我使用以下规则Mod rewrite突然改变了PHP变量,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我目前正在开发一个网站,将显示一些产品。我最初从外部XML文件获取这些产品,并将其存储在数据库中,然后从数据库中获取这些产品并将其显示在网站上,从XML到数据库是一个自动化的cronjob过程 这一切都很好,但我想提供一些背景信息 对于本网站,我使用以下规则 RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)$ index.php?page=product&cat=$1$cat2=$2&cat3=$3&xid=$4 [
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)$ index.php?page=product&cat=$1$cat2=$2&cat3=$3&xid=$4 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)$ index.php?page=product&cat=$1&cat2=$2&xid=$3 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)$ index.php?page=product&cat=$1&xid=$2 [L]
这几乎在所有情况下都有效,但有一种情况是,一旦某个产品显示出来,xid值就会改变。我花了一段时间才发现这是因为规则。我可以向你保证,这不是因为其他原因,因为当我跳过重写规则,按常规方式去那里时,它就可以正常工作了
我想要这些,这样人们就可以访问.com/Ladies/1或.com/Ladies/pants/4或.com/Ladies/pants/Shorts/2。然而现在奇怪的部分来了
当我创建会话时,如
$_SESSION["pid"] = $mysqli->real_escape_string($_GET["xid"]);
然后$\u会话[pid]将更改为此新值。如果我创造
$_SESSION["sql"] = "SELECT * FROM somthing WHERE id = " . $mysqli->real_escape_string($_GET["xid"]);
然后它会将其从id=1的某物的SELECT*更改为id=081089000016的某物的SELECT*
每当我使用$$GET[xID],不管它是否在字符串的中间,它都会改变它。
当我执行一个名为php脚本的AJAX时,甚至当我返回主页并返回echo$\u SESSION[pid]时,都会发生这种情况
然而,数字是该产品的EAN编号!!这个EAN号码甚至不在我自己的数据库中。我几乎可以肯定这一点,因为我检查了又检查,它甚至不在描述或其他任何东西中。这就是为什么我知道这一个产品是有缺陷的
有人对这类问题有任何不满吗
我真的没有重写规则,但这个问题对我来说还是很奇怪。它使我相信服务器内存的实际位置被改变了,否则我看不到它在字符串中间使用时的值改变的方式。我已经尝试过重命名它,但这并不能解决它 真的没有时间看代码;然而,有一次我陷入了重写规则的陷阱,那是因为URL被重写了,然后又被重写了。也许你的情况也是这样。也许是这样,但它使用的是我数据库中没有的数据,但仍然是项目,这是项目EAN代码。可能是外部因素触发了重写规则吗?