[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: авторизация
Денис777
Пытался написать скрипт регистрации/авторизации по урокам с сайта irbis-team.com , нечего невышло т.к не понял МВЦ , есть скрипт Попова , знаю что его скрипты старые и ненадежные и много ошибок , помогите сделать его скрипт нлрмальным , нужно на авторизаию добавить mb5 , и автологин а то меня не запоминает юзеров


вот скрипт :


<?php

session_start();

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

if (empty($login) or empty($password))
{
include_once("diz.php");
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}

$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);


$login = trim($login);
$password = trim($password);



include ("bd.php");



$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db);


$myrow = mysql_fetch_array($result);
if (empty($myrow['password']))
{

include_once("diz.php"); exit ("Извините, введённый вами login или пароль неверный.") ;
}
else {

if ($myrow['password']==$password) {



$_SESSION['password']=$myrow['password'];
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];

echo "<html><head><meta http-equiv='Refresh' content='0; URL=index2.php'></head></html>";
}
else {

include_once("diz.php");
exit ("Извините, введённый вами login или пароль неверный.");
}
}

?>


Заранее спасибо!



Спустя 28 минут, 28 секунд (6.07.2012 - 17:47) Денис777 написал(а):
что не кто не поможет привести его в порядок ? unsure.gif

Спустя 9 минут, 2 секунды (6.07.2012 - 17:56) inpost написал(а):

 ! 

М
Оформляй код в php теги... Уже 15 дней на форуме и 180 сообщений, пора уже самому начать это делать.
Отредактируй свою тему.
inpost

Спустя 5 минут, 59 секунд (6.07.2012 - 18:02) Денис777 написал(а):
inpost объясни как ?

Спустя 2 часа, 8 минут, 1 секунда (6.07.2012 - 20:10) DySprozin написал(а):
Денис777
шеф, как-то так (;

[php]
<?php
а тут мега-код...
...
...
[/php]

а вообще, вот:

user posted image

Спустя 5 минут, 40 секунд (6.07.2012 - 20:16) Денис777 написал(а):


<?php

session_start();

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

if (empty($login) or empty($password))
{
include_once("diz.php");
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}

$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);


$login = trim($login);
$password = trim($password);



include ("bd.php");



$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db);


$myrow = mysql_fetch_array($result);
if (empty($myrow['password']))
{

include_once("diz.php"); exit ("Извините, введённый вами login или пароль неверный.") ;
}
else {

if ($myrow['password']==$password) {



$_SESSION['password']=$myrow['password'];
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];

echo "<html><head><meta http-equiv='Refresh' content='0; URL=index2.php'></head></html>";
}
else {

include_once("diz.php");
exit ("Извините, введённый вами login или пароль неверный.");
}
}

?>

Спустя 40 секунд (6.07.2012 - 20:16) Денис777 написал(а):
DySprozin спс получилось , все постоянно говорят что в php теги код сделать , а сказать не кто не может ><

Спустя 1 час, 53 минуты, 24 секунды (6.07.2012 - 22:10) DarkLynx написал(а):
Держи..

<?php
session_start();

$login = (isset($_COOKIE['cLogin'])) ? $_COOKIE['cLogin'] : null;
$password = (isset($_COOKIE['cPass'])) ? $_COOKIE['cPass'] : null;

if ($login == null || $password == null)
{
$login = (isset($_POST['login'])) ? $_POST['login'] : null;
$password = (isset($_POST['password'])) ? $_POST['password'] : null;
}

if ($login == null || $password == null)
{
include_once('diz.php');
exit('Вы ввели не всю информацию, вернитесь назад и заполните все поля!');
}

$remember = (isset($_POST['remember'])) ? 1 : 0;

$passFrom = 1;

if (isset($_COOKIE['cPass']))
$passFrom = 2;

$login = trim(strip_tags($login));
$password = trim(strip_tags($password));

$password = ($passFrom == 2) ? $password : md5($password);

include_once ("bd.php");

