[英]How to perform a JavaScript click action based on a php session variable
[英]How to filter results based on session variable php
这已经给了我很多时间了。 非常感激任何的帮助!
我有一个php页面,负责显示我从数据库请求的信息。 我在页面上有几个按钮,指示什么时间将显示什么结果。 我有一个前进箭头来获取下一个记录,我有一个后退箭头来获取前一个记录,然后有一个过滤器按钮,我试图以此为依据来过滤结果。
PHP主页
<?php
session_start();
?>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">var mysess = <?php echo $_SESSION['verticalsess'] ?>;</script>
<script type="text/javascript" src="/getresults_ab_drastic_display.js"> </script>
<?php include("/connect.php"); ?>
</head>
<body>
//content
</body>
</html>
//getresults_ab_display.js
您会注意到,此JS调用了另一个PHP文件,该文件将结果返回到原始PHP文件。 一个功能是转发结果,一个功能是用于先前的结果,另一个功能是基于php主页上的下拉菜单设置过滤器。
$number = 1;
$(function(){
$('#showMore').click(function(event) {
event.preventDefault();
$.ajax({
type: "POST",
url: "/getNext.php",
data: {"count":$number, vertical: mysess},
success: function(results){
$('#results').html(results);
$number++;
}
});
});
});
$(function(){
$('#showLess').click(function(event) {
event.preventDefault();
$.ajax({
type: "POST",
url: "/getNext.php",
data: {"count":$number, vertical: mysess},
success: function(results){
$('#results').html(results);
$number--;
}
});
});
});
$(function(){
$('#Filter').click(function(event) {
event.preventDefault();
$.ajax({
type: "POST",
url: "/getNext.php",
data: {vertical: $('#vertical').val(), pagetype: $('#pagetype').val(), primarykpitype: $('#primarykpitype').val(), count:$number},
success: function(results){
$('#results').html(results);
}
});
});
});
//getnext.php
此getnext查找从js文件传递的信息,并将适当的结果发送回去。
session_start();
$_SESSION['verticalsess'] = $_POST['vertical'];
$pstcnt = $_POST['count'];
if ((isset($_POST['count'])) && $_SESSION['verticalsess'] = "null")
{
$sql = "SELECT * FROM experiments LIMIT $pstcnt,1";
}
else{
$sql = "SELECT * FROM experiments WHERE vertical = '" . $_SESSION['verticalsess'] . "' LIMIT $pstcnt,1";
}
//my output
...
我的问题
当我单击过滤器按钮时,它应该将“ vertical”发送到我的getnext php文件中,并且a)将会话变量设置为该值,b)返回包含与该垂直线相关的结果,但是第一次单击过滤器按钮时,它将传递vertical的值并将会话变量设置为等于该值,但是当我单击“获取下一条记录”按钮时,会话的值为null ...总是。 因此,出于某种奇怪的原因,第一次设置会话并将结果显示在屏幕上后,当我想显示下一条记录时,将mysess设置为null。
我在这里做错了什么?
在//getnext.php中
$ _SESSION ['verticalsess'] = “空”
我认为应该
$ _SESSION ['verticalsess'] == “空”
试试看,看看会如何
首先,您的SQL中存在巨大的安全漏洞。 您没有对传递给数据库的任何内容进行消毒。 转义数据或使用准备好的语句。
其次,在Java语言中使用$
是个坏主意,尤其是在加载jQuery的情况下。 因此,改变$number
,以number
的可读性。
第三... mysess
的初始值是mysess
? 如果我是第一次访问此页面,则将其设置为一个似乎未定义的会话变量。 我至少希望看到类似的东西
session_start();
if(!isset($_SESSION['verticalsess'])) $_SESSION['verticalsess'] = 'somevalue';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.