2013-06-10 5 views
1

Я довольно новичок в программировании в Javascript, и я не могу найти обширную документацию о том, как создать переменную PHP из переменной javascript. Может ли кто-нибудь, пожалуйста, показать мне пример этого? В следующем примере, «т» является переменной Javascript, что я хочу использовать в PHP:Можете ли вы создать переменную PHP из переменной Javascript?

<script type="text/javascript"> 
     function readtime(){ 
      var d = new Date(); 
      var c_hour = d.getHours(); 
      var c_min = d.getMinutes(); 
      var c_sec = d.getSeconds(); 
      var t = c_hour + ":" + c_min +":" + c_sec; 
          } 
    </script> 
+2

PHP работает на сервере, JavaScript в браузере, поэтому они не могут напрямую общаться друг с другом. (Существует Ajax, но это вряд ли будет практичным в этом конкретном случае.) –

+0

Я считаю, что вы ищете решение AJAX. http://www.tizag.com/ajaxTutorial/ajaxphp.php – JonnyS

+0

Поскольку вы даете прямую отметку времени, почему бы просто не дать 'd.getTimezoneOffset();'? Это позволит PHP точно знать, в какое время пользователь находится. –

ответ

0

Нет, не без AJAX (который не будет работать в этом случае). PHP - это серверный язык, который используется для создания веб-страницы, которую веб-сервер затем отправляет пользователю. Javascript - это клиентский язык (работает в браузере пользователя); как таковой, он всегда запускается после завершения всего PHP. Вы можете использовать PHP для генерации JavaScript, но не наоборот.

В PHP, чтобы получить текущее время в этом формате, используйте $currentTime=date('h:i:s').

+0

, вы ответили на мой вопрос как можно быстрее, точную информацию, а также решение для моего конкретного примера. Спасибо! –

0

Если вы хотите использовать переменную в PHP по какой-то причине, единственный способ с помощью Ajax вызовов. Это отправит переменную на сервер, вы сможете обрабатывать ее, как хотите, и сможете отправить ее обратно в Ajax и делать то, что хотите на своей странице.

Но вы не сможете использовать результат своего Javascript на своем PHP, например, если вы переводили с JS на PHP, потому что JS - это клиентская сторона и сторона сервера PHP.

+0

Благодарим вас за это разъяснение. Разве это не потому, что если Javascript может напрямую взаимодействовать с PHP, пользователи могут легко манипулировать веб-страницами так, как они хотят? –

+0

Да, поскольку JavaScript является клиентским, если он может напрямую взаимодействовать с вашим сервером, это может быть потенциально опасным, потому что любой может изменить сценарий для отправки всего, что захочет на ваш сервер. –

2

Поскольку весь скрипт PHP запущен на сервере, нет никакого способа сделать это без AJAX после загрузки или на загрузке страницы, но это может привести к поражению цели переменной PHP. Однако вы можете определить переменную javascript с переменной php.

<?php 
    $foo = "bar"; 
?> 
<script type="text/javascript"> 
    foo = '<?php echo $foo; ?>'; 
    alert(foo); 
</script> 

Я хотел бы взглянуть на PHP date function, а если все, что вам нужно, чтобы получить дату и время в переменную PHP.

+0

'echo json_encode ($ foo)'. Кроме этого, фрагмент будет работать. –

+0

Благодарим вас за помощь и разъяснение того, какие из атак возможны непосредственно между Javascript и PHP. –

+0

Просто заметьте, вы никогда не должны делать 'foo = ' '; 'Если какая-то причина $ foo содержит a', то это вызовет ошибку. Вы должны вместо этого сопоставить его с массивом или объектом и использовать 'foo = ' – Steven

0

