Подтвердить что ты не робот

Почему PHP скрипт не работает в веб-браузере?

Мы все видели много вопросов о StackOverflow, которые основаны на идее, что PHP работает как Javascript. Если человек явно не понимает, что PHP является препроцессором и работает только до отправки страницы.

Ярким примером этого является следующий код, где runCommand() не будет запускаться, когда пользователь нажимает кнопку.

<a href="<?php runCommand(); ?>">Click Me!</a>

как это было бы в Javascript

<a href="javascript:runCommand();">Click Me!</a>

Я видел много таких вопросов, которые возникают от новых людей, которые просто не понимают, как работает PHP.

Мой вопрос: Где отличный ресурс, который объясняет, как работает PHP?.

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

(Это также позволяет мне быть ленивым и не нужно писать объяснение каждый раз, когда оно появляется, но никому не говори!)

Если вы не знаете места, которое описывает это, не стесняйтесь предоставлять свою собственную интерпретацию.

Как указывает Carl Smotricz, есть часть PHP, которая может использоваться вне браузера. Но я в основном говорю об этом в среде Apache, где пользователь запрашивает веб-страницу и ожидает получить что-то обратно, обычно в HTML.

4b9b3361

Ответ 2

Возможно, вы тот, кто не понимает, как работает PHP. PHP является полноязычным интерпретатором, и вполне возможно запускать скрипты PHP без браузера вне веб-сервера: в командной строке или в среде IDE или другой среде графического интерфейса.

Препроцессор PHP, о котором вы говорите, является только функцией модуля Apache, который вызывает интерпретатор PHP для этой ограниченной цели.

Ответ 3

PHP-код интерпретируется на стороне сервера, и только вывод вашего PHP-кода будет отправлен клиенту.

Итак, если запрашивается PHP файл, веб-сервер отправляет PHP-код интерпретатору PHP, ждет выход и затем отправляет его обратно клиенту.

Ответ 4

Короче говоря, PHP принадлежит серверу, он обычно выводит HTML, но не для этого (или, по крайней мере, не только для этого). Пользовательский браузер "видит" только то, что остается после того, как php сделал свое дело.

Javascript принадлежит клиенту (aka browser): он обычно обрабатывает DOM, созданный путем разбора HTML, который (возможно) создается при выполнении PHP. Javascript может вести себя по-разному в разных браузерах (все, кто написал JS-скрипты, знают о проблемах с кросс-браузером, помните ли вы IE6?) Javascript не может самостоятельно обрабатывать базу данных; Он должен полагаться на язык на стороне сервера (php, возможно?;) (За исключением случаев, когда речь идет о node.js)

BTW, AJAX может быть хорошей ссылкой, чтобы понять, что именно делает PHP и что делает JS.

Ответ 5

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

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

Ответ 6

php отвечает на HTTP-запросы в типичном сценарии на стороне сервера. браузер читает этот ответ и отвечает за его рендеринг и выполнение любых дополнительных динамических скриптов, встроенных в ответ на стороне клиента. это, по сути, разделение труда в этом сценарии.

Ответ 7

PHP - это язык сценариев на стороне сервера, что означает, что весь PHP-код выполняется до того, как страница будет отправлена ​​на клиентскую сторону. По этой причине вы никогда не увидите

<?php ... ?> 

в источнике страницы.

На высоком уровне абстракции... Вы можете рассматривать веб-сервер (аппаратное обеспечение) как компонент из четырех разных частей. Webserver (программное обеспечение, например Apache), файловая система, база данных и плагин PHP.

Итак, например, когда вы отправили запрос страницы (для некоторой страницы... /example.php) на веб-сервер, Apache попытается найти эту страницу в файловой системе, и если страница существует, он вызовет php-плагин для выполнения всех

<?php ... ?> 

(конечно, включая запросы db). После того, как эта страница будет отправлена ​​обратно на клиентскую сторону, где вы можете манипулировать страницей через JavaScript, спроектировали ее с помощью CSS...

Подробнее: https://www.youtube.com/watch?v=PemsuAfc7Jw

Ответ 8

Причина, по которой скрипты PHP не работают в веб-браузере, только потому, что веб-браузеры не поддерживают PHP (по крайней мере, я не знаю). Этот факт не так тривиален, как можно подумать.

И это может показаться тревожным, поэтому взгляните на спецификации HTML на веб-сайте W3C HTML 5 и HTML 4.01 (потому что у него есть более подробные примеры). Что вы можете найти? Эти скрипты могут быть написаны на других языках, кроме JavaScript!

Вот пример документации HTML 4.01 (раздел под названием Указание языка сценариев).


(...)

Здесь более интересный обработчик окна:

<SCRIPT type="text/javascript">
      function my_onload() {
         . . .
      }

      var win = window.open("some/other/URI")
      if (win) win.onload = my_onload
</SCRIPT>

В Tcl это выглядит так:

 <SCRIPT type="text/tcl">
     proc my_onload {} {
       . . .
     }
     set win [window open "some/other/URI"]
     if {$win != ""} {
         $win onload my_onload
     }
 </SCRIPT>

Script написанный в Tcl отлично O.K. в HTML! Как насчет PHP? Документация HTML5 говорит:

Говорят, что пользовательский агент поддерживает язык сценариев, если каждый компонент типа script является ASCII-регистро-независимым соответствие для соответствующего компонента в строке типа MIME язык сценариев, который реализует пользовательский агент. (...) Пользовательские агенты могут поддерживать другие типы MIME для других языков, но не должны поддерживать другие типы MIME для языков в списке выше. Пользовательские агенты не обязаны поддерживать перечисленные языки выше.

Таким образом, это зависит только от веб-браузера (пользовательского агента), если он будет поддерживать PHP или нет. Играя с примером W3C, веб-браузер с поддержкой PHP мог бы принять что-то вроде этого.

<script type="text/php">
      function my_onload() {
         . . .
      }

      $win = $window->open('some/other/URI');
      if ($win !== false)
          $win->onload = 'my_onload';
</script>

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