ООП   PHP   web   4GL - визуальные среды

PHP и JavaScript

Передача переменных из JavaScript в PHP

Он-лайн справочник по JavaScript

Понятие объектной модели в JavaScript
Cвойства JavaScript
Методы JavaScript
События JavaScript
Размещение кода JavaScript на HTML-странице
URL-схема JavaScript
Обработчики событий JavaScript
Подстановки в JavaScript
Вставка (контейнер SCRIPT - принудительный
вызов интерпретатора)

Размещение кода внутри HTML-документа
Условная генерация HTML-разметки в браузере
Иерархия классов JavaScript
Программируем гипертекстовые переходы
Программируем графику
Программируем формы
Программируем свойства окна браузера
Поле статуса
Программируем status
Программируем defaultStatus
Поле location
Свойства
Методы
История посещений (History)
Тип браузера (объект Navigator)
Управление окнами в JavaScript
window.alert()
window.confirm()
window.prompt()
window.open()
window.close()
window.focus()
window.setTimeout()
window.clearTimeout
Фреймы (Frames)
Иерархия фреймов
Именование фреймов
Передача фокуса во фрейм

Сборник скриптов для практики программирования

Скачать Help-справочник по JavaScript с формате chm

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

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

Различаются языки и по уровню безопасности. При выполнении PHP-скрипта вы можете обращаться к файловой системе сервера, базам данных и другим внешним объектам, на которые вам предоставили права администраторы. А вот JavaScript ограничен только встроенными объектами браузера и с их помощью вы не сможете читать или писать непосредственно на диск. Сделано это в первую очередь для защиты от злоумышленников, т.к. если разрешить доступ скриптам к системной информации и файлам – обязательно найдётся умелец, который напишет код, скрытно отсылающий ваши файлы кошельков, логины, пароли и другую закрытую информацию на адрес умельца.

Помимо прочего, протокол HTTP, по которому передаются все веб-страницы, не поддерживает постоянных соединений, т.е. браузер подключается к серверу, запрашивает страницу, получает данные и немедленно отключается. Это означает, что все скрипты PHP завершаются ещё ДО того, как начнутся выполняться скрипты JavaScript.

Таким образом, сам собой напрашивается вывод: прямое взаимодействие скриптов на PHP и JavaScript попросту невозможно.

Но не всё так фатально, косвенное взаимодействие мы обеспечить всё-таки можем. Для передачи данных между клиентской и серверной стороной можно использовать один из трёх вариантов:

  1. Внесение изменений в текст страницы (в скрипт);
  2. Использование Cookies;
  3. Использование Ajax;

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

<html>
  …
  <script type=”text/javascript”>
  
  <?php
  	If ( $login == ”admin” )
  		echo “var  isAdmin=true”
  	else  echo ”var isAdmin=false”
  ?>
  
  If(isAdmin)
  	Document.write(“Я администратор”);
  Else
  	Document.write(“Я пользователь”);
  </script>
  …
  

В этом примере мы на этапе формирования страницы вписываем в неё заданную переменную с нужным нам значением. Работает это так:

  1. От пользователя поступает запрос на получение страницы.
  2. Запускается PHP и начинает выполнять соответствующий скрипт.
  3. В процессе выполнения скрипт создаёт HTML-страницу, содержащую скрипт JavaScript. Как я уже упоминал раньше, создаваемая веб-страница с точки зрения сервера – обычный текст, который можно перед отправкой пользователю править как угодно.
  4. Готовая страница передаётся в браузер пользователя.
  5. По окончании загрузки страницы в браузер начнёт выполнение наш JavaScript. При этом скрипт не будет «знать», каким образом он составлен – вручную программистом или автоматически скриптом. Главное – скрипт должен быть синтаксически верен и работоспособен.

Второй способ несколько сложнее, но позволяет передавать параметры как со стороны сервера, так и со стороны клиента. Суть в том, что и PHP и JavaScript позволяют читать и сохранять cookies (подробнее про cookies рассказывалось в одном из предыдущих уроков). Например (условный):

<html>
  <?php
  	// при выполнении скрипта на сервере сохраняем 
     // данные в cookie
  	setcookie(…);
  ?>
  <script>
  	// а этот фрагмент будет выполнен после
     // загрузки страницы
     // надо лишь считать cookie
  	getcookie(…);
  </script>
  

Здесь мы на стороне сервера устанавливаем cookie с необходимыми нам параметрами. При этом клиенту посылается специальным образом сформированная команда и данные, т.е. все cookie передаются ДО передачи основной страницы. Это значит, что все установленные сервером cookie будут доступны после загрузки страницы, а значит и при выполнении скриптов JavaScript.

Аналогично и для обратной передачи: все cookies, установленные из JavaScript, будут переданы на сервер при первом же обновлении страницы.

Основной недостаток этого метода – ограничение на размер передаваемых данных. Максимальный размер одного cookie не может превышать 4Кб, а у некторых пользователей возможность установки cookies вообще отключена. Так же этот способ создаёт большой дополнительный трафик, т.к. все cookies автоматически отправляются на сервер при каждом обновлении страницы.

