Нужно передать переменную OnLoad () из перенаправления PHP header () - PullRequest
1 голос
/ 30 июня 2011

У меня есть переменная PHP thePHPvar в файле DoStuff.php на моем веб-сайте.thePHPvar устанавливается в строку.

Затем после этого код в DoStuff.php делает

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

Мне нужно 2 вещи в моем обработчике onLoad внутри тега body index.php:

<body onload="doLoad()">

Моя функция doLoad () должна иметь возможность делать 2 вещи:

1) получать доступ к переменной 'thePHPvar', которая снова является строкой (именем пути), которая была установленав PHP-коде в DoStuff.php непосредственно перед перенаправлением header ().

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 ]

2 голосов
/ 30 июня 2011

Вы можете использовать переменную сеанса , как сказал Хорхе, если этот myPHPVar специфичен для пользователя.В противном случае, передайте переменную в вашем перенаправлении заголовка:

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

Поскольку вы новичок, вы, вероятно, не захотите использовать JSON, чтобы получить переменную из PHP в Javascript, но посмотрите ее, есливам когда-нибудь придется передавать много данных в код Javascript.

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

Если пользователь имеет какое-либо влияние на эту переменную PHP, обязательно очистите переменную от атак XSS.

Чтобы проверить, пусто ли myPHPVar в вашем методе doLoad, просто используйте if (!myPHPVar) { .... }

2 голосов
/ 30 июня 2011

Было бы приемлемо включить $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 голос
/ 30 июня 2011

Вы можете передать его как параметр 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>
1 голос
/ 30 июня 2011

Я предлагаю вам установить сеанс с переменной, которую вы хотите, а затем использовать сеанс, чтобы получить переменную на следующей странице.После инициализации сеанса на странице, на которую вы перенаправлены, вы будете использовать его в JavaScript следующим образом:

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