2012-03-26 77 views
1

我有一个表单提交到同一页面。现在,当它被提交并处理后,我需要它有一个唯一的查询字符串。php设置查询字符串

因此,例如,用户输入一些信息,然后点击提交,然后页面将信息保存在服务器上,然后服务器用一个唯一的信息查询字符串将其吐出。

如果我尝试设置$_SERVER['QUERY_STRING']它只是挂起。有没有另一种方法来做到这一点?

重定向可能吗?

编辑,我是从mysite.com/去和形式的行动是对mysite.com/,我想浏览器去mysite.com/?blah

OK我试图把这个在我的我的页面的顶部,没有运气

<?php 
if ($_POST['data']) header('location: /?' . idFromDifferentFunction()); 
?> 

但它只是继续加载,我猜它只是重定向到死亡。

我希望你现在明白我想要做

+0

SQL查询字符串? – Dion 2012-03-26 20:38:48

回答

3

很可能您的脚本在说明它应该重定向的代码之后继续运行。您还需要与头更精确:

<?php 
    if (isset($_POST['data'])) { 
     header('Location: /?' . idFromDifferentFunction()); 
     exit; 
    } 
?> 

如果使用上面的代码,就会使脚本退出的转储输出,浏览器将看到重定向(注意位置的大写L) 。

重点是重定向头后的退出。没有它,PHP很可能会继续处理您在脚本中执行的任何其他代码。

0

$ _ SERVER [“QUERY_STRING”]是PHP的全局变量的一部分。您不应该设置这些变量,而应通过会话进行设置并在提交后将其返回。

如果你正在尝试将用户重定向到一个特定的URL,然后使用:

header('Location: mysite.com/bla/bla'); 
+0

它需要是它来自同一页面(也是哪里的行动是),但现在与查询字符串 – qwertymk 2012-03-26 20:51:43

+0

见编辑,也许这将清除我问的 – qwertymk 2012-03-26 21:00:20

0

写入$ _ SERVER是没有意义的。它不会以任何方式影响客户端浏览器。如果您想更改客户端浏览器中显示的查询字符串,则必须使用拨打header('Location: ...')的301/302重定向。

+0

看到编辑,也许这将清除我在问什么 – qwertymk 2012-03-26 20:59:48

1

这并不完全清楚你所追求的是什么,但我认为你的意思是说,一旦处理完成,你想要在查询字符串中找到一个唯一值(在?之后的位置)。这个独特的值是否需要实际引用系统中的某些内容(对于新创建的数据库条目是否需要引用新条目的ID),还是只需要具有唯一性?

如果是后者,你可以只generate a random unique ID做到以下几点:

header ('location: /path/to/script?id=' . uniqid()); 

如果是前者,那么调用替换与数据库键的值uniqid。

$ _SERVER中的值是由PHP在运行时设置的,应该被认为是只读的。改变他们的价值观将没有意义。

+0

看到编辑,也许这将清除我问的问题 – qwertymk 2012-03-26 21:00:11