есть вот такая штука(смотри ниже). Короч цель проста- авторизовался и получаешь доступ к контенту, ну и данные пользователя пишу в сессию. Но не могу понять почему при нажатии на любую ссылку меня возвращает на форму авторизации??? вроде ж записал пользователя в сессию, вообщем подскажите если не сложно в чем бок. Пишу я недавно, так что это только первые шаги, так сказать. <?php header('Content-Type: text/html; charset=cp1251'); session_start(); include_once "connect.php"; echo "<div align='center' style='font-size: large'>Мой сайт</div><body bgcolor=#ffebcd>"; if(isset($_POST['login']) && isset($_POST['password'])) { $login = trim($_POST['login']); $password = md5(trim($_POST['password'])); $sql = "select login,password from users where login='$login' and password='$password'"; mysql_query($sql) or die(mysql_error()); if (mysql_affected_rows() == 1) { $_SESSION['login'] = $login; $_SESSION['password'] = $password; echo "<center>Добро пожаловать $login</center>"; include_once "r.html"; if (isset($_REQUEST['backbond'])) include_once "..\mygb\guestbook2.php"; if (isset($_REQUEST['contacts'])) echo <<<star Наш адрес: проспект К. Маркса 112 <br> тел. 678-34-23 star; } else { echo "<center>Пользователь не существует</center>"; } } else { include_once "auth_form.html"; } ?>
ссылки которые в r.html <!DOCTYPE html> <html> <head lang="en"> <meta charset="cp1251"> <title></title> </head> <body bgcolor="#ffebcd"> <div style="background:skyblue "> <h3>Меню</h3><br> <a href="?main">Главная</a><br> <a href="?products">Продукты</a><br> <a href="?contacts">Контакты</a><br> <a href="?backbond">Обратная связь</a><br> </div> </body> </html>
Логика такова-когда я захожу на сайт, мне отображается форма регистрация и ничего больше. Когда я регаюсь форма должна исчезнуть и появляется меню с ссылками, при нажатии на которые через глоб. Массив request я получаю данные и запускаю какой либо скрипт.ну на например нажав на обратная связь, я подключаю гостевую книгу. Добавлено спустя 1 минуту 25 секунд: то есть сейчас чтобы мне получить доступ к какому либо пункту меню, мне надо каждый раз регаться. тут либо с сессиями что то напутал либо хз....
в прямом. ну вот видим мы тут сейшн старт, ок. запись в суперглобальный массив видим ок. это единая точка входа? после прохождения авторизации как идентифицируется браузер клиента? успешно ли клиент и сервер обмениваются нужными заголовками?
О, к сожаления мои познания пока далеки от в/у вопросов( Добавлено спустя 18 минут 12 секунд: немного поменял структуру кода и вроде работает НО, когда я авторизуюсь мне выдает пустую страницу на которой только отображено "мой сайт" и только если я выделю заголовок и нажимаю enter, тогда отображается содержимое сайта. <?php header('Content-Type: text/html; charset=cp1251'); session_start(); include_once "connect.php"; echo "<div align='center' style='font-size: large'>Мой сайт</div><body bgcolor=#ffebcd>"; if(!empty($_POST['login']) && !empty($_POST['password'])) { $login = trim($_POST['login']); $password = md5(trim($_POST['password'])); $sql = "select login,password from users where login='$login' and password='$password'"; mysql_query($sql) or die(mysql_error()); if (mysql_affected_rows() == 1) { $_SESSION['login'] = $login; $_SESSION['password'] = $password; } else { echo "<center>Пользователь не существует</center>"; } } elseif(isset($_SESSION['login'])) { echo "<center>Добро пожаловать ".$_SESSION['login']."</center>"; include_once "r.html"; if (isset($_REQUEST['backbond'])) include_once "..\mygb\guestbook2.php"; if (isset($_REQUEST['contacts'])) echo <<<star Наш адрес: проспект К. Маркса 112 <br> тел. 678-34-23 star; } else { include_once "auth_form.html"; } if(isset($_REQUEST['reg'])) include_once"reg_form.html"; ?> Добавлено спустя 24 минуты 55 секунд: вообщем решился вопрос следующим образом. код авторизации и сессии был вынесен в отдельный файл auth_form.php и получается index теперь вот такой Код (Text): <?php header('Content-Type: text/html; charset=cp1251'); echo "<div align='center' style='font-size: large'>Мой сайт</div><body bgcolor=#ffebcd>"; include_once "auth_form.php"; if(isset($_SESSION['login'])) { echo "<center>Добро пожаловать ".$_SESSION['login']."</center>"; include_once "r.html"; if (isset($_REQUEST['backbond'])) include_once "..\mygb\guestbook2.php"; if (isset($_REQUEST['contacts'])) echo <<<star Наш адрес: проспект К. Маркса 112 <br> тел. 678-34-23 star; } else { include_once "auth_form.html"; } ?> Добавлено спустя 4 минуты 52 секунды: Признаться раньше думал что include используется только для того чтобы не наводить срачь в основном файле, а получается разница не только в этом. Я так понимаю если я подключаю файл то его код выполняется независимо от основного файла или в чем тогда разница? почему так не работала. а так работает?!
я вот честно не читал ваши коды после объявления о том что работает. и после того как прочитал фразу "я выделю заголовок и нажимаю enter"... вы адрес в браузере выделяете? ну реально. терминология не ок по подводу инклюда. это подключение стороннего файла в момент интерпретации. придумано по большей части для возможности создания библиотек кода. то есть чтоб не декларировать функции одни и те же постоянно а сложить их в один большой файл. ну то есть чтоб срача в коде не было, да. и интерпретатор выполняет инструкцию подключения только если столкнулся с ней. то есть если в в компилируемых языках заявленный код будет подключен на этапе компиляции и может быть никогда не выполнится - в пхп он будет подключен только если нужен. речь о конструкциях типа if(1){ include '1.php'; } else { include '2.php' } - элс никогда не выполнится потому что единица всегда истинна. следовательно два-пхп никогда не выполнится. более того его не будет трогать транслятор, то есть этого файла может физически не существовать и на работе программы это никак не скажется. как-то так.
спасибо большое за помощь! Добавлено спустя 1 минуту 12 секунд: но на примитивном уровне я так и не понял почему оно заработало после преобразования кода в отдельный файл