PHP 获取网页地址(包括锚点标记)

wangyouworld 2009-02-09 10:57:23
这个问题很不好整,希望大家帮着解决下:

我使用,$_SERVER['HTTP_REFERER'] 可以获取网页地址,但后面的#10之类的无法获取。
如,网页地址是:http://abc.com/1.htm#10
后面的#10怎么获取呀?

在网上找了好久,只知道,Java里面以下可以获取到:
<script>alert(window.location.hash)</script> //获取后面锚标,就是#10之类的。

<script>alert(window.location);</script> //获取当前网页地址,包括#10。

PHP怎么获取呀?

如果PHP获取不了,能不能想办法,让Java得到的地址,传给PHP。(PS,咱Java什么也不知道,希望高人给指点下。)

小弟,在此谢谢先。
...全文
2013 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyouworld 2009-02-10
  • 打赏
  • 举报
回复
但问题是,需要PHP对信息处理下。

地址,index.php?tid=10#1

处理后才能得到10.htm,及#1。
yctin 2009-02-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangyouworld 的回复:]
我想做个插件,把CTB论坛上的东西,全部生成静态文件。

CTB论坛上,为了方便引用,每楼都有一个锚标,就是#1之类的。

将论坛生成静态时,也为了方便引用。

因此,才想办法获取网页地址后面的#。

PHP如果不能获取的话,使用Java,能不能将获取的地址,让PHP使用下。
[/Quote]

那你只要在生成静态文件的过程中
在html中找出连结的锚标就可以(就是字符串搜索)

不需要经浏览器取得
Zijian_Zhang 2009-02-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangyouworld 的回复:]
我想做个插件,把CTB论坛上的东西,全部生成静态文件。

CTB论坛上,为了方便引用,每楼都有一个锚标,就是#1之类的。

将论坛生成静态时,也为了方便引用。

因此,才想办法获取网页地址后面的#。

PHP如果不能获取的话,使用Java,能不能将获取的地址,让PHP使用下。
[/Quote]

这个是客户端的限制,浏览器自己是不会发送#后面的字符的,所以在服务端做什么工作都是没有用的??

所以,楼主要用JavaScript获取后,用Ajax发送数据,才可以的。
wangyouworld 2009-02-09
  • 打赏
  • 举报
回复
我想做个插件,把CTB论坛上的东西,全部生成静态文件。

CTB论坛上,为了方便引用,每楼都有一个锚标,就是#1之类的。

将论坛生成静态时,也为了方便引用。

因此,才想办法获取网页地址后面的#。

PHP如果不能获取的话,使用Java,能不能将获取的地址,让PHP使用下。
yctin 2009-02-09
  • 打赏
  • 举报
回复
楼主最好说一下想做什么
提供一下相关代码

因为这个问题要针对不同情况解决
PHP不能直接取得#后的内容
wxq4100798 2009-02-09
  • 打赏
  • 举报
回复
PHP,无法获取,用JS吧
yctin 2009-02-09
  • 打赏
  • 举报
回复
这样根本不需要处理吧

你另存http://abc.com/index.php?tid=10 为 10.htm
路径用10.htm#1
效果不会变的

那个标签浏览器会自动跟进
wangyouworld 2009-02-09
  • 打赏
  • 举报
回复
设想下:
CTB论坛与论坛静态网页在不同目录。
1、显示帖子:http://abc.com/index.php?tid=10#1
其对应的静态网页名是:10.htm
2、静态网页目录中使用index.php处理GET的信息。
a,j是否为1,是则进行PHP处理。否,Java处理。

Java处理:
使用Java获取后面#的内容,将信息格式化后重新再提交给本身。如index.php?tid=10&miaobiao=1&j=1
在这里,说明下,miaobiao,为锚标信息。j=1时,说明是2次提交。

PHP处理:
顺利读取网页地址的GET值。
并使用PHP的内置跳转,10.htm#1

说半天,我自己也迷了,思路是这个,问题是,前面的Java处理不好整,得想想办法。

以下是源PHP显示静态源码:
<?php
$S_zf_shuzu = "QL2_";
//QL2_1_27,2
if (isset($_GET['mods'])){
switch($_GET['mods']){
case "topicdisplay"://帖子内容显示
echo "topicdisplay <br>";
if (isset($_GET['action']) and $_GET['action']=="say"){//显示公告
if (isset($_GET['forumid'])){
$S_zf_shuzu .= $_GET['forumid']."_say";
}else{
$S_zf_shuzu .= "all_say";}
}else{
if (isset($_GET['forumid'])){//获取版块ID
$S_zf_shuzu .= $_GET['forumid'];
if (isset($_GET['postid'])){//获取帖子ID
$S_zf_shuzu .= "_".$_GET['postid'];
if (isset($_GET['p'])){//获取页数
$S_zf_shuzu .=",".$_GET['p'];
}else{//默认为第一页
$S_zf_shuzu .=",1";}
}
}else{//forumid无值时显示第1个版块
$S_zf_shuzu .="1";}
}
break;

case "forumdisplay"://版块内容显示
echo "forumdisplay<br>";
if (isset($_GET['forumid'])){//获取版块ID
$S_zf_shuzu .= $_GET['forumid'];
}else{//forumid无值时显示第1个版块
$S_zf_shuzu .="1";}

if (isset($_GET['action'])){//显示分类版块
if (isset($_GET['catId'])){
$S_zf_shuzu =$_GET['catId'];
}else{$S_zf_shuzu="index";}
}
break;

case "others"://帮助信息显示
echo "others<br>";
if (isset($_GET['action'])){
$S_zf_shuzu .= $_GET['action'];
}else{
$S_zf_shuzu .= "ctbhelp";}
break;

case "member":
echo "member<br>";
if (isset($_GET['action']) and isset($_GET['id'])){
$S_zf_shuzu .= "info_".$_GET['id'];
}else{
$S_zf_shuzu .="info_3";}
break;

default:
$S_zf_shuzu = "index";
}
}else{
$S_zf_shuzu="index";}
$S_zf_shuzu.=".htm";
echo $S_zf_shuzu;
?>


演示方式:?mods=forumdisplay&forumid=9
将CTB论坛的地址,转义成HTM文件名。

21,890

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