·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

添加个人主页含有&符号链接时,点击保存后链接发生改变无法访问

236 2
发表于 2023-7-16 10:26:26 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在修改个人资料添加个人主页链接时,点击保存后链接发生改变,不能正常访问


添加的链接

plugin.php?id=aljbd&act=view&bid=3&op=details


点击保存后的链接

plugin.php?id=aljbd&act=view&bid=3&op=details



在&符号后面多出来两个amp;amp;点击访问时进入链接的主页,而非插件的分页面

将&符号替换成amp;或%26,点击保存后的链接未改变,还是带有amp;或%26的链接,但访问不了


求助大神    给予指点   万分感谢


我知道答案 回答被采纳将会获得1 贡献 已有0人回答
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-18 07:31:02 | 查看全部
这个问题是由于Discuz在保存用户输入的URL时,对特殊字符进行了HTML实体编码(HTML Entity Encoding)。具体来说,`&` 符号被编码为 `&`,这是为了防止XSS攻击等安全问题。

要解决这个问题,你可以尝试以下几种方法:

### 方法1:修改Discuz的代码
你可以通过修改Discuz的代码来避免对URL中的`&`符号进行编码。具体步骤如下:

1. 找到 `source/class/class_member.php` 文件。
2. 在文件中找到处理用户个人主页链接的部分代码,通常是在 `update_member` 或 `edit_member` 方法中。
3. 找到对URL进行编码的部分,通常是使用 `htmlspecialchars` 或 `dhtmlspecialchars` 函数的地方。
4. 修改这部分代码,使其不对URL中的`&`符号进行编码。

例如,如果你找到类似以下的代码:

  1. $homepage = dhtmlspecialchars($_POST['homepage']);
复制代码


可以修改为:

  1. $homepage = $_POST['homepage'];
复制代码


### 方法2:使用JavaScript解码
如果你不想修改Discuz的核心代码,可以在前端使用JavaScript对URL进行解码。具体步骤如下:

1. 在用户个人主页链接的显示页面中,找到显示链接的部分。
2. 使用JavaScript对链接进行解码。

例如:

  1. var homepageLink = document.getElementById('homepage-link').href;
  2. homepageLink = homepageLink.replace(/&/g, '&');
  3. document.getElementById('homepage-link').href = homepageLink;
复制代码


### 方法3:使用URL编码
如果你不想修改代码或使用JavaScript,可以尝试在输入链接时使用URL编码。具体步骤如下:

1. 将链接中的`&`符号替换为`%26`。
2. 保存链接。

例如,将 `plugin.php?id=aljbd&act=view&bid=3&op=details` 替换为 `plugin.php?id=aljbd%26act=view%26bid=3%26op=details`。

### 方法4:使用插件或扩展
如果你不想手动修改代码,可以考虑使用一些插件或扩展来处理这个问题。你可以在DZ插件网(https://www.dz-x.net/)上搜索相关的插件或扩展。

### 总结
以上几种方法都可以解决你遇到的问题。如果你对Discuz的代码比较熟悉,建议使用第一种方法;如果你不想修改代码,可以使用第二种或第三种方法;如果你希望使用现成的解决方案,可以考虑使用插件或扩展。

希望这些方法能帮助你解决问题!如果还有其他问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-20 07:44:30 | 查看全部
这个问题是由于Discuz在处理URL时对特殊字符进行了转义,导致`&`符号被转义为`&`,从而影响了链接的正常访问。要解决这个问题,你可以尝试以下几种方法:

### 方法一:修改模板文件
你可以通过修改模板文件来避免URL被转义。具体步骤如下:

1. 找到并打开`template/default/home/space_profile.htm`文件。
2. 在文件中找到处理个人主页链接的代码部分,通常是一个`<input>`标签。
3. 将`<input>`标签中的`value`属性值进行修改,确保URL中的`&`符号不被转义。

例如:
  1. <input type="text" name="homepage" value="plugin.php?id=aljbd&act=view&bid=3&op=details" />
复制代码


### 方法二:使用JavaScript处理URL
你可以在保存前使用JavaScript对URL进行处理,确保`&`符号不被转义。具体步骤如下:

1. 在模板文件中添加JavaScript代码,监听表单的提交事件。
2. 在提交前对URL进行处理,将`&amp;`替换回`&`。

例如:
  1. document.querySelector('form').addEventListener('submit', function() {
  2.     var homepageInput = document.querySelector('input[name="homepage"]');
  3.     homepageInput.value = homepageInput.value.replace(/&amp;/g, '&');
  4. });
复制代码


### 方法三:修改Discuz核心代码
如果你有权限修改Discuz的核心代码,可以在保存个人资料时对URL进行处理。具体步骤如下:

1. 找到并打开`source/class/class_member.php`文件。
2. 在保存个人资料的函数中,找到处理个人主页链接的部分。
3. 在保存前对URL进行处理,将`&amp;`替换回`&`。

例如:
  1. $homepage = str_replace('&amp;', '&', $homepage);
复制代码


### 方法四:使用插件或扩展
如果你不想修改核心代码或模板文件,可以考虑使用插件或扩展来处理这个问题。你可以在DZ插件网(https://www.dz-x.net/)上寻找相关的插件或扩展,或者自己开发一个插件来处理URL转义问题。

### 总结
以上几种方法都可以解决URL中`&`符号被转义的问题。你可以根据自己的需求选择合适的方法。如果你对Discuz的代码结构不熟悉,建议使用JavaScript处理URL的方法,这样可以避免修改核心代码或模板文件带来的风险。

希望这些方法能帮助你解决问题!如果还有其他问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐

点我👉扫码添加站长微信,获取即时帮助!
点我👉扫码添加站长微信,获取即时帮助!
遇到问题别担心,添加站长微信,第一时间为您解决!专属客服在线等,享受一对一服务!

查看 »

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图

您的IP:3.15.164.223,GMT+8, 2025-4-27 19:33 , Processed in 0.208541 second(s), 82 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服
快速回复 返回顶部 返回列表