需要将一个变量从PHP头()重定向传递到OnLoad()

Need to pass a variable to OnLoad() from a PHP header() redirect

本文关键字:重定向 OnLoad PHP 变量 一个      更新时间:2023-09-26

我在网站的DoStuff.PHP文件中有一个PHP变量PHPvar。HPvar被设置为字符串。

然后,DoStuff.php中的代码执行

header("Location: http://localhost/theWebite/index.php");

我需要在index.php的body标记中的onLoad处理程序中有两件事:

<body onload="doLoad()">

我的doLoad()函数必须能够做两件事:

1) 访问'HPPvar'变量,该变量也是在header()重定向之前在DoStuff.PHP中的PHP代码中设置的字符串(路径名)。

2) 此外,doLoad()必须能够检测"pHPvar"何时为空,这样才能避免尝试使用'HPvar',并跳过使用该字符串的逻辑。

我是php和javascript的新手,现在的工作给我留下了深刻的印象,但我花了半天的时间在这上面,在SO上读到了很多类似的问题。

我必须能够重定向回index.php,获取这个字符串变量,如果它被设置(不是null),执行一些javascript代码。

现在,这就是我的onLoad()所做的一切,嘿,它起作用了。但这还不是正确的方式。

<head>
<script type="text/javascript">
function doLoad()
{
   alert("Page is loaded");
}
</script>
</head>

如果不介绍一些我必须学习的新东西,比如Ajax等,我如何用javascript、html、php和我在这里的东西来完成这项工作?

如果这个myPHPVar是特定于用户的,您可以使用Jorge所说的会话变量。否则,在头重定向中传递变量:

header("Location: http://localhost/theWebite/index.php?myVar=" . $myPHPVar);

作为一个初学者,您可能不想使用JSON将变量从PHP转换为Javascript,但如果您必须将大量数据传递给Javascript代码,请查找它。

<script>
    var myPHPVar="<?php echo $_GET['myVar']; ?>";
</script>

如果用户对该PHP变量有任何影响,请确保清除该变量以防XSS攻击。

要在doLoad方法中检查myPHPVar是否为空,只需使用if (!myPHPVar) { .... }

在重定向到的页面的查询字符串中包含$thePHPvar是否可以接受?

header("Location: http://localhost/theWebite/index.php?$thePHPvar");

然后在javascript中,您只需查找document.location.search,例如

<head>
<script type="text/javascript">
function doLoad()
{
   alert('thePHPvar is ' + document.location.search.substring(1));
}
</script>
</head>

我建议您使用所需的变量设置一个会话,然后使用该会话在下一页上获取变量。在重定向到的页面上初始化会话后,您可以在javascript上使用它,如下所示:

var variableFromPhp = "<?php echo $the_variable ;?>";
alert(variableFromPhp);

您可以将其作为GET参数传递,但由于它是可篡改的,因此通常不太安全。

上一页:

然后在页面上重定向到:

 <head>
 <?php 
  session_start();
  $the_var=(isset($_SESSION['a_var']) && $_SESSION['a_var'])) ?
      $_SESSION['a_var']
      : false;
?>
<script type="text/javascript">
function doLoad(the_var)
{
   if(the_var){ alert("Page is loaded"); }
}
window.onload=function(){ doLoad(<?php echo var_export($the_var,true);?>); }
</script>
</head>