[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите сделать проверку пароля
Oggy
вот мои попытки:


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

$this->admin_connect_bd();
$result=mysql_query('SELECT login,password FROM adm');
if ($result)
{
while($row=mysql_fetch_array($result))
{
$logg=$row['login'];
$paroll=$row['password'];


if ($logg==$_POST['login'] and $paroll==$_POST['password']);
{
echo "ok";
} else echo "no";
}
}
}





Спустя 6 минут, 22 секунды (4.02.2012 - 22:19) nugle написал(а):
Oggy
ерунда какая то, давай конкретные параметры, по которым надо проверять

Спустя 2 минуты, 37 секунд (4.02.2012 - 22:22) johniek_comp написал(а):
<?php

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

$this->admin_connect_bd();
$result = mysql_query('SELECT login,password FROM `adm`');
if ($result)
{
while($row = mysql_fetch_array($result))
{
$logg = $row['login'];
$paroll = $row['password'];
}
if ($logg == $_POST['login'] and $paroll == $_POST['password'])
echo 'ok';
else
echo 'no';

}
}


?>


передавай попову приветы

Спустя 5 минут, 54 секунды (4.02.2012 - 22:28) nugle написал(а):
johniek_comp
ахах) попов и классы? что то новенькое ты говоришь) если инициализация гет переменных происходит не так - это не значит, что ученик попова

Спустя 2 минуты, 4 секунды (4.02.2012 - 22:30) johniek_comp написал(а):
nugle
ТС хочет свою процедурку на какой-то готовый код положить, естественно перед этим просмотрев его видеоуроки художества

Спустя 4 минуты, 42 секунды (4.02.2012 - 22:34) Лена написал(а):
1.
$login = $_POST['login'] ? $_POST['login'] : '';
$password = $_POST['password'] ? $_POST['password'] : '' ;

2.
$sql = 'SELECT login,password FROM `adm` WHERE login = "' . mysql_real_escape_string($login) . '" AND password = "' . md5(mysql_real_escape_string($password)) . '"';

Написано очень плохо.

Спустя 3 минуты, 38 секунд (4.02.2012 - 22:38) nugle написал(а):
Лена
а если мы выставим error_reporting(ALL); то что? то ошибки появятся в твоем коде

Спустя 35 минут, 12 секунд (4.02.2012 - 23:13) Oggy написал(а):
Цитата (johniek_comp @ 4.02.2012 - 19:22)
<?php

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

$this->admin_connect_bd();
$result = mysql_query('SELECT login,password FROM `adm`');
if ($result)
{
while($row = mysql_fetch_array($result))
{
$logg = $row['login'];
$paroll = $row['password'];
}
if ($logg == $_POST['login'] and $paroll == $_POST['password'])
echo 'ok';
else
echo 'no';

}
}


?>


передавай попову приветы

в $logg $paroll присваевается последнее значение цыкла
сравнивается только последния запис в таблице

Спустя 8 минут, 42 секунды (4.02.2012 - 23:22) wplounge написал(а):
Oggy
if(isset($_POST['login'],$_POST['password'])

- это всегда будет давать true. Лучше сразу проверять на пустоту:
if(!empty($_POST['login']) && !empty($_POST['password']))


Вот этот запрос:
$result = mysql_query('SELECT login,password FROM `adm`');

- выберет вам логины и пароли всех пользователей из таблицы 'adm'. Если хотите проверить пароль какого-то конкретного пользователя, нужно добавить условие:
$result = mysql_query("SELECT login,password FROM `adm` WHERE login = '{$login}'");


Вот эта конструкция в вашем случае вообще смысла не имеет:

while($row = mysql_fetch_array($result))
{
$logg = $row['login'];
$paroll = $row['password'];
}

, т.к. значения переменных $logg и $paroll будут каждый раз переписываться заново. Соответсвенно вот здесть вы никогда не получите "ok" (если только не введете данные юзера, находящегося последним в базе данных):

if ($logg == $_POST['login'] and $paroll == $_POST['password'])
echo 'ok';
else
echo 'no';


В общем, настоятельно советую начать читать вот этот курс: http://irbis-team.com/15.

Лена
md5(mysql_real_escape_string($password)) - mysql_real_escape_string здесь не нужен. Строка, закодированная в md5 вреда базе данных не причинит.

Спустя 12 минут, 54 секунды (4.02.2012 - 23:35) Oggy написал(а):
Цитата (wplounge @ 4.02.2012 - 20:22)
Oggy
if(isset($_POST['login'],$_POST['password'])

- всегда будет давать true. Лучше сразу проверять на пустоту:
f(!empty($_POST['login']) && !empty($_POST['password']))


Вот этот запрос:
$result = mysql_query('SELECT login,password FROM `adm`');

- выберет вам логины и пароли всех пользователей из таблицы 'adm'. Если хотите проверить пароль какого-то конкретного пользователя, нужно добавить условие:
$result = mysql_query("SELECT login,password FROM `adm` WHERE login = '{$login}'");


Вот эта конструкция в вашем случае вообще смысла не имеет:

while($row = mysql_fetch_array($result))
{
$logg = $row['login'];
$paroll = $row['password'];
}

, т.к. значения переменных $logg и $paroll будут каждый раз переписываться заново. Соответсвенно вот здесть вы никогда не получите "ok" (если только не введете данные юзера, находящегося последним в базе данных):

if ($logg == $_POST['login'] and $paroll == $_POST['password'])
echo 'ok';
else
echo 'no';


В общем, настоятельно советую начать читать вот этот курс: http://irbis-team.com/15.

Лена
md5(mysql_real_escape_string($password)) - mysql_real_escape_string здесь не нужен. Строка, закодированная в md5 вреда базе данных не причинит.

спасибо

Спустя 4 минуты, 36 секунд (4.02.2012 - 23:39) m4a1fox написал(а):
johniek_comp
Ты в ударе сегодня как я погляжу... smile.gif

Спустя 10 минут, 35 секунд (4.02.2012 - 23:50) walerus написал(а):
wplounge
Цитата
- всегда будет давать true. Лучше сразу проверять на пустоту:

Несогласен с 'Лучше сразу проверять на пустоту', этот код на пробел не сработает. Пример ниже.

<?php

$test = ''; // Проверяем на пустоту

If( !empty( $test ) )
echo "НЕ Пусто";
else
echo "Пусто"; // ОТВЕТ


$test = ' '; // Проверяем на пробел

If( !empty( $test ) )
echo "НЕ Пусто"; // ОТВЕТ т.к. пробел - это вроде как не пусто
else
echo "Пусто";
?>


Предлагаю сделать так:

<?php 
If( isset( $_POST['login'] ) && trim( $_POST['login'] ) != '' &&
isset( $_POST['password'] ) && trim( $_POST['password'] ) != '' )
{
// Обработка данных
$login = $_POST['login'];
$password = $_POST['password'];
// И так далее...

}
else
{
// Выводим ошибку, о неправильно указанных данных
}
?>

Так будет учтено и наличие переменных и НЕ пустоты в них.

P.S. Сорри кто уже успел посмотреть, сначала не так написал :rolleyes:

Спустя 6 минут, 13 секунд (4.02.2012 - 23:56) YVSIK написал(а):
/*добавляем проверку на длину  ЛОГИНА*/
if (strlen($loginl) < 3 or strlen($loginl) > 15)
/*---*/{/*---*/
unset($loginl);
echo '"Логин" должен состоять от 3 и до 15 символов <br >';
/*---*/}/*---*/
/*обрезаем на лишние пробелы по краям*/

$loginl= trim ($login) ;

/*проверка на не соответствие такого-же в базе */
$result = mysql_query("SELECT `login` FROM `matr_users` WHERE `login` =
'"
.mysql_real_escape_string($login)."'");
if(mysql_num_rows($result)>0)

//обработка на невыполнение скриптов
$loginl= htmlspecialchars($login) ;

//и для записи в базу это 
'".mysql_real_escape_string($login)."'

фонтазии вского рода можно добавть



Спустя 10 минут, 47 секунд (5.02.2012 - 00:07) wplounge написал(а):
walerus

Согласен, забыл про пустоту.
Хотя в данном случае это не так важно, ведь запрос в БД с пробелом вместо логина или пароля просто вернет false.

Цитата
Предлагаю сделать так:

Я бы даже написал короче:
<?php 
If(!empty(trim( $_POST['login'] )) && !empty(trim( $_POST['password'] )))
{
// Обработка данных
$login = $_POST['login'];
$password = $_POST['password'];
// И так далее...

}
?>

К тому же здесь же можно отэскейпить их на предмет SQL-инъекций и прочих XSS

Спустя 39 минут, 44 секунды (5.02.2012 - 00:47) walerus написал(а):
wplounge +1 cool.gif

Спустя 2 часа, 34 минуты, 54 секунды (5.02.2012 - 03:22) quickxyan написал(а):
и еще свой кусочек добавлю.


session_start();
if(isset($_REQUEST['login'])){
$error = array(); //массив куда будут складываться ошибки
//все возможные проверки на пустоту и соответствие


if(count($array) == 0){
$sql = "SELECT login,pass FROM `table` WHERE `login` = '".mysql_real_escape_string($_REQUEST['login'])."' LIMIT 1";
$result = mysql_query($sql) or die('Неправильный запрос...');
$row = mysql_fetch_assoc($result);
if($row['id'] != ''){
if($row['pass'] == mysql_real_escape_string($_REQUEST['pass'])){
$_SESSION['login'] = mysql_real_escape_string($_REQUEST['login']);
header('location:index.php');
}else{
$error['pass'] = 'Неверный пароль';
}
}
}
else{
foreach($error as $value)
echo $value.'<br/>';
}

}


Спустя 6 часов, 33 минуты, 33 секунды (5.02.2012 - 09:55) johniek_comp написал(а):
m4a1fox
ну так с бана вышел, на нервах весь :)

что бы проверить на пробелы и на пустоту надо такой код брать
if(trim($text) && !empty($text))
{
// ваши действия
}

универсально :)

Спустя 46 минут, 29 секунд (5.02.2012 - 10:42) YVSIK написал(а):
Цитата (johniek_comp @ 5.02.2012 - 10:55)
m4a1fox
ну так с бана вышел, на нервах весь smile.gif

что бы проверить на пробелы и на пустоту надо такой код брать
<pre class="sh_sourceCode" rel="php"><span class="sh_control">if</span><span class="sh_symbol">(</span><span class="sh_function">trim</span><span class="sh_symbol">(</span><span class="sh_variable">$text</span><span class="sh_symbol">) && !</span><span class="sh_function">empty</span><span class="sh_symbol">(</span><span class="sh_variable">$text</span><span class="sh_symbol">))</span>
    <span class="sh_cbracket">{</span>
        <span class="sh_comment">// ваши действия</span>
    <span class="sh_cbracket">}</span></pre>
универсально smile.gif

Читаем внимательно топик если уже есть, что повторять уже сказанное?
Свернутый текст
хоть ты и на нервах, но лечение тебе не пошло вижу на пользу, опят начал трудиться наследить во всех темах. по поводу и без! ты что пытаешься тут сделать на форуме? застолбит для себя побольше места? к стати тут тебя уже переплюнол один новый юзер, за 6 денй он успел набрать в карму 6 плюсов и побывать поссчитай в 150 темах и получить три предупреждения (это рекорд=одно каждые два дня), у вас что терь с ним будет дуэль кто больше навредит или наследит. на этом форуме?
Быстрый ответ:

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