Веб программирование

gram

Старожил
В общем вопрос у меня один :) но на всякий случай сделал глобальную тему, на будущее :))

Кто помнит хорошо javascript? Как мне в мозилле получить доступ к тэгу <span id=myid>?
в ИЕ пахало тока document.all["myid"]
в мозилле это ессесно не пашет... в общем, нужно просто иметь некую область в документе, куда можно было бы писать хтмл-текст для обоих браузеров. Жду совета :)
 

Незнайка

Старожил
Вопрос: есть навигационная панель (достаточно развитая) и куча страничек, где она должна присутствовать, как её воткнуть вовсе эти странички (во всех страничках нужен хитрый скрипт, ссылающийся на одну и туже панель) Дело в том, что панель будет постоянно обновляться по мере добавления материала, а редактировать десятки страничек (их навигационные панели) бессмысленное занятие.
Gram! У тебя то уж точно должны быть умные мысли! :wink:
 

Majik13

Старожил
Ты имеешь в виду, как редактировать меню отдельно от страниц и как вставлять это меню в каждую страницу?
Если да, то это делается одной строкой SSI или PHP.
P.S. Строка будет выглядеть примерно так
<?include("$DOCUMENT_ROOT/includes/menu.inc");?> - PHP
или <!--#include virtual="menu.inc"-->
Второй случай проще, конечно если сервер поддерживает SSI.
 

Незнайка

Старожил
Да, меня интересует, как вставить одно и тоже меню во все страницы! Ну а проблемм с редактированием (добавлением) его думаю проблемм не возникнет.
Я понимаю, что это должно делаться одно строкой, типа как прилипание страницы к краям экрана (полезный скрипт, огромное спасибо), но я эту строку и не знаю :cry: , и как я думаю, ещё многих других :oops:
 

Незнайка

Старожил
А у меня два файла меню, первый на HTML, а второй, описывающий всплывающие меню, на ява-скрипт. Я как понимаю, строка относится к первому файлу (уже в нём есть ссылка на второй)?
 

Majik13

Старожил
Не, прилипание это не скрипт, это СSS - таблица стилей.
А SSI - это server side includes, серверная фича.
Так как у тебя Апач стоит, попробуй сделать следующее:
Найди в файле /conf/httpd.conf строку
AddHandler server-parsed .shtml .shtm
и допиши ее до
AddHandler server-parsed .shtml .shtm .html .htm
Перезапусти апач.
Потом сделай пустую html (пусть это будет ssi.html) с одной строкой в теле :
<!--#include virtual="text.txt"--> и сделай в той же директории текстовый файл
text.txt
Зайди через сервер на ssi.html.
Ты должен увидеть текст твоего text.txt.

Вместо текста там можно писать html/ Код будет просто встраиваться в твою страницу вместо <!--#include virtual="файл.расширение"-->
Если непонятно, пиши в личку.
 

Majik13

Старожил
Незнайка":1x2oszz0 сказал(а):
А у меня два файла меню, первый на HTML, а второй, описывающий всплывающие меню, на ява-скрипт. Я как понимаю, строка относится к первому файлу (уже в нём есть ссылка на второй)?

Пример кода одного из наших сайтов:
в индексе:
..
<!--#include virtual="/ssi/bodier_3.htm"-->
..
в bodier_3.htm:
..
<script language="JavaScript" src="/scripts/menu.js"></script>
..

Меню выпадающее, везде работает.
 

Незнайка

Старожил
Спасибо за информацию, буду разбираться, если не получиться, тогда обращусь, но думаю справлюсь.
Из приведённого примера, вроде бы действительно всё просто и решается одной строкой. Ещё раз спасибо!
 

Glorius

Старожил
gram":3phpeshs сказал(а):
В общем вопрос у меня один :) но на всякий случай сделал глобальную тему, на будущее :)) Кто помнит хорошо javascript? Как мне в мозилле получить доступ к тэгу <span id=myid>? в ИЕ пахало тока document.all["myid"] в мозилле это ессесно не пашет... в общем, нужно просто иметь некую область в документе, куда можно было бы писать хтмл-текст для обоих браузеров. Жду совета :)
Объектные модель в мозилле и ИЕ как известно отличаются. Но есть универсальный способ - получить указатель с помощью getElementById. Напр., вот так:
Код:
<span id="myid">test</span>
<script>
<!--
var obj = document.getElementById("myid");
obj.style.color = "red";
//-->
</script>
 

gram

Старожил
Спасибо, конечно, но вопрос несколько устарел :)) уже давно всё написано и работает у меня в смс-сервисе :)
 

Dam[И]eD

Старожил
Делаю сайт, есть страницы, на которые доступ посторонних юзеров не желателен, как это сделать ?
 

gram

Старожил
Либо серверными скриптами, типа php, проверять айпи или проводить авторизацию по логину и паролю. Либо подобными средствами самого сервера - устанавливать доступ по айпи на отдельные файлы и папки.
 

Dam[И]eD

Старожил
А есть такой скрипт - просто вводишь пароль и заходишь на страничку ?
 

gram

Старожил
ну может и есть... только дальше-то что? :)
проверку авторизации надо делать на каждой странице, при её запросе.. Информация об авторизированных пользователях хранится в данном случае на сервере. Дальнейшие детали реализации на PHP не знаю :)
 

Glorius

Старожил
Можно делать аутентификацию через HTTP, а можно через РНР. Второй способ лучше, поскольку позволяет сделать logout. HTTP аутентификация такой logout сделать не позволяет т.е. права фактически будут принадлежать не юзеру, а компьютеру.
Я лично такую авторизацию дела таким образом - сначала проверял логин и пароль введенный пользователем с базой, если все ОК то присваивал уникальный индетификатор, который зависит от текущего времени и даты (там функция есть специальная). Затем записывал его в базу и одновременно в куки на клиенте часов на 8, также в куки записывал еще и логин.Потом при открытии страниц которые нужно защитить, проверял этот UID с тем, что был в базе, если все в порядке, то страница грузится, если нет, то exit и редирект на страницу с указанием ошибки.
У меня этот скрипт куда-то задевался, но написать его можно за час (строчек 30-40 кода). А вообще универсальный сделать сложно, приходится каждый раз по месту затачивать.
 

Majik13

Старожил
HTTP аутентификация хоть и менее удобна, зато более надежна с т.з. безопасности, так как работает с сервером. Правда на уровне папок, а не страниц =)
Куки вообще-то это не очень хорошо, те же сессии уже лучше, но я например, до сих пор не могу понять, как прикрутить их вместо куки на своем СДОКТВиВ.
Самая модная аутентификация с авторизацией делается в файлах .htaccess:
Код:
Deny from All
:lol:
P.S. У меня тут была забавная идея, как закрывать сервером доступ к папкам на основе PHP авторизации: при регистрации пользователя его логин и пароль пишется в базу и на основе этих данных скрипт модифицирует .htaccess'ы =). Реализовать еще не пробовал - проблема тут в шифровании паролей (механизм .htacessового шифрования фиг где найдешь) и в том, что при входе в определенную папку зарегистрированному пользователю все равно вылезет окно с запросом.
Где это применить - на примере СДОКТВиВ - папки с учебниками: доступ снаружи в эти папки по прямому URL должен быть закрыт, никакого PHP в этих папках размещать нельзя... Но любой зарегистрированный пользователь должен иметь возможность туда попасть (один пароль/логин на всех как-то несолидно). Вот такие бредовые идеи и рождаются =). Кстати, если кто-то сможет подсказать другой механизм, буду благодарен.
 

gram

Старожил
а в чём проблема с куками? вообще-то обычно они хранятся в памяти в зашифрованном виде, с флагами не сохранения на диске.
в .NET это называется Forms Authorization и работает на ура. Принимается логин с паролем, создается так называемый билет с необходимой информацией (например, ролями) на некоторое время, шифруется и сохраняется в куки (чтобы не вытаскивать при каждом запросе из базы). Информация о залогиненном пользователе хранится уже сервером в его базе текущей сессии
 

Majik13

Старожил
В куках плохо хранить любую информацию о состоянии пользователя, потому что они находятся у клиента, а не на сервере. К тому же процентов 1-10 пользователей их выключают. А сессии-то не выключишь... Идея просто в том, что информацию в любом случае лучше хранить на сервере.
 

Glorius

Старожил
Куки храняться на диске в папке Cookies. Если под nt, то эту папку можно найти в папках пользователя. Срок хранения куки задается при их создании в миллесекундах. Если срок хранения не задавать, то они будут удалены сразу после окончании сессии. Доступ к кукам возможен только с того домена, который их создал.

Что касается дот Нет, то может там и шифруются, а при прямом обращении (напр., с помощью РНР или JS или еще чего-то подобного) этого не происходит. Но это и не нужно. Я предлагал хранить в куках иникальный ID сессии и такой же в базе. И затем сравнивать. Никакие пароли в куках храниться не будут.

Любая авторизация осуществляется на сервере, будь то HTTP или РНР. HTTP авторизация нисколько не превосходит по надежности и гораздо менее удобна. К примеру, я не знаю ни одну серьезную почтовую систему с веб-интерфейсом (yandex, mail, или еще где-нибудь, где серьезно думают о безопасности) где бы выскакивало окно броузера с логином и паролем. Все эти формочки храняться на HTML-странице и результаты передаются post-данными. При HTTP авторизации пароль передается в HTTP-заголовках и прочитать их не сложнее, чем post-данные.

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

Majik13

Старожил
Glorius":2spfvptb сказал(а):
К примеру, я не знаю ни одну серьезную почтовую систему с веб-интерфейсом (yandex, mail, или еще где-нибудь, где серьезно думают о безопасности) где бы выскакивало окно броузера с логином и паролем.

1. Не рассказывай мне сказки про мэйл.ру, я достаточно начитался чужих писем, ничего особенного для этого не делая ;) Самая надежная авторизация -именно через попап с двумя строчками.

2. Если у клиента запрещен прием куки, тогда ЧТО?
 
Верх