Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с MySQL и PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
improbable
Отправлено: 06 Марта, 2012 - 07:35:43
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Есть форма входа на сайт

CODE (htmlphp):
скопировать код в буфер обмена
  1. <html>
  2. <body>
  3. <form name='form' method='POST' action='ver.php' >
  4. <center>
  5. Username: <input type='text' name='username' value=''><br>
  6. Password: <input type='password' name='password' value=''><br>
  7. <input type='submit' name='submit' value='Log In'>
  8. </center>
  9. </form>
  10. </body>
  11. </html>
  12.  


есть подключение к БД

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /*
  3. DB Name  a3115530_db
  4. DB User  a3115530_admin
  5. DB Host  mysql10.000webhost.com
  6. */
  7.  
  8. // подключение к серверу MySQL
  9.  
  10. $dbc = mysql_connect('mysql10.000webhost.com', 'a3115530_admin', 'пароль не спалю'); // <host> <user> <pass>
  11.         if(!$dbc) {
  12.                 die('Подключение не удалось: ' . mysql_error());
  13.                           }
  14.  
  15. // выбираем БД
  16.  
  17. $db_selected = mysql_select_db("a3115530_db", $dbc); // <db name> <host> <user> <pass>
  18.         if(!$db_selected) {
  19.                 die('Подключение не удалось: ' . mysql_error());
  20.                                           }
  21. ?>


есть файл php, на который перенаправляет с формы входа

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include 'dbconnection.php';
  3. $pas = $_POST[password];
  4. $un = $_POST[username];
  5. $act = "SELECT password FROM users WHERE login = $un";
  6. ?>



ВНИМАНИЕ ВОПРОС: Как проверить совпадают ли пароль, введенный пользователем, и пароль из БД, который стоит напротив введенного username ($un)
(Добавление)
я уверен, тут это каждый знает, просто напишите плз
 
 Top
Dezmont
Отправлено: 06 Марта, 2012 - 08:00:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1. $password = mysql_query($act) or die(mysql_error());
  2. $array = mysql_fetch_assoc($password);
  3. if($_POST['password'] !== $array['password']){
  4.    die('Incorrect password.');
  5. }
  6. // Выполняете ваш скрипт если пароли совпадают.

Сравнение жёсткое, поэтому должен совпадать тип данных.

(Отредактировано автором: 06 Марта, 2012 - 08:01:30)

 
 Top
improbable
Отправлено: 06 Марта, 2012 - 08:03:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




спасибо, а перед выполнения скрипта надо else?
 
 Top
Dezmont
Отправлено: 06 Марта, 2012 - 08:04:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Если у вас скрипт выглядит так, как вы описали, то никакого else не надо. Если пароли не совпадают, die() остановит выполнение скрипта и выведет сообщение об ошибке. Если пароли совпадут, выполнение скрипта продолжится после блока if.
 
 Top
improbable
Отправлено: 06 Марта, 2012 - 08:11:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




вроде-бы подставил то, что Вы написали, но видимо не туда...

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include 'dbconnection.php';
  3. $pas = $_POST[password];
  4. $un = $_POST[username];
  5. $act = mysql_real_escape_string("SELECT password FROM users WHERE username = $un");
  6. $password = mysql_query($act) or die(mysql_error());
  7. $array = mysql_fetch_assoc($password);
  8. if($_POST['password'] !== $array['password']){
  9.    die('Incorrect password.');
  10. }
  11. echo "1223";
  12. ?>


при логине admin и пароле 123 пишет

Цитата:
Unknown column 'admin' in 'where clause'

(Добавление)
немного поправил, вот http://untoldwealth[dot]hostoi[dot]com/login.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include 'dbconnection.php';
  3. $password = mysql_query("SELECT password FROM users WHERE login = $un") or die(mysql_error());
  4. $array = mysql_fetch_assoc($password);
  5. if($_POST['password'] !== $array['password']){
  6.    die('Incorrect password.');
  7. }
  8. ?>


пишет

Цитата:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
 
 Top
snikers987
Отправлено: 06 Марта, 2012 - 08:37:01
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




Dezmont зачем весь запрос через mysql_real_escape_string()?