У обоих методов взаимодействия есть два общих недостатка:

  1. Все обновления и изменения происходят только при загрузке/обновлении страницы. Это очень неудобно, особенно когда приходится заполнять громоздкие и сложные формы с динамическим содержимым, когда состав и содержимое полей изменяется в зависимости от уже введённых данных.
  2. Программист должен достаточно хорошо разбираться как в PHP, так и в JavaScript, чтобы грамотно написать клиентские и серверные скрипты.

Последний способ взаимодействия – AJAX. Это наилучший, пусть и не самый простой способ. Ajax – это комбинированная технология, использующая все преимущества PHP и JavaScript, позволяя изменять и обновлять данные на страницах вашего сайта «на лету», т.е. без перезагрузки страницы.

Для использования Ajax обычно создаётся так называемые "frontend" и "backend". Backend – это PHP-скрипты, выполняющиеся на сервере. Обычно такие скрипты возвращают структурированные блоки данных (массивы), не содержащие никакого оформления.

Frontend – это скрипты JavaScript, выполняющиеся в браузере пользователя. Основное их назначение – вызвать требуемый скрипт backend`a, получить данные и правильно их вывести на странице, добавив при необходимости обрамление из тегов и стилей.

Подробнее об использовании Ajax вы можете прочитать в соответствующем уроке по JavaScript на этом сайте.

Таким образом, взаимодействие PHP и JavaScript наладить всё-таки можно, но для этого надо хорошо разбираться в обоих языках. Из собственного опыта могу сказать, что для домашних страничек и небольших сайтов проще всего применять первый способ (прямую запись текста скрипта). Для проектов покрупнее или динамичнее – Ajax. А вот от третьего способа я бы рекомендовал вам воздержаться, т.к там слишком много подводных камней и условностей, таких как размер cookie, их поддержка браузерами, формат данных, кодировка и т.п.

Артемьев Сергей Игоревич

Передача переменных из JavaScript в PHP

Рассмотрим особенности работы со скриптами JavaScript в PHP. В отличие от PHP, скрипты JavaScript выполняются на машине клиента, в то время как PHP серверный язык программирования. В отличие, от технологии Java или ASP.NET он не имеет в своём составе средств для работы на клиентской стороне. Поэтому для создания эффективных Web-приложений необходимо комбинировать PHP и JavaScript скрипты. Существует две возможности такого взаимодействия: передача переменных из JavaScript в PHP и динамическое формирование скриптов JavaScript средствами PHP.

Одной из распространенной задачей является определение разрешение экрана и глубину цвета монитора посетителя страницы средствами JavaScript с последующей передачей этих данные в PHP-скрипт.

Это довольно часто встречающаяся задача, особенно при написании счетчиков посещений и создании “динамического дизайна”.

Скрипт JavaScript, выполняющий необходимые действия, размещен файле index.html, содержимое которого приведено в нижеследующем листинге:

Файл index.html

<Script Language="JavaScript">
var height=0;
var width=0;
colorDepth = screen.colorDepth;
if (self.screen)
{ 
  width = screen.width 
  height = screen.height
}
else if (self.java)
{ 
  var jToolKit = java.awt.Toolkit.getDefaultToolkit(); 
  var scrsize = jToolKit.getScreenSize(); 
  width = scrsize.width;
  height = scrsize.height; 
} 
if (width > 0 && height > 0) 
{ 
  // Производим перенаправление на скрипт counter.php, передавая в 
  // переменной scrsize строку, содержащую значения width, 
  // height и colorDepth. 
  window.location.href = "http://localhost/view.php?
                          width=" + width +
                         "&height=" + height +
                         "&color=" + colorDepth;
} else exit(); 
</Script>

После выполнения этого кода происходит автоматический переход на страницу view.php, в котором происходит вывод разрешения экрана и глубины цветопередачи в окно браузера (см. листинг ниже).

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

Файл view.php


<?php
  echo "Ширина : ".$_GET['width'];
  echo "Высота : ".$_GET['height'];
  echo "Цветовое <sup>разрешение</sup> : ".$_GET['color'];
?>


Как видно, работа с данными из JavaScript, аналогична работе с данными, отправляющихся методом GET.

ООП   PHP   web   4GL - визуальные среды

Знаете ли Вы, что "гравитационное линзирование" якобы наблюдаемое вблизи далеких галактик (но не в масштабе звезд, где оно должно быть по формулам ОТО!), на самом деле является термическим линзированием, связанным с изменениями плотности эфира от нагрева мириадами звезд. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 20.09.2019 - 04:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
18.09.2019 - 12:08: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> ПРОБЛЕМА ИСКУССТВЕННОГО ИНТЕЛЛЕКТА - Карим_Хайдаров.
18.09.2019 - 06:01: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Л.Г. Ивашова - Карим_Хайдаров.
17.09.2019 - 05:51: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ФАЛЬСИФИКАЦИЯ ИСТОРИИ - Карим_Хайдаров.
17.09.2019 - 05:41: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Андрея Тиртхи - Карим_Хайдаров.
16.09.2019 - 18:21: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
16.09.2019 - 03:11: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
14.09.2019 - 18:23: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
13.09.2019 - 09:08: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
12.09.2019 - 17:47: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
08.09.2019 - 03:42: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от О.Н. Четвериковой - Карим_Хайдаров.
07.09.2019 - 07:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Декларация Академической Свободы - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution