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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2013, 17:54   #1
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию Не передаются данные POST

Уже все испробовал: делал в одном файле, ставил условия...
Не передает на 2 страницу данные. Ни логин, ни пароль.
Либо я полнейший дурак и не заметил простую ошибку
Либо тут несусветная ошибка, которая возникает по своему хотению...
PHP код:
        <?php
            
if($_SESSION['login'] == array('user:password:0') or empty($_SESSION['login'])){
                echo
'
                    <div class="logindiv">
                        <center>Войти в СУС<br></center>
                        <form action="php/checking.php" method="post" name="formLogIn">
                            Имя<br>
                            <input type="text" title="Имя" name="user" size="25"><br>
                            Пароль<br>
                            <input type="password" title="Пароль" name="password" size="25"><br>
                            <center><input type="submit" title="Войти" name="check" value="Log In"></center>
                        </form>
                    </div>
                '
;
            }
        
?>
То, где отправляется все
З.ы. извините за 2 пробела в начале, просто разметка в странице такая.

PHP код:
<?php
    $query 
mysql_query('SELECT * FROM users');
    
$_POST['user'] = $user;
    
$_POST['password'] = $pass;
    while(
$data mysql_fetch_array($query)){
        if(
$user == $data['user']){
            if(
$pass == $data['password']){
                echo
'Вы успешно зашли на сайт.<br>';
                
$_SESSION['login'] = array(''.$user.':'.$pass.':'.$data["id"].'');
                
$_SESSION['adminuser'] = array(''.$user.':'.$pass.':'.$data["id"].'');
            }
            else {
                
$_SESSION['login'] = array('user:password:0');
                echo
'Ошибка. Проверьте правильность пароля.<br>';
            }
        }
        else {
            
$_SESSION['login'] = array('user:password:0');
            echo
'Ошибка. Проверьте правильность имени и пароля.<br>';
        }
    }
    echo
'<a href="../cms.php">Нажмите сюда, если ваш браузер не поддерживает автоматическое перенаправление или вам надоело ждать.</a><br>';
?>
Принимающая сторона.
Masafi вне форума Ответить с цитированием
Старый 12.07.2013, 18:55   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Это бред:
Цитата:
Сообщение от Masafi Посмотреть сообщение
PHP код:
$_POST['user'] = $user
$_POST['password'] = $pass
Должно быть наоборот:
PHP код:
$user $_POST['user']; 
$pass $_POST['password']; 
Нет никакого смысла выбирать все записи из таблицы users – выбирай только данные для переданного из формы логина.
Хранить пароль в БД в чистом виде – плохая идея, используй шифрование или шифрование+salt для защиты паролей.

P.S.:
Зачем сохранять одинаковые данные в сессию дважды?:
Цитата:
Сообщение от Masafi Посмотреть сообщение
PHP код:
$_SESSION['login'] = array(''.$user.':'.$pass.':'.$data["id"].'');
$_SESSION['adminuser'] = array(''.$user.':'.$pass.':'.$data["id"].''); 

Последний раз редактировалось Andkorol; 12.07.2013 в 19:01. Причина: PS
Andkorol вне форума Ответить с цитированием
Старый 12.07.2013, 19:01   #3
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию

Мдя... Это я тупой и не заметил глупой ошибки
Спасибо за все На весы кликнуть не могу, кликал недавно.
PHP код:
<?php
    $user 
$_POST['user'];
    
$pass $_POST['password'];
    
$query mysql_query('SELECT * FROM `users` WHERE `user` = "'.$user.'" AND `password` = "'.$pass.'"');
    
$data mysql_fetch_array($query);
    if(!
$query){
        echo
'Ошибка. Проверьте правильность имени и пароля.<br>';
    }
    else {
        
$_SESSION['login'] = array(''.$user.':'.$pass.':'.$data["id"].'');
        echo
'Вы успешно вошли в систему.<br>';
    }
    echo
'<a href="../cms.php">Нажмите сюда, если ваш браузер не поддерживает автоматическое перенаправление или вам надоело ждать.</a><br>';
?>