PHP:
скопировать код в буфер обмена
  1.  
  2. //database conection is already established
  3. $login = mysql_real_escape_string($_POST['login']);
  4. $pass = mysql_real_escape_string($_POST['pass']);
  5. $rResult = mysql_query('SELECT `id` FROM `users` WHERE `login` = "'.$login.'" AND `pass` = "'.$pass.'"');
  6. if(!mysql_num_rows($rResult)){
  7.     echo 'Incorrect password';
  8. }
  9.  

(Отредактировано автором: 06 Марта, 2012 - 08:45:16)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
improbable
Отправлено: 06 Марта, 2012 - 08:38:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




я тоже не понял ту строчку, пробовал без нее...
еще с переменными не очень понятно, $act получается переопределяется... толком запрос не задан. кто может написать?
 
 Top
Dezmont
Отправлено: 06 Марта, 2012 - 08:42:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




snikers987, ничего страшного ведь не случится? Я просто дополнил код по ходу. ctrl+c, ctrl+v в конец и он работает.

А зачем создавать переменные $un,$pas?
 
 Top
improbable
Отправлено: 06 Марта, 2012 - 08:44:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. include 'dbconnection.php';
  2. $act = "SELECT password FROM users WHERE login = $un";
  3. $password = mysql_query($act) or die(mysql_error());
  4. $array = mysql_fetch_assoc($password);
  5. if($_POST['password'] !== $array['password']){
  6.    die('Incorrect password.');
  7. }



Цитата:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
 
 Top
Dezmont
Отправлено: 06 Марта, 2012 - 08:46:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




improbable, я вам скинул рабочий вариант. Зачем вы исправляете на неверный?

Строку можно даже в Gogle вставить, он вам переведёт. Error in SQL Syntax.

$un заключите в одинарные кавычки '$un'
 
 Top
snikers987
Отправлено: 06 Марта, 2012 - 08:47:16
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




Dezmont пишет:
snikers987, ничего страшного ведь не случится? Я просто дополнил код по ходу. ctrl+c, ctrl+v в конец и он работает.

А зачем создавать переменные $un,$pas?

Он не может работать, mysql_real_escape_string() его 'сломала', нужно содержимое переменных экранировать, а не весь запрос.


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
improbable
Отправлено: 06 Марта, 2012 - 08:50:05
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




' вроде деактивируют переменную внутри?
вообще полностью правильный код можно?
у меня есть файл подключения к БД dbconnection.php - он рабочий
 
 Top
Dezmont
Отправлено: 06 Марта, 2012 - 08:56:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




snikers987 пишет:
Dezmont пишет:
snikers987, ничего страшного ведь не случится? Я просто дополнил код по ходу. ctrl+c, ctrl+v в конец и он работает.

А зачем создавать переменные $un,$pas?

Он не может работать, mysql_real_escape_string() его 'сломала', нужно содержимое переменных экранировать, а не весь запрос.


Что-то шарик за ролик, извините. Проэкранировал кавычки...
 
 Top
improbable
Отправлено: 06 Марта, 2012 - 09:03:04
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




snikers987

Цитата:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a3115530/public_html/ver.p hp on line 6


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include 'dbconnection.php';
  3. $login = mysql_real_escape_string($_POST['login']);
  4. $pass = mysql_real_escape_string($_POST['pass']);
  5. $rResult = mysql_query('SELECT `id` FROM `users` WHERE `username` = "'.$login.'" AND `pass` = "'.$pass.'"');
  6. if(!mysql_num_rows($rResult)){
  7.     echo 'Incorrect password';
  8. }
  9. ?>



и еще, поправочка, в таблице не логин, оказывается, а 'username')))
но по-любому не работает.
я думал это элементарно для форумчан, оказывается не совсем))
(Добавление)
УРААА!

Правильный код:

PHP:
скопировать код в буфер обмена
  1. include 'dbconnection.php';
  2. $login = mysql_real_escape_string($_POST['username']);
  3. $pass = mysql_real_escape_string($_POST['password']);
  4. $rResult = mysql_query('SELECT `id` FROM `users` WHERE `username` = "'.$login.'" AND `password` = "'.$pass.'"');
  5. if(!mysql_num_rows($rResult)){
  6.     echo 'Incorrect password';
  7. }


Всем спасибо!
 
 Top
snikers987
Отправлено: 06 Марта, 2012 - 10:02:57
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




Дык тут нет екстрасенсов, Вам виднее как в Вашей бд поля называются..Помоему много ума не нужно, чтобы пример под свой случай исправит.
Если уж на то пошло, то драйвер mysql_ вообще не стоит использовать.


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB