login.php PHP: <?session_start();?> <form method="POST"> <br/> Login:<input type="text" name="log" title="Введите login" value=""> <br/> <br /> Password:<input type="text" name="passwd" title="Введите password" value=""> <br/> <br /> <input type="submit" name="sub" value=" Go! " /> <br/> <br/> </form> <?php $password="1"; $login="1"; if(isset($_POST['sub'])) { $inputlogin=$_POST['log']; $inputpassword=$_POST['passwd']; $inputlogin=trim($inputlogin); $inputpassword=trim($inputpassword); if($inputpassword==$password && $inputlogin==$login) { $_SESSION['aut'] = true; print ("<script>document.location='admin.php';</script>\r\n"); } else { echo "<font color=Red>Неправильный пароль</font>"; } } ?> admin.php PHP: <?session_start(); if(!isset($_SESSION['aut'])) exit('Доступ запрещён'); echo 'авторизован!'; //дальше исходник.... ?>
Настолько тупо делать так: PHP: if(!isset($_SESSION['aut'])) exit('Доступ запрещён'); зачем пользователю знать что выводит файл Лучше просто PHP: if(isset($_SESSION['aut'])) { //code } И все =\ и все =э
ёпт ну если б он знал как делать он бы не спрашивал......вобще как ему нужно сделать он разберётся думаю дальше, я ради примера выложил
Не работает авторизация... Вводишь нужный логин и пароль а в ответ получаешь страницу которая должна выводиться при прямом доступе к странице... и вылетает ошибка В чем может быть проблема? login.php PHP: <? error_reporting (0); session_start(); print '<form method="POST">'; print '<br/>'; print ' Login:<input type="text" name="log" title="Введите login" value="">'; print '<br/>'; print '<br />'; print 'Password:<input type="text" name="passwd" title="Введите password" value="">'; print '<br/>'; print '<br />'; print ' <input type="submit" name="sub" value=" Go! " />'; print '<br/>'; print '<br/>'; print '</form>'; $password="1"; $login="1"; if(isset($_POST['sub'])) { $inputlogin=$_POST['log']; $inputpassword=$_POST['passwd']; $inputlogin=trim($inputlogin); $inputpassword=trim($inputpassword); if($inputpassword==$password && $inputlogin==$login) { $_SESSION['aut'] = TRUE; print ("<script>document.location='admin.php';</script>\r\n"); } else { echo "<font color=Red>Неправильный пароль</font>"; } } ?> admin.php PHP: session_start(); if(isset($_SESSION['aut'])) { print "пашет"; } else { print " не пашет"; } В ответ получаю "не пашет"
Такая ошибка бывает когда функции header(), setcookie() или session_start() используют где-нибудь в середине страницы. Все эти функции должны использоваться перед любым выводом html Видно ты код admin.php просто срезал из основного кода.У меня скрипт работает и выдает "пашет".
Я б даже уточнил - такая ошибка бывает когда все http-заголовки уже отосланы, и началась отсылка "тела". Впринципе можно использовать и в середине, и где хочешь - но только тогда буферизацию использовать необходимо... Но Zircool'у я думаю лучше пойти по пути наименьшего сопротивления, и более логичного кода
Ну вы даёте)) 2 Isis PHP: if(isset($_SESSION['aut'])) { //code } Если $_SESSION = ''; то это условие вернёт true, лучше использовать !empty() 2 Zircool В теге input нет параметра title. по сабжу я бы сделал так: В файл admin.php инклудится login.php. Там производится проверка. Если сессия существует и равна нужной, то пускает в админку. если нет, то выводит форму. Заходить можно как на файл admin.php так и на файл login.php. Вот код (проверил, всё работает) login.php PHP: <?php session_start(); $form = <<<FORM <form method="post"> <br/> Login:<input type="text" name="log" /> <br/> <br /> Password:<input type="password" name="passwd" /> <br/> <br /> <input type="submit" name="sub" value="Go!" /> <br/> <br/> </form> FORM; $password = '1'; $login = '1'; if(isset($_POST['sub'])) { $inputlogin = !empty($_POST['log']) ? trim($_POST['log']) : ''; $inputpassword = !empty($_POST['passwd']) ? trim($_POST['passwd']) : ''; if($inputpassword == $password && $inputlogin == $login) { $_SESSION['aut'] = md5($login.$password); header('location: admin.php'); } else { echo '<font color="Red">Неправильный пароль</font><br />'.$form; } } elseif($_SESSION['aut'] == md5($login.$password)) { define('ADMIN', true); } else { echo $form; } ?> admin.php PHP: <?php require_once('login.php'); if(!defined('ADMIN')) exit(); echo 'Админка'; ?> можно и упростить, но имхо так вполне нормально
2 .:EnoT:. зачем в сессию писать ещё значения потом их ещё раз перепроверять?! если логин и пароль совпал то создаётся просто сессия, а в admin.php проверяем уже на существование PHP: if(isset($_SESSION['aut'])) { //code }
Параметр title разрешён у всех тегов, кроме: html, head, title, meta, base, basefont, script и param.
Ога, после такого кода ты можешь прыгать от радости, потому что в твою админку может завалиться любой баклан)) В данному случае я могу прописать в id сессии всё что угодно и попаду в админку. Поэтому при использовании авторизаций на сессиях необходимо объявлять какой-либо идентификатор. Например можно так: PHP: <?php session_start(); $_SESSION['aut'] = session_id(); #admin.php if(!empty($_SESSION['aut']) && $_SESSION['aut'] != session_id()) exit(); ?> Пример не супер, но я думаю наглядно. В моём примере я в массив $_SESSION записал хеш логина и пароля (можно всё что угодно). Так же можно использовать имя сессии (session_name()). И запомни что проверка всех данных идущих от пользователя нужна обязательно, иначе твоему движку можно колотить гроб и звать оркестр)) добавлено: 2 astrologer http://htmlbook.ru/html/input.html у инпута нет параметра титл. или докажи обратное описав значение этого параметра для тега инпут)) 2 Doom123 При вызове функции session_start() (а она у нас создаётся в самом начале скрипта) в твои куки пишется ид сессии. Открываем оперу и редачим её. Тут ещё раз повторяется пример для vizard-06. Вписав в ид сесии любую херню, код: PHP: if(isset($_SESSION['aut'])) { //code } вернёт true и пустит в админку))
Смотри: PHP: <?php session_start(); $_SESSION['aut'] = session_id(); echo $_SESSION['aut']; ?> открывай страницу с этим кодом, покажется твой ид сессии. Теперь лезешь в оперу (ну или в мозилу с плагином работы с куки). Ищешь куку для своего домена с именем PHPSESSID жмякаешь изменить и меняешь на что хочешь...перезагружаешь страницу и видишь ту херню которую вписал)) Вот так же можно вписать туда всякую херь и выше упомянутый код пустит в админку так как по условию она существует. А что в ней за данные не проверяются)) ну и если ты прав (хотя не верится) то можно сделать так .. PHP: <?php session_start(); if(!isset($_SESSION['group']) || $_SESSION['group'] !== 'admin') { $_SESSION['group'] = 'user'; } авторизация.... $_SESSION['group'] = 'admin'; if($_SESSION['group'] === 'admin') { go... }
2 Doom123 Смотри: PHP: <?php session_start(); $_SESSION['aut'] = session_id(); echo $_SESSION['aut']; ?> открывай страницу с этим кодом, покажется твой ид сессии. Теперь лезешь в оперу (ну или в мозилу с плагином работы с куки). Ищешь куку для своего домена с именем PHPSESSID жмякаешь изменить и меняешь на что хочешь...перезагружаешь страницу и видишь ту херню которую вписал)) Вот так же можно вписать туда всякую херь и выше упомянутый код пустит в админку так как по условию она существует. А что в ней за данные не проверяются))
Но у него ведь $_SESSION['aut'] выставляется только тогда када успешно прошёл аунтефикацию!!! и фсё! и то что ты делаеш не поможет
попробуй написать скрипт PHP: session_start(); if($_GET['tes'] === '123) { $_SESSION['aut'] = 'admin'; } if (isset($_SESSION['aut'])) { go... } обойди это твоим методом... почему кавычка вырезалась?)
как ты применишь значение сессии извне если значение присвоено скриптом $_SESSION['aut'] = true; вместо true можно присвоить значение 1 например.... главное что сессия создалась, доступа к ней нет, и не кто кроме скрипта не сможет её создать, если будут именно такие значения, а в другом скрпте просто проверять создана ли сессия или нет login.php PHP: session_start(); $bla='1'; if($_GET['us'] == $bla) $_SESSION['aut'] = true; admin.php PHP: session_start(); if(isset($_SESSION['aut'])) { //прошёл } попробуй обойти создав сссию извне