Как заставить PHP код срабатывать при открытии страницы?
Добрый день! Вопрос такой: Есть страница корзины в интернет-магазине на которой есть возможность расчета доставки товара, но для этого нужно ввести/заполнить поля (Область, город, индекс). Однако когда заходим в корзину и нажимам на «Расчет доставки» эти поля не подписаны (что конечно вызовет дискомфорт у пользователей).
https://yadi.sk/i/wzjwUSxF8aslkQ
Но после нажатия кнопки «Обновить» (для того что бы узнать стоимость доставки) подписи полей появляются.
https://yadi.sk/i/-p9heELdj_yhhg
Выходит что при открытие страницы Корзины и при нажатие на ссылку Расчет доставки php код не срабатывает полностью или частично и подписи появляются только после прямого обращения к нему.
Вопрос: Как сделать так что бы при нажатии на ссылку Расчет доставки подписи полей были видны сразу?
Если надо вот код калькулятора доставки (его фрагмент):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
if ( apply_filters( 'woocommerce_shipping_calculator_enable_state', true ) ) : ?> $current_cc = WC()->customer->get_shipping_country(); $current_r = WC()->customer->get_shipping_state(); $states = WC()->countries->get_states( $current_cc ); if ( is_array( $states ) && empty( $states ) ) { ?> esc_attr_e( 'Область / Район', 'woocommerce' ); ?>" /> } elseif ( is_array( $states ) ) { ?> } else { ?> echo esc_attr( $current_r ); ?>" placeholder=" esc_attr_e( 'Область / Район', 'woocommerce' ); ?>" name="calc_shipping_state" /> } ?>
Задний план
Я работаю над сайтом, который работает на сервере Apache в Windows (по крайней мере, на данный момент). Мои каталоги сайтов состоят из файлов HTML и PHP. Идея состоит в том, чтобы иметь доступные веб-страницы в виде файлов HTML, и всякий раз, когда мне нужно использовать динамический контент, я буду использовать запросы Javascript и AJAX, чтобы запросить то, что мне нужно с сервера. Запросы AJAX будут сделаны в PHP-скриптах, которые имеют каталог, посвященный им. Поскольку я хотел бы держать все хорошо организованным в своих подразделениях, так я это делаю (я стараюсь избегать встроенного PHP как можно больше).
Задача
Публичным HTML файлам не нужны какие-либо специальные настройки. Однако, когда речь заходит о конкретных HTML файлах администратора, я хотел бы сделать с ними что-то очень конкретное. Вместо написания некоторого встроенного PHP-кода для аутентификации пользователя в качестве администратора на веб-странице администратора (файл HTML) я хотел бы выполнить сценарий проверки подлинности всякий раз, когда пользователь пытается открыть определенные HTML файлы администратора, чтобы проверить, может ли пользователь открыть файл.
Вопрос
Короче говоря, это мой вопрос: как я могу запустить PHP-скрипт при открытии файлов HTML? Какие конфигурации мне нужно делать на сервере Apache или я могу как-то использовать PHP?
Как насчет создания общих частей страницы в html и загрузки административных инструментов с помощью ajax?
Как перед загрузкой страницы выполнить php код?
Надо например проверить куки и потом отправить данные. Но это нужно сделать в первую очередь. То есть наполнить станицу контентом.
Оценить 3 комментария
В php куки доступы при первом запросе страницы, а может и отправлять заголовки на установку куков, в чём именно вопрос?
JRK_DV, я должен проверить куки на наличие авторизованного пользователя а потом заполнить html соответствующими данными
pashaa, И в чем проблема?
Проверяете, отдаете нужный контент и страница готова.
Вам стоит почитать о PHP в целом.
PHP работает модулем сервера. Примерно: когда вы посылаете запрос серверу получить какойто файл, то сервер берёт этот файл, отправляет (например index.php) в модуль PHP, потом PHP когда выполнит скрипты с документом сразу возвращает его серверу, а сервер даёт его вам. То что вы хотите, так и есть уже на самом деле.
При использовании Cookies необходимо иметь в виду что Cookies должны устанавливаться до первого вывода информации в браузер (например, оперетором echo или выводом какой-либо функции). Поэтому желательно устанавливать Cookies в самом начале скрипта.
Ну допустим я запустил index.php и отправил там данные через echo?
Только не таким способом, то есть без вставки php в html или js.
Всю работу с Cookies скопируйте в самое начало скрипта, а потом пусть идёт всё остальное
PHP это сугубо серверный язык, он не работает в браузере вообще, никак, как например это может делать JavaScript и «там и там» с Node.js. Вы просто серверу, например Apache, говорите «Дай мне документ!», он его собирает там у себя при помощи PHP, и говорит вам в ответ «Вот! На тебе документ!» и всё. У вас в браузере ничего вообще не делается. То что вы делаете на PHP всё делается только на сервере, раньше это называлось Server-Side, это то что не Client-Side. Нужно точно разделять обязанности.
echo и print «врезают» в документ информацию которую вы укажите в виде результата формулы, или просто текстом, и отправят через локальную сеть/интернет вам.
Сформулируйте просто вопрос по другому, до тех пор, пока не получите на него ответ
Нет, вы не отправляете через echo данные, echo их только выводит, вставляет на сервере в документ который вы запросили. При помощи PHP вы управляете документами на сервере, вы не управляете браузерами.
В данном случае вы не отправляете никакие файлы из браузера, вы только их получаете, вы отправляете запросы, через GET / POST + URL документа в котором скрипт, и в ответ получаете готовый документ, который изменять в браузере уже не можете.
PHP намного проще чем вы думаете
Как подключить PHP к HTML?
PHP — это встраиваемый серверный язык программирования. Большая часть его синтаксиса заимствована из C , Java и Perl . А также добавлена пара уникальных характерных только для PHP функций . Основная цель этого языка — создание динамически генерируемых PHP HTML страниц .
PHP в HTML
При создании сложных веб-страниц вы столкнетесь с необходимостью объединить PHP и HTML для реализации конкретных задач. На первый взгляд это может показаться сложным, так как PHP и HTML являются двумя независимыми дисциплинами, но это не так. PHP предназначен для взаимодействия с HTML , и его код может быть включен в разметку страницы.
В HTML-страницы PHP-код включается с помощью специальных тегов. Когда пользователь открывает страницу, сервер обрабатывает PHP-код , а затем отправляет результат обработки ( не сам PHP-код ) в браузер.
HTML и PHP довольно просто объединить. Любая часть PHP-скрипта за пределами тегов игнорируется PHP-компилятором и передается непосредственно в браузер. Если посмотреть на пример, приведенный ниже, то можно увидеть, что полный PHP-скрипт может выглядеть следующим образом:
Приведенный выше код — это обычный HTML с небольшим фрагментом PHP , который выводит текущую дату, используя встроенную функцию date . При этом весь HTML будет игнорироваться PHP-компилятором и передаваться в браузер без изменений.
Интегрировать PHP в HTML действительно очень легко. Помните, что скрипт — это HTML-страница с включением определенного PHP кода . Можно создать скрипт, который будет содержать только HTML (без тегов ), и он будет нормально работать.
Выполнить php скрипт при открытии страницы
Добрый день!
У меня такая проблема:
Есть php скрипт, который несколькими потоками получает данные с другого домена.
Мне необходимо уменьшить время загрузки страницы, а точнее, чтобы этот скрипт начинал исполняться либо параллельно с загрузкой страницы, либо уже после её загрузки и выходные данные этого скрипта вставлялись в нужный div.
Использовать можно только jQuery или Prototype (с которыми я ещё не успел подружиться(()
Может Вы мне что-то посоветуете, т.к. задание очень срочное((
Минимум, что мне надо сделать — это чтобы после загрузки страницы в нужный div подгружались данные из php файла.
"http://site1.ua", 1 => "http://site2.ua", 2 => "http://site3.ua", 3 => "http://site4.ua", 4 => "http://site5.ua", 5 => "http://site6.ua", 6 => "http://site7.ua", 7 => "http://site8.ua", 8 => "http://site9.ua", 9 => "http://site10.ua" ); for($i=0; $i<10;$i++)< $fp = fsockopen ("tinyurl.com", 80, $errno, $errstr, 30); if (!$fp) < echo "$errstr ($errno)
\n"; > else < fwrite($fp, "POST /api-create.php?url=".$arr[$i]." HTTP/1.1\r\nHost: tinyurl.com \r\n". //"Content-Type: application/x-www-form-urlencoded\r\n". "Content-Length: 0\r\n". "Connection: close\r\n\r\n" ); while (!feof($fp)) < echo strstr(fgets ($fp,128),"http://"); >echo ""; > >
Проблема в том, что если этот aJax код вставить в любой файл, то он работает, но у меня есть обязательное условие — этот код надо запустить на сайте, написанном на фрэймворке CodeIgniter. И вот тут-то и возникает проблема. Пробовал его вызывать и во вьювере, и в контроллере, и с полными путями, и с относительными. Кароче, не работает он на сайте, сделанном при помощи CodeIgniter’a((
Может кто сталкивался с такой проблемой?