HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 18.05.2008, 03:06
vizard-06
Познающий
Регистрация: 06.12.2006
Сообщений: 57
С нами: 10225190

Репутация: 31
По умолчанию

ёпт ну если б он знал как делать он бы не спрашивал......вобще как ему нужно сделать он разберётся думаю дальше, я ради примера выложил
 
Ответить с цитированием

  #2  
Старый 18.05.2008, 03:07
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,315
С нами: 10248806

Репутация: 2371


По умолчанию

Без "епт" , ога?
Я предложил лучший пример, насчет вывода ошибки он ничего не сказал
 
Ответить с цитированием

  #3  
Старый 18.05.2008, 03:52
Zircool
Участник форума
Регистрация: 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 
'&nbsp; &nbsp; &nbsp; 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 
'&nbsp; &nbsp; &nbsp; <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 
" не пашет";
    } 
В ответ получаю "не пашет"
 
Ответить с цитированием

  #4  
Старый 18.05.2008, 09:52
!{ra!{e/\/
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 просто срезал из основного кода.У меня скрипт работает и выдает "пашет".
 
Ответить с цитированием

  #5  
Старый 18.05.2008, 10:15
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
С нами: 10143686

Репутация: 526
По умолчанию

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

  #6  
Старый 18.05.2008, 14:22
.:EnoT:.
Постоянный
Регистрация: 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/>
&nbsp; &nbsp; &nbsp; Login:<input type="text" name="log" />
<br/>
<br />
Password:<input type="password"  name="passwd" />
<br/>
<br />
&nbsp; &nbsp; &nbsp; <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 
'Админка';
?>
можно и упростить, но имхо так вполне нормально
 
Ответить с цитированием

  #7  
Старый 19.05.2008, 02:53
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
С нами: 9840758

Репутация: 808


По умолчанию

Цитата:
Сообщение от .:EnoT:.  
2 Zircool В теге input нет параметра title.
Параметр title разрешён у всех тегов, кроме: html, head, title, meta, base, basefont, script и param.
 
Ответить с цитированием

  #8  
Старый 19.05.2008, 02:27
vizard-06
Познающий
Регистрация: 06.12.2006
Сообщений: 57
С нами: 10225190

Репутация: 31
По умолчанию

2 .:EnoT:. зачем в сессию писать ещё значения потом их ещё раз перепроверять?! если логин и пароль совпал то создаётся просто сессия, а в admin.php проверяем уже на существование

PHP код:
 if(isset($_SESSION['aut'])) 

//code 

 
Ответить с цитированием

  #9  
Старый 19.05.2008, 03:00
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 850
С нами: 9975266

Репутация: 1916


Talking

Цитата:
Сообщение от 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..
 
Ответить с цитированием

  #10  
Старый 19.05.2008, 02:53
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
С нами: 10262314

Репутация: 668


По умолчанию

.:EnoT:

Глупости) ведь сессию ты создаёш а не дядя=) поэтому пустого значения быть не могёт)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.