Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2014, 18:20   #1
Shahin87
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 31
По умолчанию Авторизация на сайте

Здравствуйте, уже сколько дней пытаюсь написать авторизацию для сайта по урокам Михаила Русакова. К сожалению у меня ничего не получается
помогите мне пожалуйста.
Вот мой скрипт:
auth.php
PHP код:
<?php  
    
require_once "includes/include.php" ;
        
$login htmlspecialchars($_POST["login"]); 
    
$password htmlspecialchars($_POST["password"]); 
        
$password md5($password); 
        if (
checkUser($login$password)) { 
          
$_SESSION["login"] = $login
          
$_SESSION["password"] = $password
        } 
        else 
$_SESSION["error_auth"] = 1
        
header("Location: ".$_SERVER["HTTP_REFERER"]); 
        exit; 
?>
Основной файл:
PHP код:
<?php require_once "includes/lib/header.php" ?> 
<table width="1120" border="0" cellpadding="0" cellspacing="0">  
</tr> 
  <td width="80%" id="main" align="center"><h1><?php echo $Lang['auth']; ?></h1><hr /> 
<?php 
     
if (checkUser($_SESSION["login"], $_SESSION["password"])) require_once "user_panel.php"
         
//else require_once "index.php"; 
?> 
<?php 
     
if (checkUser($_SESSION["login"], $_SESSION["password"])) 
         { echo 
"Вы вошли как <b>".$_SESSION['login']."</b>";} 
?> 
<form name = "auth" action = "auth.php" method = "post"> 
        <table> 
                <tr> 
                        <td><?php echo $Lang['login'?></td> 
                        <td> 
                         <input type = "text" name = "login" /> 
                        </td> 
                    </tr> 
                     <td><?php echo $Lang['you-pass'?></td> 
                        <td> 
                             <input type = "password" name = "password" /> 
                            </td>         
                    </tr> 
                        <tr> 
                            <td colspan="2"> 
                             <input type = "submit" name = "button_auth" value = "<?php echo $Lang['in_ok']; ?>" /> 
                                </td> 
                        </tr> 
                </table> 
    </form> 
</tr> 
</table> 
<table width="1120"  border="0" cellpadding="0" cellspacing="0"> 
<tr>  
  <td colspan="0" align="center" id="footer"><?php include('includes/lib/footer.php');?></td> 
</tr> 
</table> 
</div>
И functions.php
PHP код:
function checkUser($login$password) { 
 global 
$mysqli
 
connectDB(); 
 
$result_set $mysqli->query("SELECT * FROM `users` WHERE `login`='$login' AND `password`='$password'"); 
 
closeDB(); 
 if (
$result_set->fetch_assoc()) return true
 else return 
false
   } 
Shahin87 вне форума Ответить с цитированием
Старый 26.03.2014, 18:48   #2
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Вообще было бы неплохо, если бы Вы описали что конкретно не работает.

PHP код:
$login htmlspecialchars($_POST["login"]);
$password htmlspecialchars($_POST["password"]); 
Это лучше заменить на:
PHP код:
$login filter_input(INPUT_POST'login'FILTER_SANITIZE_STRING)
$password filter_input(INPUT_POST'password'FILTER_SANITIZE_STRING); 
htmlspecialchars неактуален. И использовать md5 для шифрования пароля - тоже несерьёзно.

в function.php
PHP код:
$result_set $mysqli->query("SELECT * FROM `users` WHERE `login`='$login' AND `password`='$password'"); 
попробуйте всё же:
PHP код:
$result_set $mysqli->query("SELECT * FROM `users` WHERE `login`= '" $login "' AND `password`= '" .$password "';"); 
В целом - не экономьте на фигурных скобках, это может создать неожиданные последствия.
ATL вне форума Ответить с цитированием
Старый 26.03.2014, 19:03   #3
Shahin87
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 31
По умолчанию

Я просто порожен! Как я раньше не встречал этот форум. Большое вам спасибо! Сейчас заменю и скажу что не работает
Shahin87 вне форума Ответить с цитированием
Старый 26.03.2014, 19:10   #4
Shahin87
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 31
По умолчанию

Ошибка
Код:
Call to undefined function checkUser() in D:\OpenServer\domains\mysite\enter.php on line 6
вот 6 строка
Код:
<?php  
     if (checkUser($_SESSION["login"], $_SESSION["password"])) require_once "user.php";  
         else require_once "index.php";  
?>
Shahin87 вне форума Ответить с цитированием
Старый 26.03.2014, 19:11   #5
Shahin87
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 31
По умолчанию

Вот функция
Код:
function checkUser($login, $password) {  
 global $mysqli;  
 connectDB();  
 $result_set = $mysqli->query("SELECT * FROM `users` WHERE `login`='$login' AND `password`='$password'");  
 closeDB();  
 if ($result_set->fetch_assoc()) return true;  
 else return false;  
   }
Shahin87 вне форума Ответить с цитированием
Старый 26.03.2014, 19:29   #6
Shahin87
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 31
По умолчанию

Ой извиняюсь забыл подключить файл функций
Shahin87 вне форума Ответить с цитированием
Старый 26.03.2014, 19:30   #7
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Цитата:
Сообщение от Shahin87 Посмотреть сообщение
Ошибка
Код:
Call to undefined function checkUser() in D:\OpenServer\domains\mysite\enter.php on line 6
вот 6 строка
Код:
<?php  
     if (checkUser($_SESSION["login"], $_SESSION["password"])) require_once "user.php";  
         else require_once "index.php";  
?>
функция checkUser(), судя по всему, лежит в functions.php, верно? Вы этот файл подключили к проекту? По приведённому коду нигде не видно, что он подключен.
ATL вне форума Ответить с цитированием
Старый 26.03.2014, 19:52   #8
Shahin87
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 31
По умолчанию

Выдало ошибку
Код:
Parse error: syntax error, unexpected '$password' (T_VARIABLE) in D:\OpenServer\domains\mysite\auth.php on line 4
строка 4
Код:
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
Shahin87 вне форума Ответить с цитированием
Старый 26.03.2014, 19:55   #9
Shahin87
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 31
По умолчанию

И как md5 надежней сделать?
Shahin87 вне форума Ответить с цитированием
Старый 26.03.2014, 19:58   #10
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Цитата:
$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING)
Поставьте точку с запятой.

Цитата:
И как md5 надежней сделать?
md5 никак. Надо использовать другой алгоритм шифрования. Например bcrypt
ATL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте vovken1997 Общие вопросы Delphi 12 22.08.2013 21:39
Авторизация на сайте sanco Работа с сетью в Delphi 3 17.03.2013 21:40
Авторизация на сайте ZvEr_HaCkEr Работа с сетью в Delphi 0 23.06.2012 05:52
Авторизация на сайте. Pliks Общие вопросы по Java, Java SE, Kotlin 5 08.06.2010 13:51