$query = "SELECT * FROM users WHERE `login` = '%s'";
$query = sprintf($query, mysql_real_escape_string($login));
$query = mysql_query($query, $db);
$result = mysql_fetch_assoc($query);

if (!$result)
{
include_once('diz.php');
exit("Извините, введённый вами login или пароль неверный.");
}

if ($result['password'] !== $password)
{
include_once('diz.php');
exit("Извините, введённый вами login или пароль неверный.");
}

$_SESSION['login'] = $login;
$_SESSION['id'] = $result['id'];

if ($remember)
{
setcookie('cLogin', $login, time()+24*60*60);
setcookie('cPass', $result['password'], time()+24*60*60);
}

header('Location: index2.php');

?>

Спустя 1 час, 16 минут, 29 секунд (6.07.2012 - 23:26) Денис777 написал(а):
DarkLynx все таже ошибка


$query = sprintf($query, mysql_real_escape_string($login));
$query = mysql_query($query, $db);
$result = mysql_fetch_assoc($query);


ошибки в этих трех строках

и как только я не пробывал этот скрипт , всегда когда поставляешь mb5 то регистрация проходит успешно , а вот при входе пишет неверный логин или пароль :(

Спустя 47 минут, 13 секунд (7.07.2012 - 00:13) Денис777 написал(а):
DarkLynx


извеняюсь , все работает , подключение к БД убрал , хотел по другому записать и забыл написать , спс все работает отлично smile.gif

Спустя 19 минут, 49 секунд (7.07.2012 - 00:33) Денис777 написал(а):
DarkLynx Хм... сам скрипт работает , но все осталось так же , если вводить ссылку то выкидывает на index.php , а не на index2.php

Спустя 26 минут, 1 секунда (7.07.2012 - 00:59) rooor написал(а):
какую ссылку куда вводить и что должно происходить?

Спустя 3 часа, 37 минут, 56 секунд (7.07.2012 - 04:37) inpost написал(а):
Денис777
Большинство интуитивно догадываются, ну а если нет, то никто не запрещает спросить. Ведь на форумы для вопросов и существуют.
Для авторизации делается так:

define('SALT','DWIADNWIADNWAD');
$res = mysql_query("
SELECT *
FROM `users`
WHERE `login` = '"
.mysql_real_escape_string($_POST['login'])."'
AND `pass` = '"
.md5($_POST['login'].SALT)."'
"
) or die(mysql_error());


И проверять через: mysql_num_rows($res);
Всё это есть на ирбисе, а если ты не разобрался, то советую тебе заново всё пройти. Если какая-то из функций непонятна, сверяться и читать о ней тут: php.net

И ещё, добавить тут md5 - тебе надо и при регистрации тоже его добавлять.

Спустя 3 часа, 50 минут, 24 секунды (7.07.2012 - 08:28) Денис777 написал(а):
inpost При регистрации добавил сразу , на ирбисе перечитывал не один раз , и все не могу понять МВЦ sad.gif

Спустя 1 час, 20 минут, 38 секунд (7.07.2012 - 09:48) Денис777 написал(а):
inpost из за того что не понял МВЦ , дальше вообще половино не понятно

Спустя 16 минут, 53 секунды (7.07.2012 - 10:05) Денис777 написал(а):
rooor файл индекс это у меня шаблон с меню , ( ссылки на регистрацию/авторизацию и прочее ) когда юзер проходит авторизацию то его перенапровляет на index2.php, а вот если закрыть окно браузера или сам браузер и заново ввести ссылку то выкидывает на на index.php , а мне нужно чтоб так было только с не зарегестрироваными пользователями было , а кто прошел авторизацию ( т.е человек сидел на сайте вылючил компьютер пошел по делам , пришел включил ввел ссылку и ему сразу ввыводился файл index2.php )

возможно я что то не так объясняю , может выложить на хостинг все и дать ссылку ?

Спустя 36 минут, 26 секунд (7.07.2012 - 10:42) DarkLynx написал(а):
У вас пароли в базе данных у пользователей записаны в md5?

Спустя 2 минуты, 53 секунды (7.07.2012 - 10:44) Денис777 написал(а):
Что не чего не получаеться :unsure:

вот что у меня есть :

index.php

<?php
session_start();
include './skins/tpl/index.tpl';
include './skins/tpl/games.tpl';
include './skins/tpl/menu.tpl';
include './skins/tpl/bloc.tpl';
?>


скрипт авторизации

<?php
session_start();

$login = (isset($_COOKIE['cLogin'])) ? $_COOKIE['cLogin'] : null;
$password = (isset($_COOKIE['cPass'])) ? $_COOKIE['cPass'] : null;

if ($login == null || $password == null)
{
$login = (isset($_POST['login'])) ? $_POST['login'] : null;
$password = (isset($_POST['password'])) ? $_POST['password'] : null;
}

if ($login == null || $password == null)
{

exit('Вы ввели не всю информацию, вернитесь назад и заполните все поля!');
}

$remember = (isset($_POST['remember'])) ? 1 : 0;

$passFrom = 1;

if (isset($_COOKIE['cPass']))
$passFrom = 2;

$login = trim(strip_tags($login));
$password = trim(strip_tags($password));

$password = ($passFrom == 2) ? $password : md5($password);

include_once './bd.php';

$query = "SELECT * FROM users WHERE `login` = '%s'";
$query = sprintf($query, mysql_real_escape_string($login));
$query = mysql_query($query, $db);
$result = mysql_fetch_assoc($query);

if (!$result)
{

exit("Извините, введённый вами login или пароль неверный.");
}

if ($result['password'] !== $password)
{

exit("Извините, введённый вами login или пароль неверный.");
}

$_SESSION['login'] = $login;
$_SESSION['id'] = $result['id'];

if ($remember)
{
setcookie('cLogin', $login, time()+24*60*60);
setcookie('cPass', $result['password'], time()+24*60*60);
}

header('Location: index2.php');

?>


index2.php


<?php
session_start();
include './skins/tpl/index.tpl';
echo '<div id="h7">';
include './skins/tpl/login.php';
include './skins/tpl/games2.tpl';
include './skins/tpl/menu_index2.tpl';
include './skins/tpl/bloc.tpl';
?>


Мне нужно следующее что я не могу реализовать - Заходит новоый пользователь проходит регистрацию , потом авторизацию и его перенапровляет на index2.php , ну если ввести ссылку заново 7keep.ru , то происходит следующее 7keep.ru/index.php/ , а мне нужно чтоб для зарегестрированых пользователей было так 7keep.ru/index2.php/ , а для не зарегестрированых ,было так 7keep.ru/index.php/

вот не могу этого добиться уже долгое время . Кто может помогите реализовать идею. :unsure:

Спустя 33 секунды (7.07.2012 - 10:45) Денис777 написал(а):
DarkLynx да я на скрипт регистрации поставил mb5

Спустя 2 минуты, 42 секунды (7.07.2012 - 10:48) Денис777 написал(а):
DarkLynx то что вы поставили куки все работает отлично , и если добавить в закладки ссылку то все работает отлично , но мне нужно маленько по другому

Спустя 25 секунд (7.07.2012 - 10:48) DarkLynx написал(а):
Так, вы действительно выложили всё что есть в файлах index.php ?
А где форма авторизации?

Я понял. Вам нужна переадресация при заходе на index.php.

Спустя 1 минута, 51 секунда (7.07.2012 - 10:50) Денис777 написал(а):
Цитата (DarkLynx @ 7.07.2012 - 07:48)
А где форма авторизации?

она находиться в другом файле , index это шаблон гавной странице с ссылками

Спустя 2 минуты, 22 секунды (7.07.2012 - 10:52) Денис777 написал(а):
Цитата (DarkLynx @ 7.07.2012 - 07:48)


Я понял. Вам нужна переадресация при заходе на index.php.

да , переадресация на index2.php, толко мне нужно чтоб переадресация проходила для тех юзеров которые успещно вошли на сайт , а не для зарегестрированых пользователей все так же как и есть выкидывала на индекс

Спустя 5 минут, 57 секунд (7.07.2012 - 10:58) DarkLynx написал(а):
Вот функция и её вызов.

session_start();

function CheckAuth()
{
if (isset($_SESSION['id']) && !empty($_SESSION['id']))
return true;

$login = (isset($_COOKIE['cLogin'])) ? $_COOKIE['cLogin'] : null;
$password = (isset($_COOKIE['cPass'])) ? $_COOKIE['cPass'] : null;

if ($login == null || $password == null)
return false;


include_once ("bd.php");

$query = "SELECT * FROM users WHERE `login` = '%s'";
$query = sprintf($query, mysql_real_escape_string($login));
$query = mysql_query($query, $db);
$result = mysql_fetch_assoc($query);

if (!$result)
return false;

if ($result['password'] !== $password)
return false;

$_SESSION['login'] = $login;
$_SESSION['id'] = $result['id'];

return true;
}

$auth = CheckAuth();

if ($auth)
header('Location: index2.php');


Вставьте это во входной файл.

Спустя 4 минуты, 36 секунд (7.07.2012 - 11:03) Денис777 написал(а):
DarkLynx оболдеть , работает , только наверное надо вставить не во входной файл а в индекс

Спустя 1 минута, 48 секунд (7.07.2012 - 11:05) Денис777 написал(а):
DarkLynx все втавил в индекс и работает как мне и было нужно , два месяца добивался этого огромное вам спасибо

Спустя 3 минуты, 30 секунд (7.07.2012 - 11:08) DarkLynx написал(а):
Цитата (Денис777 @ 7.07.2012 - 08:05)
DarkLynx все втавил в индекс и работает как мне и было нужно , два месяца добивался этого  огромное вам спасибо

index и есть входной файл wink.gif

Вы же заходите по адресу http://site.com/index.php

Спустя 3 минуты, 26 секунд (7.07.2012 - 11:12) Денис777 написал(а):
DarkLynx конечно все работает , но появилась новая проблемка, когда нажимаю на выход с сайта не выходит все продолжает работать

Спустя 1 минута, 35 секунд (7.07.2012 - 11:13) DarkLynx написал(а):
Цитата (Денис777 @ 7.07.2012 - 08:12)
DarkLynx конечно все работает , но появилась новая проблемка,  когда нажимаю на выход с сайта не выходит все продолжает работать

Это потому что у Вас logout убирает только сессионные данные.
Нужно добавить туда

setcookie('cLogin', '');
setcookie('cPass', '');


Это убьет куки и пользователь не будет считаться "запомненным"

Спустя 3 минуты, 15 секунд (7.07.2012 - 11:16) Денис777 написал(а):
вот файл exit.php


<?php
session_start();
if (empty($_SESSION['login']) or empty($_SESSION['password']))
{

exit ("Доступ на эту страницу разрешен только зарегистрированным пользователям.<br><a href='index.php'>Главная страница</a>");
}

unset($_SESSION['password']);
unset($_SESSION['login']);
unset($_SESSION['id']);
exit("<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>");

?>



и нету logout :unsure:

Спустя 1 минута, 42 секунды (7.07.2012 - 11:18) Денис777 написал(а):
DarkLynx а все разобрался




if (empty($_SESSION['login']) or empty($_SESSION['password']))
{

exit ("Доступ на эту страницу разрешен только зарегистрированным пользователям.<br><a href='index.php'>Главная страница</a>");
}




вот это лишнее :)

