2011-08-17 160 views
1

我试图从一个网页到另一个通过我的变量,我使用$_GET和它抓住我的变量,但在同一个页面,而不是一个新的,它是可能使用$_GET将它们传递到新页面,或者我必须做另一种方法,我已经在网站上看到了使用javascript asp和jquery完成的工作,但似乎找不到可以很好解释问题的PHP。

这就是我所拥有的,除此之外,对于如何实现这一点,我相当无知。

foreach($obj->jigsawes as $jigsaw): 

    if(isset($_GET['p']) && $_GET['p']==''.$query.'') { 
echo "<a href='?p=$jigsaw_url'><img border=0 src='".$jigsaw->photo_url."'></a><br />"; 

echo "$jigsaw->name</ br> 
$jigsaw->address1<br /> 
$jigsaw->phone<br /> 
$jigsaw->city<br /> 
$jigsaw->state<br /> 
$jigsaw->zip<br />"; 


}else{ 
$query = htmlspecialchars($_SERVER['QUERY_STRING'], ENT_QUOTES); 

echo "<div><a href='?$query'>$jigsaw->name</a></div>"; 
    } 
endforeach; 
} 

回答

0

你必须从你的后变量中建立一个新的查询字符串,并将它们附加到你的链接。 http_build_query()对此很有帮助。

1

我可能会使用会话变量。

http://php.net/manual/en/function.session-start.php

+0

会话变量是为临时用户还是从我读的东西到那种性质的权利? – NukleHead

+1

@NukleHead - 会话用于在Web应用程序中保持各种请求状态。这对保持身份验证状态特别有用。如果您希望将会话数据保留在给定会话的范围之外,则调查更持久的存储技术也是有利的。 – Dan

+0

我不会使用会话变量只是为了在GET请求之间保持查询参数,除非URL的可爱性是一笔巨大的交易...即使如此,我也会考虑两次。如果您在给定站点上打开了多个选项卡,或者某人使用了“后退”按钮,则使用会话往往会造成不便。将当前的查询字符串加载到URL上不太可能导致问题。 – cHao

1

您可以使用$_SERVER['QUERY_STRING']得到一个串的电流$ _GET变量,如:

$query = htmlspecialchars($_SERVER['QUERY_STRING'], ENT_QUOTES); 
echo "<a href='?$query'><img border=0 src='".$jigsaw->photo_url."'></a>"; 

注意的情况下,使用的htmlspecialchars它含有任何讨厌的字符(潜在的XSS载体。 )

因为在这种情况下,你只是加载相同的页面,href=""应该也一样。

+0

我想试试你的代码,因为它看起来更容易使用然后会话,但是当我尝试将其添加到我的代码页面刷新时,get函数不再起作用。检查我的更新代码,看看我做了什么请。谢谢 – NukleHead

+0

@NukleHead:如果你只是去'?param = whatever',那*意味着*同一页面。当然它会刷新。如果你想转到另一个页面,你需要在'?'之前放一些URL。 :P – cHao