PHP работает на сервере; когда браузер выполняет javascript (если это так - вы никогда не можете быть уверены) php больше не работает. В этом случае вы можете перенести всю эту логику на php, используя свои объекты/функции даты. Есть несколько способов сделать это:

  • если вы собираетесь передать управление какой-то PHP код (запрос на новую страницу или AJAX вызова) время может быть либо вычислена PHP как часть все, что нужно do или передать его как параметр GET или POST.
  • если переменная т просто должно быть напечатаны на экране, главная страница может сделать это на стороне PHP
+0

Я ценю помощь. Спасибо. –

1

Вы можете отправить переменную JavaScript на страницу PHP с помощью Ajax Этого вызова является, как вы делаете it

function loadXMLDoc() 
    { 
var a=document.getElementById('id').value//this is your js variable to be sended to a php page 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
     } 
    else 
     {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.onreadystatechange=function() 
     { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     //response 
     } 
     } 
    xmlhttp.open("GET","Xyz.php?variable="+a,true); 
    xmlhttp.send(); 

    } 

then on your php page get the values by using $_REQUEST['variable'] 

    $PHP_variable=$_REQUEST['variable']; 
+0

Использование jquery для вызова ajax было бы проще и лучше, не так ли? –

+0

Отступы от кода аккуратно выглядят лучше. jQuery не предоставит каких-либо существенных преимуществ и будет довольно раздутым. – Quentin

+0

Я ценю пример AJAX, но я понимаю, что AJAX предназначен для асинхронного обновления веб-страниц правильно? Я просто пытаюсь захватить время в момент отправки формы пользователя. Спасибо за помощь! –

2

Как уже упоминалось, PHP работает на сервере - Javascript запускается на клиенте. Я подумал, что вы можете оценить некоторые подробности в том, что это значит, и почему нет «легкого ответа» на то, как это сделать.

Сервер - это компьютер, на котором хранится код.
Клиент - это браузер, на который вы просматриваете результирующие страницы.
Это может быть на одном компьютере, особенно при тестировании, но они по-прежнему считаются отдельными объектами.

При запуске PHP + JavaScript приложений:

1: Браузер делает запрос на сервер.
2: Сервер подтягивает соответствующий PHP, сует его и вставляет его в html в соответствующих местах.
3: Полученные данные (html + javascript) отправляются через Интернет в браузер, который его получает.
4: Браузер отображает необработанные данные (как html).
5: Браузер сжимает javascript и соответственно изменяет html.
6: Дополнительная активность на странице может привести к постоянному повторению # 4 или возврату к # 1.

Теперь люди рекомендуют использовать вызовы Ajax следующим образом: Ajax-вызов сделает запрос на сервер «в фоновом режиме». Это не вызывает перезагрузку страницы, поэтому шаг №4 пропускается. Он просто получает соответствующие данные, обрабатывает их и вносит изменения в уже существующий html по мере необходимости.

Но это также означает, что вы можете отправить запрос на сервер, чтобы запустить конкретный раздел PHP - сохранить данные в базе данных, запросить новую часть данных, выполнить расчет ...

Однако. Каждый тип запроса нуждается в своей новой точке доступа на PHP - странице PHP без html, если хотите. Json обычно является форматом данных для передачи, хотя xml (X в AJAX) также используется.

Это не простой акт, и вызывает много усложнению кода ... но потому, что PHP может построить JavaScript, но Javascript не может непосредственно влияют на PHP, что делает передачу данных, как правило, в одну сторону street, это единственный способ вернуть результаты javascript на сервер, чтобы PHP мог справиться с этим. Вы не можете просто «изменить переменную PHP» - вам нужно снова запустить PHP с нуля и инициализировать все соответствующие переменные, чтобы получить правильный результат. Вы не подбираете, где вы остановились, вы делаете новый запрос.

Надеюсь, это поможет!

+0

Благодарим вас за подробное объяснение взаимодействий Javascript/PHP, а также о том, как работает AJAX. Вся информация, которую вы предоставили, релевантна и полезна. Еще раз спасибо! –

Смежные вопросы