У меня есть html-скрипт с переменной javascript внутри него, эта переменная я передал затем в php-файл, чтобы увеличить его на 1. Моя проблема в том, что я не знаю, как я передам его обратно в html-файл, чтобы затем отобразить его, также я не знаю, как переменные работают на веб-сайте, если мне нужно сохранить переменную каким-то образом, чтобы убедиться, что она является той же обновленной переменной, что и при выходе из сайта.
html-скрипт:
<script type="text/javascript"> var nrVar= 1; document.getElementById("nrVar").innerHTML = nrVar; document.getElementByID("nrVar").value = nrVar; </script>
PHP-скрипт:
<?php $nrVar= $_POST['nrVar']; $nrVar= round((int)$nrVar+1); ?>
Вы должны сохранить свой javascript-номер в поле формы, отправить форму в PHP-скрипт, там номер увеличен, а затем отправить его обратно в сеансе. Далее приведен код:
increase1.php
<?php // GET THE NUMBER FROM PHP. THE FIRST TIME IT'S JUST 1. NEXT TIMES // THE NUMBER COMES IN SESSION INCREASED FROM PHP SCRIPT. session_start(); if ( IsSet( $_SESSION["increased"] ) ) $increased = (int)$_SESSION["increased"]; else $increased = 1; ?> <html> <head> <title>Jose Manuel Abarca Rodriguez</title> <script type="text/javascript"> // ASSIGN VALUE TO JAVASCRIPT VARIABLE. var my_number = <?php echo $increased; ?>; // SEND THE FORM TO INCREASE2.PHP. function clik () { document.getElementById("the_number").value = my_number; document.getElementById("frm").submit(); } </script> </head> <body> My number is = <script type="text/javascript">document.write( my_number );</script> <br/> <button onclick="clik()">Increase my number</button> <!-- FORM TO SEND NUMBER TO PHP. --> <form method="post" action="increase2.php" id="frm" style="display:none"> <input type="text" id="the_number" name="the_number"/> </form> </body> </html>
increase2.php
<?php session_start(); $num = (int)$_POST["the_number"]; $_SESSION["increased"] = ++$num; // !!! NEVER $num++ !!! header("Location: increase1.php" ); // BACK TO FIRST PAGE. ?>
Создайте два текстовых файла с указанными именами (увеличение1.php и увеличение2.php), откройте свой браузер и запустите localhost / enlarge1.php.
Предполагая, что $ _POST отправляется обычным submit, а не AJAX-запросом. Я бы сгенерировал скрипт вместе с остальной частью сайта, используя PHP, чтобы определить значение переменной:
<script> var nrVar = parseInt('<?php echo $_POST['nrVar']; ?>'); </script>
parseInt
здесь, чтобы убедиться, что мы получаем целочисленное значение, $ _POST sanitization также будет хорошей идеей, чтобы предотвратить инъекцию xss или даже javascript непосредственно.