Как узнать, что файл php загружен из исходного кода

Я работаю со своими файлами JS, теперь у меня есть уникальный файл php с заголовком JS, если установлена ​​переменная, она включает настоящий файл js, и это нормально.

На «домашней» странице есть тег script для файла php-js:

<head>
    <script type="text/javascript" language="javascript" src="bootstrap.php"></script>
</head>

файл bottstrap.php имеет что-то вроде:

if(isset($hostData) && !empty($hostData)) {
    include('bootstrap.js');
}else {
    echo "document.write('<center><bold>PLEASE DO SOMETHING...!</bold></center>');";
}

все вроде бы хорошо, однако при просмотре исходного кода (CTRL+U) браузер показывает часть "bootstrap.php" как ссылку, при нажатии на которую явно перенаправляется на http://mydomain/bootstrap.php и код js можно легко увидеть, а это именно то, чего я не хочу...

Итак, мой вопрос: есть ли какой-либо php-способ узнать, загружается ли файл из «представления рендеринга» браузера или загружается из «представления исходного кода» браузера ???

Любая помощь действительно приветствуется =)


person CABP    schedule 22.11.2011    source источник
comment
нет, вы не можете скрыть js (html и т. д.), если хотите, чтобы браузер мог его использовать.   -  person    schedule 23.11.2011


Ответы (6)


Короче говоря, нет. Вы не можете скрыть источник скрипта от пользователей. Лучшее, что вы можете сделать, это запутать его с помощью таких инструментов, как YUICompressor.

person Demian Brecht    schedule 22.11.2011
comment
Я согласен, однако я думаю, что если исходный код показывает bootstrap.php как ссылку, и я нажимаю на нее, это означает, что он загрузит файл независимо от того, был ли он загружен раньше или нет. - person CABP; 23.11.2011

Вы не можете скрыть код javascript. Он должен быть выполнен клиентом, и даже если вы попытаетесь скрыть это, плохо отформатировав свой код, такие инструменты, как firebug, могут легко проанализировать код и извлечь его.

person F21    schedule 22.11.2011
comment
Я могу жить с firebug и тому подобным, все мои клиенты очень простые пользователи, поэтому я на 100% уверен, что они не используют такие инструменты... - person CABP; 23.11.2011
comment
@CABP: Если они знают, как выглядит JS / хотят получить ваш JS, у них в браузере будут какие-то инструменты разработки. Я в этом уверен на 99,99999%. - person PeeHaa; 23.11.2011

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

Единственный способ, которым я могу думать о добавлении включения JS без его появления в режиме просмотра исходного кода, - это фактически загрузить внешний файл через javascript (вы даже можете разбить путь файла js на переменные, чтобы он не был действительно читабельным для человека) чего бы я не советовал.

Если кто-то захочет добраться до вашего javascript, он не сможет этого избежать.

person rmorse    schedule 22.11.2011

и код js можно легко увидеть, а это именно то, чего я не хочу...

Вы не хотите, чтобы JS видели, но вы хотите его использовать???


Однако с вашим кодом что-то не так, если вы хотите, чтобы файл js использовался на вашей странице.

Вам нужно включить / потребовать файл:

<script type="text/javascript" language="javascript" src="<?php include bootstrap.php ?>"></script>

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

Также:

сдача:

include('bootstrap.js');

to

echo bootstrap.js;

ИЗМЕНИТЬ

перечитав свой вопрос (и другие ответы), это именно то, что вы хотите: сделать ваш JS-код невидимым (поправьте меня, если я ошибаюсь).

Ответ на это: Нет, это невозможно.

Вы можете попытаться запутать код, но тому, кто хочет его увидеть, потребуется несколько секунд, чтобы «декодировать».

person PeeHaa    schedule 22.11.2011
comment
вы правы, он не может быть невидимым, единственное, чего я хочу, это не загружать его при просмотре исходного кода, я не возражаю, если пользователи используют другие инструменты, такие как firebug b/c, я использую файл bootstrap.js для динамической вставки действительно необходимых файлов js в соответствии с текущим URL =) - person CABP; 23.11.2011
comment
Он всегда будет доступен при просмотре исходника, и вы ничего не сможете с этим поделать. Ну, конечно, вы можете просто вообще не использовать javascript на своей странице :) - person PeeHaa; 23.11.2011

Попробуйте использовать $_SERVER["HTTP_referer"], у которых есть URL-адрес, вызывающий этот файл.

person DiogoDoreto    schedule 22.11.2011
comment
хорошо, если реферером является домашняя страница, тогда покажите код, в противном случае не - person DiogoDoreto; 23.11.2011
comment
@DiogoDoreto мммм не уверен в этом, сайт php говорит, что http_referer нельзя доверять ... - person CABP; 23.11.2011
comment
да, этому нельзя доверять, но вы также не можете скрыть код javascript на стороне клиента ... Только тот, кто знает, как подделать серверную переменную, увидит код (или проверит в браузере) - person DiogoDoreto; 23.11.2011

Мне очень жаль, что я исчезаю отсюда... Лучшее решение, которое я решил реализовать, довольно простое: не показывать НИКАКИХ URL-адресов или PHP-файлов в коде JS; поэтому в течение последних месяцев я использовал уникальный файл PHP для выполнения всех необходимых запросов к базе данных, хранимая процедура динамически генерирует все необходимые URL-адреса из JS. Таким образом, URL-адреса каждый раз меняются, и то, что я назвал «плохой логикой», предоставляется пользователям для просмотра/копирования бесплатно. Я не возражаю против этого, пока данные сервера защищены.

СПАСИБО ВСЕМ ЗА ВАШИ ЦЕННЫЕ ОТВЕТЫ!!!

person CABP    schedule 10.07.2012