Создать форум бесплатно: ixbb.ru :: Календарь на Май 2024 года: calendar2008.ru/2024/may/

  Reply to this topicStart new topicStart Poll

Регистрация/авторизация

, Помогите с регистрацией пользователей
phpuser
Отправлено: Aug 22 2009, 04:40 PM
Quote Post


  Солдат
*

Группа: unior
Сообщений: 1
Пользователь №: 2765
Регистрация:
22-August 09



Здравствуйте, опыта у меня мало - прошу больно не пинать. Возникла необходимость внедрить Регистрацию/авторизацию. на сайт. Нашел подходящий скрипт, но возникли проблемы с его внедрением. Как впихнуть его на индексную и другие странички, соответственно запретив просмотр неавторизованным пользователям?
вот код скрипта:
register.php
CODE
<?  
mysql_connect("localhost", "user", "12345"); 
mysql_select_db("users"); 
if(isset($_POST['submit'])) 

    $err = array();  
    if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login'])) 
    { 
        $err[] = & #34;Логин может состоять только из букв английског
о алфавита и цифр"; 
    } 
     
    if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30) 
    { 
        $err[] = "Логин должен быть не меньше 3-х символов и не больше 30"; 
    } 
     
    
    $query = mysql_query("SELECT COUNT(user_id) FROM users WHERE user_login='".mysql_real_escape_string($_POST['login'])."'"); 
    if(mysql_result($query, 0) > 0) 
    { 
        $err[] = & #34;Пользователь с таким логином уже существует в 
базе данных"; 
    } 
     
    
    if(count($err) == 0) 
    { 
         
        $login = $_POST['login']; 
        $password = md5(md5(trim($_POST['password']))); 
         
        mysql_query("INSERT INTO users SET user_login='".$login."', user_password='".$password."'"); 
        header("Location: login.php"); exit(); 
    } 
    else 
    { 
        print "<b>При регистрации произошли следующие ошибки:</b><br>"; 
        foreach($err AS $error) 
        { 
            print $error."<br>"; 
        } 
    } 

?> 
<form method="POST"> 
Логин <input name="login" type="text"><br> 
Пароль <input name="password" type="password"><br> 
<input name="submit" type="submit" value="Заре

login.php
CODE
mysql_select_db("users"); 

if(isset($_POST['submit'])) 

    $query = mysql_query(& #34;SELECT user_id, user_password FROM users WHERE
 user_login='".mysql_real_escape_string($_POST['login'])."' LIMIT 1"); 
    $data = mysql_fetch_assoc($query); 
     
    if($data['user_password'] === md5(md5($_POST['password']))) 
    {  
        $hash = md5(generateCode(10)); 
             
        if(!@$_POST['not_attach_ip']) 
        { 
            
            $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')"; 
        } 
         
         
        mysql_query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'"); 
         
        
        setcookie("id", $data['user_id'], time()+60*60*24*30); 
        setcookie("hash", $hash, time()+60*60*24*30); 
         
        
        header("Location: check.php"); exit(); 
    } 
    else 
    { 
        print "Вы ввели неправильный логин/пароль"; 
    } 

?> 
<form method="POST"> 
Логин <input name="login" type="text"><br> 
Пароль <input name="password" type="password"><br> 
Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br> 
<input name="submit" type="submit" value="Войти"> 
</form> 
<?Location: check.php"); exit(); 
    } 
    else 
    { 
        print "Вы ввели неправильный логин/пароль"; 
    } 

?> 
<form method="POST"> 
Логин <input name="login" type="text"><br> 
Пароль <input name="password" type="password"><br> 
Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br> 
<input name="submit" type="submit" value="Войти"> 

check.php
CODE
<? 
mysql_connect("localhost", "user", "12345"); 
mysql_select_db("users"); 

if (isset($_COOKIE['id']) and isset($_COOKIE['hash'])) 
{    
    $query = mysql_query("SELECT *,INET_NTOA(user_ip) FROM users WHERE user_id = '".intval($_COOKIE['id'])."' LIMIT 1"); 
    $userdata = mysql_fetch_assoc($query); 

    if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id'])
 or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR'])  and ($userdata['user_ip'] !== "0"))) 
    { 
        setcookie("id", "", time() - 3600*24*30*12, "/"); 
        setcookie("hash", "", time() - 3600*24*30*12, "/"); 
        print "Хм, что-то не получилось"; 
    } 
    else 
    { 
        print "Привет, ".$userdata['user_login'].". Всё работает!"; 
    } 

else 

    print "Включите куки"; 


p.s. Хотелось бы ещё реализовать возможность пользователю редактировать свой профиль. Да, и напоминание пароля на email.
Заранее благодарен за любую помощь.
PMEmail Poster
Top
GotLiuM
Отправлено: Sep 13 2009, 10:32 AM
Quote Post


  Капитан
*

Группа: Members
Сообщений: 72
Пользователь №: 1175
Регистрация:
1-October 07



Скажи, зачем тебе готовое? Не легче по уму реализовать все руками?! Или как делают многие поставить ту же самую джумлу.

А так все просто.
Ставишь в index.php
<?
include 'check.php';
?>

после допишешь строчку где написано ""Привет, ".$userdata['user_login'].". Всё работает!"; "

строчку define('USER_IS_AUTH', true);

далее где нужно проверить статью на наличие авторизации строчку

<?if( defined('USER_IS_AUTH') && USER_IS_AUTH === true ){?>
показываем скыртый текст
<?} else { ?>
Пожалуйста авторизируйтесь!

<?
include 'login.php';
}?>

Удачи в начинаниях! И желательно не задавать таких вопросов! Так как на них никто не ответит!


--------------------
Металл, Рок сервер тяжёлой музыки
MetallZone
user posted image
Linux - forever!
PMEmail PosterUsers WebsiteICQMSN
Top

Topic Options Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0265 ]   [ 10 queries used ]   [ GZIP выключен ]