【问题标题】:How can I pass a variable from one php to another that's called by ajax without it being visible to the front end如何将一个变量从一个 php 传递到另一个由 ajax 调用的变量,而前端不可见
【发布时间】:2011-09-20 19:19:31
【问题描述】:

我有一个 php 函数,它在加载 build.php 页面并创建 $variable 时运行。我也有 save.php,它通过 scripts.js 中的 ajax 函数调用(获取通过 POST 发送的数据),但我需要在 save.php 中使用 $variable。

有没有一种通过 ajax 发送更多数据而不在前端可见的好方法?

我曾想过为此使用 $_SESSION 变量,这似乎可行,但我知道它可能并不完全可靠并且并不总是一个好主意(尽管这可能被夸大了where I was looking)。

这是最好的方法吗?还是有其他方法可以通过 javascript 将 PHP 变量传递给另一个变量,而无需将它放在前端代码中?

【问题讨论】:

  • JS 代码定义为前端代码。任何人都可以打开您的 JS 代码并找到这个“隐藏”变量。
  • 是的,我知道没有绝对的方法可以阻止它,但有办法让它更好地隐藏起来。或者只是使用会话,如果可以的话。

标签: php ajax session variables


【解决方案1】:

会话变量只存在于服务器上,不存在于客户端上。为了在浏览器中保存由 javascript 函数生成的会话变量,您需要以某种方式将其传递给服务器。而且您可能意识到您对客户端发生的事情没有太多控制权。它们几乎可以更改您发送到服务器的任何帖子信息 - 有些程序可以很容易地做到这一点。

即使你使用 ajax,客户端仍然会弄乱你的变量。

您可以尝试在发送信息之前对其进行加密。

另一方面,如果您想在服务器上运行的两个脚本之间传递变量,您完全可以使用会话变量来实现。

更新

您似乎是在第一个脚本中创建变量,然后有一个调用第二个脚本的 javascript 函数,您需要第二个脚本来访问第一个脚本创建的变量。

在上述场景中,您可以明确地使用会话变量。这是它们存在的主要原因。让您可以在不同的脚本之间传递信息。

第一个 PHP 脚本

session_start();
logic to create the variable
$_SESSION['myVar'] = $myVar;
rest of the script

Javascript

calls second script / does not change the value of the variable

第二个 PHP 脚本

session_start();
$myVar = $_SESSION['myVar'];
execute second script

我希望这是有道理的。

【讨论】:

  • 是的,这就是我正在做的事情.. build.php 生成了一个变量,我需要在 save.php 中使用它,但是 save.php 是通过 ajax 调用并使用 POST 提供数据。从周围阅读看来,似乎不推荐使用会话,但我没有看到另一种方法......
  • 如果变量是由第一个脚本创建的并且您需要在第二个脚本中使用它,那么您可以明确地使用会话变量。我更新了我的答案。
【解决方案2】:

如果您使用的是 JQuery,那么简单:

$.post({
   url: somurlhere,
   data: somedatahere
});

【讨论】:

  • 我知道该怎么做,是的。但是 javascript 文件只能从数据库或打印到页面本身的数据中获取数据;在这种情况下,我想从一个脚本传递一个变量值,该脚本是加载外部 js 脚本的页面的一部分。
  • @Damon 我不得不承认你的问题以及这个附录很难理解。在您的问题中,您说将 PHP 变量传递给另一个变量(无论“一个”是什么)。在您上面的评论中,您说您想将 js 变量传递给页面中加载的另一个 js 脚本?我很困惑。
  • @Damon 更清晰。是的,会议听起来像是要走的路。 session_start(); $_SESSION['keyname'] = $somevalue;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 2018-01-14
  • 2018-11-04
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
相关资源
最近更新 更多