Статьи

Технологія PHP. PHP і JavaScript

  1. Передача змінних з JavaScript в PHP
  2. файл index.html
  3. файл view.php

Мова PHP призначений для написання скриптів, які виконуються на стороні сервера, а в браузер клієнта відправляється не саме скрипт, а тільки результати його роботи. Це означає, що користувач, що завантажив сторінку вашого сайту, ніколи не побачить вихідний код скрипта і може навіть не здогадуватися, що сторінка створена динамічно.

У свою чергу, на мові JavaScript створюються виключно клієнтські скрипти, які виконуються в браузері клієнта. Для сервера скрипти JavaScript - це звичайні текстові дані, які нічим не відрізняються від іншого вмісту сторінки.

Розрізняються мови і за рівнем безпеки. При виконанні PHP-скрипта ви можете звертатися до файлової системи сервера, баз даних і інших зовнішніх об'єктів, на які вам надали права адміністратори. А ось JavaScript обмежений тільки вбудованими об'єктами браузера і з їх допомогою ви не зможете читати або писати безпосередньо на диск. Зроблено це в першу чергу для захисту від зловмисників, тому що якщо дозволити доступ скриптів до системної інформації і файлів - обов'язково знайдеться умілець, який напише код, потай відсилає ваші файли гаманців, логіни, паролі та іншу закриту інформацію на адресу умільця.

Крім іншого, протокол HTTP, по якому передаються всі веб-сторінки, не підтримує постійних з'єднань, тобто браузер підключається до сервера, запитує сторінку, отримує дані і негайно відключається. Це означає, що всі скрипти PHP завершуються ще ДО того, як почнуться виконуватися скрипти JavaScript.

Таким чином, сам собою напрошується висновок: пряму взаємодію скриптів на PHP і JavaScript просто неможливо.

Але не все так фатально, опосередковану взаємодію ми забезпечити все-таки можемо. Для передачі даних між клієнтської і серверної стороною можна використовувати один з трьох варіантів:

  1. Внесення змін до тексту сторінки (в скрипт);
  2. Використання Cookies;
  3. Використання Ajax;

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

<Html> ... &lt;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.


Чи знаєте Ви, що спостерігачі - це операції, які використовують в якості аргументу об'єкти відповідного їм типу і повертають елемент іншого типу, вони використовуються для отримання інформації про об'єкт. Сюди відносяться, наприклад, операції типу size.

НОВИНИ ФОРУМУ НОВИНИ ФОРУМУ   Лицарі теорії ефіру 13
Лицарі теорії ефіру 13.06.2019 - 5:11: ЕКОЛОГІЯ - Ecology -> ПРОБЛЕМА ГЛОБАЛЬНОЇ ЗАГИБЕЛІ бджіл ТА ІНШИХ запилювачів РОСЛИН - Карім_Хайдаров.
12.06.2019 - 9:05: ВІЙНА, ПОЛІТИКА І НАУКА - War, Politics and Science -> Проблема державного тероризму - Карім_Хайдаров.
11.06.2019 - 18:05: ЕКСПЕРИМЕНТАЛЬНА ФІЗИКА - Experimental Physics -> Експерименти Серлі і його послідовників з магнітами - Карім_Хайдаров.
11.06.2019 - 18:03: ВИХОВАННЯ, ОСВІТА, ОСВІТА - Upbringing, Inlightening, Education -> Просвітництво від Андрія Маклакова - Карім_Хайдаров.
11.06.2019 - 13:23: ВИХОВАННЯ, ОСВІТА, ОСВІТА - Upbringing, Inlightening, Education -> Просвітництво від В'ячеслава Осієвського - Карім_Хайдаров.
11.06.2019 - 13:18: ВИХОВАННЯ, ОСВІТА, ОСВІТА - Upbringing, Inlightening, Education -> Просвітництво від Світлани Віслобоковой - Карім_Хайдаров.
11.06.2019 - 6:28: Астрофізики - Astrophysics -> До 110 річчя Тунгускою катастрофи - Карім_Хайдаров.
10.06.2019 - 21:23: ВИХОВАННЯ, ОСВІТА, ОСВІТА - Upbringing, Inlightening, Education -> Просвітництво від Володимира Васильовича Квачкова - Карім_Хайдаров.
10.06.2019 - 19:27: СОВІСТЬ - Conscience -> Вищий розум - Карім_Хайдаров.
10.06.2019 - 19:24: ВІЙНА, ПОЛІТИКА І НАУКА - War, Politics and Science -> ЗА НАМИ страви - Карім_Хайдаров.
10.06.2019 - 19:14: СОВІСТЬ - Conscience -> РОСІЙСЬКИЙ СВІТ - Карім_Хайдаров.
10.06.2019 - 8:40: ЕКОНОМІКА І ФІНАНСИ - Economy and Finances -> КОЛЛАПС СВІТОВОЇ ФІНАНСОВОЇ СИСТЕМИ - Карім_Хайдаров.

Lt;script type = "text / javascript"> <?
Php If ($ login == "admin") echo "var isAdmin = true" else echo "var isAdmin = false"?
Php // при виконанні скрипта на сервері зберігаємо // дані в cookie setcookie (...); ?
Php?
GET [ 'color']; ?

Новости