
18.05.2008, 03:06
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
С нами:
10225190
Репутация:
31
|
|
ёпт ну если б он знал как делать он бы не спрашивал......вобще как ему нужно сделать он разберётся думаю дальше, я ради примера выложил
|
|
|

18.05.2008, 03:07
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,315
С нами:
10248806
Репутация:
2371
|
|
Без "епт" , ога?
Я предложил лучший пример, насчет вывода ошибки он ничего не сказал
|
|
|

18.05.2008, 03:52
|
|
Участник форума
Регистрация: 01.03.2006
Сообщений: 169
С нами:
10628635
Репутация:
78
|
|
Не работает авторизация... Вводишь нужный логин и пароль а в ответ получаешь страницу которая должна выводиться при прямом доступе к странице... и вылетает ошибка
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at F:\home\test1.ru\www\admins.php:9) in F:\home\test1.ru\www\admins.php on line 12
В чем может быть проблема?
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 " не пашет";
}
В ответ получаю "не пашет"
|
|
|

18.05.2008, 09:52
|
|
Banned
Регистрация: 27.08.2007
Сообщений: 159
С нами:
9845666
Репутация:
171
|
|
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at F:\home\test1.ru\www\admins.php:9) in F:\home\test1.ru\www\admins.php on line 12
Такая ошибка бывает когда функции header(), setcookie() или session_start() используют где-нибудь в середине страницы. Все эти функции должны использоваться перед любым выводом html
Видно ты код admin.php просто срезал из основного кода.У меня скрипт работает и выдает "пашет".
|
|
|

18.05.2008, 10:15
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
С нами:
10143686
Репутация:
526
|
|
Сообщение от !{ra!{e/\/
Такая ошибка бывает когда функции header(), setcookie() или session_start() используют где-нибудь в середине страницы. Все эти функции должны использоваться перед любым выводом html
Я б даже уточнил - такая ошибка бывает когда все http-заголовки уже отосланы, и началась отсылка "тела".
Впринципе можно использовать и в середине, и где хочешь - но только тогда буферизацию использовать необходимо...
Но Zircool'у я думаю лучше пойти по пути наименьшего сопротивления, и более логичного кода 
|
|
|

18.05.2008, 14:22
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 850
С нами:
9975266
Репутация:
1916
|
|
Ну вы даёте))
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 'Админка';
?>
можно и упростить, но имхо так вполне нормально
|
|
|

19.05.2008, 02:53
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
С нами:
9840758
Репутация:
808
|
|
Сообщение от .:EnoT:.
2 Zircool В теге input нет параметра title.
Параметр title разрешён у всех тегов, кроме: html, head, title, meta, base, basefont, script и param.
|
|
|

19.05.2008, 02:27
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
С нами:
10225190
Репутация:
31
|
|
2 .:EnoT:. зачем в сессию писать ещё значения потом их ещё раз перепроверять?! если логин и пароль совпал то создаётся просто сессия, а в admin.php проверяем уже на существование
PHP код:
if(isset($_SESSION['aut']))
{
//code
}
|
|
|

19.05.2008, 03:00
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 850
С нами:
9975266
Репутация:
1916
|
|
Сообщение от vizard-06
2 .:EnoT:. зачем в сессию писать ещё значения потом их ещё раз перепроверять?! если логин и пароль совпал то создаётся просто сессия, а в admin.php проверяем уже на существование
PHP код:
if(isset($_SESSION['aut']))
{
//code
}
Ога, после такого кода ты можешь прыгать от радости, потому что в твою админку может завалиться любой баклан))
В данному случае я могу прописать в 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
Сообщение от Doom123
Глупости) ведь сессию ты создаёш а не дядя=) поэтому пустого значения быть не могёт)
При вызове функции session_start() (а она у нас создаётся в самом начале скрипта) в твои куки пишется ид сессии. Открываем оперу и редачим её.
Тут ещё раз повторяется пример для vizard-06. Вписав в ид сесии любую херню, код:
PHP код:
if(isset($_SESSION['aut']))
{
//code
}
вернёт true и пустит в админку))
Последний раз редактировалось .:EnoT:.; 19.05.2008 в 03:07..
|
|
|

19.05.2008, 02:53
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
С нами:
10262314
Репутация:
668
|
|
.:EnoT:
Глупости) ведь сессию ты создаёш а не дядя=) поэтому пустого значения быть не могёт)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|