2009-07-24 3 views
3

Мне нужно выбрать только пароль из таблицы с конкретным именем пользователя, введенным через форму входа в систему. Я храню пароль в зашифрованном виде в таблице mysql. Поэтому мне нужно сравнить данный пароль и сохраненный пароль и распечатать «успешно выполнил вход». иначе пароль неверен. это мой code.Now я получаю результат, как «1Resource ID # 4» .can любой один плз помочь ...Чтобы выбрать зашифрованный пароль из mysql

mysql_select_db($dbName); 
$user_name=$_POST['name']; 
$pswd=$_POST['pswd']; 
$res  = mysql_query("select * from xxx where Name='$user_name'"); 
$row  = mysql_num_rows($res); 
echo $row; 
$encpass=mysql_query("SELECT password FROM xxx WHERE Name = '$user_name'"); 
$result1= mysql_fetch_array($encpass); 
echo $result1; 
if($row>0) 
{ 
//echo 'hi'; 
    if(md5($pswd)==$result1) 
     { 
     echo 'hi'; 
     echo "you have successfully signed in!!!"; 
     //echo $name = $row['Name']; 
     //header("location:check.html"); 
     } 
} 

else 
echo "you are not a member"; 

ответ

1

Вы печатаете в качестве результирующего массива, вам все равно придется пройти через него.

Просто изменение:

if(md5($pswd)==$result1) 

To:

if(md5($pswd)==$result1[0]) 
2

Вы более усложнять это. Вам не нужно извлекать пароли из базы данных. Вам просто нужно посмотреть, можете ли вы выбрать строку с именем пользователя и паролем, которые были отправлены.

Первый - получить имя пользователя и пароль от пользователя и получить их в форме, которая совпадает с тем, что вы ее сохранили.

$username = $_POST['name']; 
$password = my_password_encryption_function($_POST['pswd']); 

Второй - настройте свой SQL. Используйте подготовленный оператор для защиты от атак SQL-инъекций. Ваш нынешний подход небезопасен и позволяет пользователям изменять пароли суровых пользователей (между прочим).

$preparedStatement = $db->prepare('SELECT * FROM xxx WHERE Name = :name AND password = :password'); 
$preparedStatement->execute(array(':name' => $username, ':password' => $password)); 
$rows = $preparedStatement->fetchAll(); 

В-третьих - просто подсчитайте возвращаемые строки. Если вы получите один результат, пароль будет соответствовать. Если вы получаете нулевые результаты, пароль не соответствует.

0

Как вы говорите, что сказал slipbull: «Вы печатаете набор результатов как массив, вам все равно нужно пройти его». - Я также скажу вам, что ваш код в настоящее время ОЧЕНЬ опасно.

Вы вставляете данные пользователя прямо в SQL-запрос. Они могут использовать вашу базу данных, делая это.

Вместо этого передайте параметр через mysql_real_escape_string() ПЕРЕД выполнением чего-либо с данными.

Исправьте это, прежде чем делать что-нибудь еще!

Смежные вопросы