需要从PHP header()重定向向OnLoad()传递变量

时间:2011-06-30 02:36:24

标签: php javascript html onload

我的网站上的文件DoStuff.php中有一个PHP变量thePHPvar。 将PHPvar设置为字符串。

然后,DoStuff.php中的代码

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

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

<body onload="doLoad()">

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

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

2)同样,doLoad()必须能够检测'thePHPvar'何时为空,这样可以避免尝试使用     'thePHPvar'并跳过使用该字符串的逻辑。

我是php和javascript的新手,并且对我现在的工作感到印象深刻, 但是我已经花了半天时间,在SO上阅读了很多类似的问题。

我必须能够重定向回index.php,获取此字符串变量,如果已设置(非空),请执行一些javascript代码。

现在这是我的onLoad()所做的,嘿 - 它有效。但不是正确的方式。

<head>
<script type="text/javascript">

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

如果没有引入一些我需要学习的新东西,比如Ajax等,我怎样才能在javascript,html,php和我在这里完成这些工作?

4 个答案:

答案 0 :(得分:2)

$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>

答案 1 :(得分:2)

如果这个myPHPVar特定于用户,你可以使用session variable作为Jorge说。否则,在标题重定向中传递变量:

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

由于您是初学者,您可能不希望使用JSON将变量从PHP变为Javascript,但如果您必须将大量数据传递给Javascript代码,请查看它。

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

如果用户对该PHP变量有任何影响,请务必sanitise the variable against XSS attacks.

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

您可以将其作为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>