Спустя 33 секунды (7.07.2012 - 11:19) DarkLynx написал(а):
Цитата (Денис777 @ 7.07.2012 - 08:16)
вот файл exit.php


<?php
          session_start();
          if    (empty($_SESSION['login']) or empty($_SESSION['password']))
          {
       
          exit ("Доступ на эту    страницу разрешен только зарегистрированным пользователям.<br><a    href='index.php'>Главная    страница</a>");
          }
         
unset($_SESSION['password']);
            unset($_SESSION['login']);
            unset($_SESSION['id']);
        exit("<html><head><meta    http-equiv='Refresh' content='0;    URL=index.php'></head></html>");
           
            ?>



и нету logout  :unsure:

Logout - это сброс авторизации.. Просто слово которым эти действия обозначаются. Если бы была функция сброса авторизации, то в 99% случаях она содержала бы logout.

По существу. После вот этих строк, добавьте то что я написал

unset($_SESSION['password']);
unset($_SESSION['login']);
unset($_SESSION['id']);

Спустя 1 минута, 45 секунд (7.07.2012 - 11:20) Денис777 написал(а):

DarkLynx я убрал




if (empty($_SESSION['login']) or empty($_SESSION['password']))
{

exit ("Доступ на эту страницу разрешен только зарегистрированным пользователям.<br><a href='index.php'>Главная страница</a>");
}




и все работает , или все таки сделал это зря и все вернуть обратно и добавить то что вы написали ?

Спустя 6 минут, 16 секунд (7.07.2012 - 11:27) DarkLynx написал(а):
Суть проблемы вот в чем.
У вас идет проверка на существование в сессии логина и пароля. Я убрал хранение пароля в сессии тк это полный бред. Зачем его там хранить никому не понятно.. Может только Попову :)
Если вы хотите оставить запрет на доступ к этой странице для неавторизованных юзеров, то просто достаточно добавить вот такой if

if (!isset($_SESSION['id']))


А добавить уничтожение куков все таки нужно. Т.к. если бы Вы вошли с "запомнить" то тогда Ваш скрипт выхода бы не сработал.

Да кстати, не забудьте добавить в форму авторизации

<input type="radio" name="remember"> Запомнить меня


Ну или вместо радио чекбокс, как душе угодно.

Спустя 4 минуты, 5 секунд (7.07.2012 - 11:31) Денис777 написал(а):
DarkLynx



if (!isset($_SESSION['id']))



добавить куда в index2.php или в exit.php ?

а зачем добовлять галочку запоминание если он итак отлично запоминает пользователя ?

Спустя 5 минут, 5 секунд (7.07.2012 - 11:36) DarkLynx написал(а):
Цитата (Денис777 @ 7.07.2012 - 08:31)
DarkLynx



if (!isset($_SESSION['id']))



добавить куда в index2.php или в exit.php ?

а зачем добовлять галочку запоминание если он итак отлично запоминает пользователя ?

В exit.php вместо той проверки которую Вы скинули.

Затем что в той авторизации которую я написал есть проверка именно на $_POST['remember']..

Насчет запоминает... Он у вас запоминает пользователя в сессию, а это до закрытия браузера.. Если же передать remember, как я написал выше, то он запомнит пользователя в куках на неделю. И будет автологин, как Вы и просили в первом посте. А без этого ни о каком автологине и речи не идет..

Точнее можно переделать так, что бы он всегда запоминал в куки, но это на мой взгляд не правильно, не давайте человеку выбора. Поэтому проще просто вставить 1 строчку в форму авторизации и всё будет работать как надо, да еще и пользователю выбор предоставили..

Спустя 1 минута, 31 секунда (7.07.2012 - 11:37) DarkLynx написал(а):
Поправочка, в том input что я скинул, отсутсвует value="1" думаю сами добавите =)

Спустя 16 минут, 52 секунды (7.07.2012 - 11:54) Денис777 написал(а):
DarkLynx Дествительно , что то я и не подумал что при закрытии браузера все пропадет , вставил инпут на входной файл закрыл браузер перепроверил все заработало , еще раз спасибо smile.gif Знаю что есть такая функция как изменение пароля , если юзер захотел сменить пароль , каким образом она делаеться ?

Спустя 3 минуты, 14 секунд (7.07.2012 - 11:57) DarkLynx написал(а):
В общих словах..
Получаем логин и старый пароль и новый пароль. Проверяем, если логин и старый пароль от этого пользователя, меняем на новый. Всё.

забыл. Если у пользователя были установлены куки, перезаписываем в куки новый пароль.

Спустя 3 минуты, 31 секунда (7.07.2012 - 12:01) Денис777 написал(а):
DarkLynx спс smile.gif попробую реализовать smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.