javascript - 如何使用 php/javascript 仅显示 url 中的特定参数?
问题描述
我有几个传递给页面的参数,例如来自我的数据库的唯一 ID、错误消息和表单数据。我想隐藏所有这些参数,以保持 url 干净,除了 id。我尝试为 PHP 和 JavaScript 查找这个,但没有找到解决方案,所以我开始摆弄。
如果我在隐藏 id 后刷新页面,路由将无法再找到 id,这会在页面上产生一堆错误。我想隐藏除 id 之外的所有参数,这样我就不会收到这些错误。我设法使用这段 Javascript 删除了所有参数:
let clean_url = window.location['href'].split('?')[0];
window.history.pushState(null, null, clean_url);
如果已设置,我尝试仅显示 id(始终为正整数),但是当将我的 JS 更改为下一个代码块时,它会再次显示所有参数。
let url_string = window.location['href'];
let url = new URL(url_string);
let id = url.searchParams.get("id");
if (typeof id !== 'undefined') {
let clean_url = url_string.split('?')[0].concat("?id={0}".format(id));
} else {
let clean_url = window.location['href'].split('?')[0];
}
window.history.pushState(null, null, clean_url);
谁能告诉我我的代码有什么问题,或者它是否可以在 php 中解决?提前致谢。
编辑:由于我没有时间,我将无法将我的反馈消息设置为 $_SESSION。我找到了一种修复我的javascript的方法,因此除了参数之外的所有参数id
都被隐藏:
let url_string = window.location['href'];
let short_url = window.location['href'].split('?')[0];
let url = new URL(url_string);
let id = url.searchParams.get("id");
if (id == null) {
window.history.pushState(null, null, short_url);
} else {
let clean_url = short_url.concat(`?id=${id}`);
window.history.pushState(null, null, clean_url);
}
解决方案
为您的数据使用良好的媒介。
这并不总是正确的,但一个好的经验法则是错误消息在 $_SESSION 中,表单数据在 $_POST 中。
例如,您的表单可能如下所示:
<form method="post" action="myurl1.php?id=123">
<!--you could also use a hidden field to send the id with post : <input type="hidden" name="id" />-->
<input name="test" />
</form>
并且您的表格的处理可以给出:
if(empty($_POST[test])){
$_SESSION['error']='Empty test field';
}
header('Location: myurl2.php?id='.$_GET['id']); //or $_POST['id'] if you used a hidden field
关键是您决定如何发送数据,并且您应该仅在 URL 对您的用户有价值时才使用它。
(更多关于 php 会话的信息)
推荐阅读
- puppet - erb`if`语句中的人偶hiera变量
- matlab - Matlab 无法从 javaclasspath.txt 中的 jar 导入
- c++ - 如何有效地实现任意序列的按位循环?
- excel - Excel中的时间研究
- reactjs - react js show 对其他组件隐藏其他常用组件属性
- wordpress - Wordpress:表格创建功能失败
- c# - AWS S3 文件上传 .NET SDK (.NET Core) 无法将数据写入传输连接
- sql - 如果日期不在 CTE 中,则返回 NULL 值
- typescript - 如何使用 Bable 7 和 Webpack 4 为 IE11 正确构建带有导入包的 Typescript?
- sql - SQL - 仅选择某些行(如果存在)