Последний раз редактировалось Masafi; 12.07.2013 в 19:13. Причина: Добавил скрипт
Masafi вне форума Ответить с цитированием
Старый 12.07.2013, 19:29   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Masafi Посмотреть сообщение
PHP код:
$query mysql_query('SELECT * FROM `users` WHERE `user` = "'.$user.'" AND `password` = "'.$pass.'"'); 
SQL-injection при таком запросе обеспечен.
Как минимум – в этом случае нужно использовать mysql_real_escape_string:
PHP код:
$query mysql_query("SELECT * FROM `users` 
         WHERE `user` = '" 
mysql_real_escape_string($user) . "' 
         AND `password` = '" 
mysql_real_escape_string($pass) . "'"); 
От чистого mysql_-расширения желательно начинать отходить, хотя бы в сторону PDO, или mysqli.
Особенно на начальном этапе изучения PHP – когда, в принципе, всё равно, какое расширение для работы с БД изучать.
Andkorol вне форума Ответить с цитированием
Старый 12.07.2013, 19:35   #5
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
SQL-injection при таком запросе обеспечен.
Как минимум – в этом случае нужно использовать mysql_real_escape_string:
PHP код:
$query mysql_query("SELECT * FROM `users` 
         WHERE `user` = '" 
mysql_real_escape_string($user) . "' 
         AND `password` = '" 
mysql_real_escape_string($pass) . "'"); 
От чистого mysql_-расширения желательно начинать отходить, хотя бы в сторону PDO, или mysqli.
Особенно на начальном этапе изучения PHP – когда, в принципе, всё равно, какое расширение для работы с БД изучать.
Спасибо конечно, но я с защитой так не заморачивался, потому что в таблице юзерс всего то 2-5 логинов будет.
И еще, никогда не шифровал пароли, где именно его зашифровать.
В базе изначально, и потом расшифровывать, или когда выбираем из базы сразу шифровать? Просто мой пароль угадать то сложно, он сделан на чистом рандоме
PHP код:
<?php
$chars 
"QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890"
$charsLen strlen($chars); 
for (
$i 0$s ""$i 20$i++) 
    
$s .= $chars[rand(0$charsLen 1)]; 
echo 
$s;  
?>
Masafi вне форума Ответить с цитированием
Старый 12.07.2013, 20:07   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Masafi Посмотреть сообщение
Просто мой пароль угадать то сложно, он сделан на чистом рандоме
Его никто не будет угадывать.
Если пароль хранится в таблице в оригинальном, чистом виде без шифрования – то получив доступ к этой таблице тем или иным способом, взломщик сможет вообще без проблем использовать этот пароль для управления сайтом например (если это пароль к админ-зоне – взломщик заходит в админку и творит там, что хочет).
Если же в таблице будет храниться зашифрованный пароль – то его получение никак не позволит взломщику использовать этот пароль для атаки на сайт, т.к. в поля формы авторизации нужно вводить оригинальный, незашифрованный пароль.

Способы шифрования паролей гуглятся легко, примеров реализации очень много.
Andkorol вне форума Ответить с цитированием
Старый 12.07.2013, 20:51   #7
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Его никто не будет угадывать.
Если пароль хранится в таблице в оригинальном, чистом виде без шифрования – то получив доступ к этой таблице тем или иным способом, взломщик сможет вообще без проблем использовать этот пароль для управления сайтом например (если это пароль к админ-зоне – взломщик заходит в админку и творит там, что хочет).
Если же в таблице будет храниться зашифрованный пароль – то его получение никак не позволит взломщику использовать этот пароль для атаки на сайт, т.к. в поля формы авторизации нужно вводить оригинальный, незашифрованный пароль.
А нельзя тогда хранить эти жалкие 5 паролей в самом скрипте? Не безопасней будет?
Цитата:
Сообщение от Andkorol Посмотреть сообщение
Способы шифрования паролей гуглятся легко, примеров реализации очень много.
Гуглил, гуглил, crypt() не робит, mcrypt_cbc() не робит, что робить то должно вообще? Или самому написать шифровалку и дэшрифовалку.
Masafi вне форума Ответить с цитированием
Старый 12.07.2013, 21:05   #8
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Да в вашем варианте проще вообще ничего не делать на php, ибо не вижу прогресса. Пароль нормальные люди записывают хешем, через md5 ну и плюс соль
ADSoft вне форума Ответить с цитированием
Старый 12.07.2013, 21:59   #9
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
Да в вашем варианте проще вообще ничего не делать на php, ибо не вижу прогресса. Пароль нормальные люди записывают хешем, через md5 ну и плюс соль
Я вообще нуб во всем этом. Хеш расшифровать нельзя, зачем тогда его вообще хранить? Или я вообще ничего не понял спустя больше 2 часов гуглинья. Короче выбрал я вот такую шифровку, поменял чиселки на другие, мне хватит
http://www.php.su/articles/?cat=examples&page=028
Masafi вне форума Ответить с цитированием
Старый 12.07.2013, 23:38   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Безотносительно к PHP:
Послали пароль
Скрипт посчитал от него хеш
Сравнил с тем, что в базе
Совпали - пропустил пользователя

Подобрать пароль по правильно сделанному хешу очень сложно/почти нереально (если пароль "посолить" хорошенько).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не передаются параметры из тега <a> Smitt&Wesson PHP 2 14.01.2012 10:22
[Post ajax] Отправить данные на скрипт в delphi webber9989 Работа с сетью в Delphi 6 29.03.2011 13:01
Неправильно воспринимаются POST данные Руслантус PHP 4 04.01.2011 13:13
как данные из формы, переданные методом POST получить в cgi скрипте написанном на паскале GROSS777 PHP 3 28.05.2010 12:14
Не могу определить до конца данные отправки POST (INDY)) Steklorez Работа с сетью в Delphi 2 26.03.2010 18:20