- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在使用 $_GET
、$_SESSION
和 XMLHttpRequest
时,我需要一些帮助。我构建了一个最小的工作示例来说明问题:
index.php
<?php
session_start();
$_SESSION['current'] = 2;
?>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<div id="content"><?php include('table.php'); ?></div>
</body>
</html>
table.php
<?php
if(isset($_GET['current']))
{
$_SESSION['current'] = $_GET['current'];
}
$current = $_SESSION['current'];
echo '<h1>Table Value = '.$current.'<br>';
?>
浏览.php
<?php
if(isset($_GET['current']))
{
$_SESSION['current'] = $_GET['current'];
}
$current = $_SESSION['current'];
echo '<h1>Browse value = '.$current.'<br>';
print "<input type=\"button\" value=\"Click here\" onclick=\"myfunc($current)\"/> ";
?>
ajax.js
function myfunc(input) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","table.php?current=" + (input+1),false);
xmlhttp.send();
document.getElementById("content").innerHTML=xmlhttp.responseText;
xmlhttp.open("GET","browse.php",false);
xmlhttp.send();
document.getElementById("target").innerHTML=xmlhttp.responseText;
}
我使用 Firebug 控制台来跟踪正在发生的事情。首先让我指出,我将 async 参数设置为 false,因为我的服务器请求非常小。当我单击按钮时 myfunc(2)
被执行并且它请求 ./table.php?current=3
和 ./browser.php
从服务器。
我的想法是,由于我首先请求 ./table.php?current=3
,因此 session 变量 $_SESSION['current']
将设置为 3 . 但是当 browse.php 被请求时, session 变量没有设置!这是我单击一次按钮后发生的情况:
知道哪里出了问题吗?提前致谢:)
最佳答案
需要在browser.php开头添加session_start();
。 (正如 Marc B 对您的问题的评论)。
如果您不确定哪个脚本包含在另一个已经启动 session 的脚本中,您可以使用
if(!session_id()) session_start();
在每个 php 脚本的开头。
根据你的推理:
I set the async parameter to false because my server requests are so small.
问题是网络通信可能会卡住您的页面很长一段时间(或在某些情况下永远卡住),无论响应大小如何。
关于php - $_GET、$_SESSION 和 XMLHttpRequest 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17193557/
PHP 内置了 _get 和 _set 函数。是为每个变量编写自己的 get 和 set 函数更好,还是使用带有大量 if else if 的内置函数?每种方法的优缺点是什么? 最佳答案 __get
这个问题可能看起来很相似,但请理解我的问题。在我的更新页面中,我对 $_GET 方法感到困惑。在我的第一页中,我提供了一个像这样编辑表格的链接 index.php "; e
我最近被安排做一个需要一些PHP的项目,我对PHP了解不多。站点中有几个实例,单击按钮后,用户会被重定向到带有一些 URL 参数的另一个页面。然后下一页使用 $_GET 获取这些参数并继续。 代码中的
我想要一些奇怪的东西。如果有人打开 index.php 页面,$select 必须是 full,。但如果有人打开 index.php?var=4 page,$select 必须是 other,带有 v
假设我有一个类似于 www.mysite.com/index.php?login=0 的 URL。是否可以切换大小写 $_GET 的变量和切换大小写 $_GET 的变量值? 类似于: switch (
我希望扩展我的 PHP 知识,但我遇到了一些我不确定它是什么或什至不知道如何搜索它的东西。我正在查看 php.net isset 代码,我看到了 isset($_GET['something']) ?
为了在 PHP 中读取未知变量,我经常使用如下代码: $bar = isset($_GET['foo']['bar']) ? $_GET['foo']['bar'] : NULL; 我不喜欢把变量名写
这个问题已经有答案了: How can I prevent SQL injection in PHP? (27 个回答) 已关闭 7 年前。 我在数据库中有一个(主题)和(页面)表。 page TAB
我正在尝试制作一个类似的搜索引擎,对于我的网站来说很简单。这是我正在使用的代码: $sql = mysql_query("SELECT * FROM books WHERE tags LIKE '
您好,我正在编写个人资料页面脚本,在此脚本中,我检查传入的 $_GET 变量的值并验证它是一个整数,然后我根据 $_SESSION 值验证此值以确认他们只能访问自己的帐户.代码如下所示: // val
我在这里检查了所有可能的解决方案,不幸的是它不起作用。我的代码似乎有什么问题? 我尝试了以下方法。 url解码 ( http://php.net/manual/en/function.urldecod
我有一个 test.php 并且我有下面的代码 我在下面列出了 url,然后显示了所需的输出 Test 1 : http://localhost/example/test.php output :
我有以下登录脚本,我确实在其中使用了 session 。 query("SELECT * FROM table WHERE x1='".$x1."' AND x2='".$x2."'");
实际上这是我的代码: echo ""; // get current vars $p1 = isset($_GET['p1']) ? trim($_GET['p1']) : false; $p2 =
我正在 Adobe Dreamweaver 中编写 PHP 代码。我的代码如下所示。我期待我的代码输出两个框,我在其中写了一些东西。当我单击提交按钮时,我希望看到我在框中输入的两个单独的内容被连接
我假设 $_GET 变量被解释为单引号字符串(而不是双引号字符串)。 我相信这是真的,因为以下测试(我自己尝试进行目录遍历攻击): $file = "../test.php"; /** * same
我有一个 test.php 并且我有下面的代码 我在下面列出了 url,然后显示了所需的输出 Test 1 : http://localhost/example/test.php output :
我需要使用 get 函数从 url 中检索 $title 变量。 $title=$_GET["title"]; $title 稍后在 MySQL 查询中使用。 问题是如何保证安全?换句话说,如何消除通
我不明白为什么有人在代码中使用 @,我在 mysql 连接中看到过它,但我不知道它是什么意思..谢谢! $player_name_orig = @$_GET['player']; if (!$play
我要问两件事。 第一个问题是我这样做是否正确?我正在将一个链接与 javascript 变量放在一起 http://google.com/test.php?var="+class4 然后我使用 php
我是一名优秀的程序员,十分优秀!