如何使用JavaScript检索PHP$_GET
How to retrieve PHP $_GET using JavaScript?
我有一个应用程序在localhost/index.php
上运行
在Javascript中,我使用历史API:history.replaceState({}, null, "?uid=" + uid);
来更改页面的URL(uid
是一个随机生成值的变量)。例如,在该操作之后,地址被更新为localhost/index.php?uid=dqw12312aws
然后,我尝试通过以下方式在服务器端接收uid
变量:console.log('<?php echo "$_GET[uid]"; ?>');
。但我获得了一个意想不到的价值
我对localhost/index.php?uid=dqw12312av
-$_GET[uid]
的第一个请求将是一个空字符串
但我对localhost/index.php?uid=qwtgas23123
的第二个请求,例如$GET[uid]
,将是我第一个请求的值,等于dqw12312aws
,依此类推。为什么会发生这种情况?
您在javascript中使用console.log('<?php echo $_GET["uid"]; ?>');
,对吗?。Javascript不在服务器端。浏览器会对Javascript进行解释。PHP由服务器解释,即PHP是服务器端。服务器端意味着当服务器运行服务器端文件时,仅代码得到解释。(即加载页面时)。
当你加载PHP文件时,你基本上要求服务器进入文件,找到任何PHP并执行它
这意味着,在这种情况下,$_GET['uid']
将包含加载页面时设置的uid
url参数。所以
当URL通过javascript动态更改时,
$_GET['uid']
不会更改。因为:
页面未刷新→PHP文件不运行→PHP代码不会再次进行评估
您可以通过使用javascript检索URL查询字符串来解决此问题
例如
function getUrlVar(requestedKey) {
var hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
var key = hash[0],
val = hash[1];
if (key === requestedKey) {
return val;
}
}
return false;
}
var uid = getUrlVar("uid");
如果浏览器中有以下URL:http://localhost/index.php?uid=1234
则上述代码中的uid
变量包含1234
JS函数源
在下面的一条评论中,你问我如何将get变量发送到PHP。
要在不刷新页面的情况下运行PHP脚本,可以使用动态请求。例如ajax
如果你是web脚本和javascript的新手,我建议你看看jQuery和jQuery.ajax
因此,您将在index.php中包含jQuery,并运行以下JS代码:
function getUrlVar(requestedKey) {
var hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
var key = hash[0],
val = hash[1];
if (key === requestedKey) {
return val;
}
}
return false;
}
function sendUidToPHP(){
$.post("receiver.php", {uid: getUrlVar("uid")}, function(data){
// The data argument now contains the response from php
// To learn more about this see http://api.jquery.com/jquery.ajax
// and http://api.jquery.com/jquery.post
});
}
receiver.php将能够从$_POST['uid']
读取uid
。
还有一件事。如果登录到另一个用户只需要uid
URL参数,则脚本存在HUGE安全漏洞。看看PHP Cookies和PHP会话
- 如何将PHP get查询转换为Meteor's HTTP.get()
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 如何使Jquery编码的动态下拉菜单与PHP GET变量协调工作
- 如何使用jQueryPOST将get变量从JavaScript传递到PHP-Mysql
- PHP $_GET with jQuery $.get call
- Javascript 变量通过 AJAX(GET 方法)到 PHP
- 如何使用 GET 和 POST 语句而不使用 PHP/Laravel 重新加载页面
- Javascript POST数据进入GET PHP数组
- AJAX请求php获取post/get发送的指定目录中服务器上的文件列表(无JQUERY)
- Get latlng from different addresses using PHP & JavaScri
- 如何使用Javascript将GET和FILE传递到PHP文件
- Javascript等同于PHP的GET变量
- 为什么我的PHP函数没有由jQuery $.get执行
- 使用get方法在同一页面上的PHP中获取文本框Vlaue
- 带有PHP(未定义索引)的Youtube API V3 GET横幅图像
- PHP 会话变量在第一页的值在第二个 GET 请求后未更新为第二页会话变量的值
- 如何打开一个“get”?PHP窗口从jquery没有父页面刷新
- 我想加载一个get.php文件在iframe上的index.html一旦提交按钮被按下
- AngularJS $http.get php file - $injector:modulerr
- $.get PHP 文件在 JS 中单击链接时