2011-07-25 35 views
1

成功认证后,我通过调用header什么是使用hashtag在PHP中重定向的最佳方式?

if($success) { 
    header('Location: home.php'); 
    exit(); 
} 

Ulitimatley发送用户的主页,我想用#标签为URL的一部分,因此例如URL链接到用户应该是这样的:

mysite/#!home 

我可以这样做吗?还是有更好的方法可以在成功登录后将它们重定向到主页?

+0

PHP将无法看到哈希标签 - 散列未发送到服务器后的任何内容。你可以在Javascript中使用它来触发重定向,但这个问题的任何答案都不会与PHP有关。 – Spudley

+0

你为什么不测试它?请记住,位置标题需要一个完整的URI,例如“http:// example.com/home.php”。 – hakre

回答

3

那种哈希标签通常是用所谓,“寻址”“深层链接”,一种JavaScript页面组合导航的使用。你想要的是URL重写,它允许你做这样的事情www.website.com/home

深层链接:http://www.asual.com/jquery/address/

URL重写:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

+0

我已经看过jQuery的地址,但我有点困惑如何使用API​​与我现有的代码。你能够提供一个例子使用我当前的重定向调用home.php? – Paul

+0

home.php加载我的菜单和我的主div标签ID中的所有“家”内容。我这样做,所以我可以加载内容到我的主要div标签根据用户选择。为了简单起见,可以调用:header('Location:menu.php?home'); ?理想情况下,我不想显示menu.php,而只是在URL中“回家”。有什么想法吗? – Paul

1

正因为如此:

if($success) { 
    header('Location: yoursite/#!home'); 
    exit(); 
} 

不工作?

+0

这不是一个答案。 :P – Trevor

+0

真的那么简单吗?说实话,我还没有尝试过。如果那是解决方案,那么我想我的问题是我怎么实际加载home.php? – Paul

+0

Mod_rewrite。见Trevor的答案。 – JJJ

2

您还可以通过一个参数成功的页面,火了一些JavaScript来锚定用户失望,如果该参数设置:

<script type="text/javascript"> 
    <?php if (isset($_GET['val'])) { ?> 
     // redirect to the appropriate hash from parameter 
     document.location.hash = "<?php echo $_GET['val'] ?>"; 
    <?php } ?> 
</script> 

这不会给你一个干净的URL,但如果你无法访问任何URL重写,它可以快速修复。

相关问题