Помогите разобраться с проверкой юзера

bober

Guest
Помогите разобраться с проверкой юзера

Есть скрипт который регистрирует пользователе в етом скрипте есть часть которая проверяет зарегистрирован пользователь ета часть приведена ниже.Я только 3 нидели занимаюсь пхп и ненашол ничего лучше чем проверить так

PHP:
 if ($prov[username]!= $login)break;
Но почемуто он переходит к части скрипта который регистрирует юзера и заносит запись в БД хотя поле username
стоит уникальное но все же вписывает туда 2 одинаковых значения. После данного отрезка идет скрипт заноса данных в БД
PHP:
if (!isset ($register))
{
echo "NOT REGISTER";

}
else
{
if(!mysql_connect($db_host,$db_user,$db_pass))
{
echo "<h1 MySQL. MySQL server error</h1>";
echo " BACK";
exit;
}
mysql_select_db($db_name);
$prov=mysql_query (" SELECT DISTINCT username
                        FROM clients");
                        echo mysql_error();
for ($i=0; $i<mysql_num_rows($prov); $i++)
{
$fprov=mysql_fetch_array($prov);
if ($prov[username]!= $login)break;
echo "NOT FOUND USER";
 }
После выполнения скрипта выводит сообщение "
Notice: Use of undefined constant username - assumed 'username' in /home/bober/public_html/all-host/hosting/register.php on line 30
Вы зарегистрированы"
Ниже приведена line 30
PHP:
if ($prov[username]!= $login)break;
 

bober

Guest
Автор оригинала: ys
Посмотри сюда для начала:

http://detail.phpclub.net/article/2003-12-01
Спасибо статья очень полезная но я просто в шоке етот фрагмент у меня почемуто не выводит хотя в базе есть такой пользователь
PHP:
$sql_statement="select password from clients where username='$PHP_AUTH_USER'";
:confused: :confused: :confused:
 

ys

отодвинутый новичок
bober

А теперь если я пошлю тебе нечто, что поместится в
$PHP_AUTH_USER, хотя нет, это поместится в
$_SERVER['PHP_AUTH_USER'] например такую строку:

' OR '1'='1

какой в итоге мы получим запррос?
 

bober

Guest
Автор оригинала: ys
bober

А теперь если я пошлю тебе нечто, что поместится в
$PHP_AUTH_USER, хотя нет, это поместится в
$_SERVER['PHP_AUTH_USER'] например такую строку:

' OR '1'='1

какой в итоге мы получим запррос?
видиш ли есле поле юзернаме былобы цыфровое тоесть как тут WHERE cli_id =1 тогда оно работает а если сравнивать текстовые поля то нет только если пользователь не cli_id = 1
Тоесть пользователь cli_id = 1 и username=vasa работает
cli_id = n и username=xxx не работает.

OR '1'='1:confused: :confused: :confused:

хотя мне кажеть проще сделать авторизацию так cli_id = ""
но хотелось бы по логину
 

bober

Guest
lucas
Да тут проблема не в слешах а том что когда хочу проверить выбрать юзера по логину работает только на юзере cli_id=1
 

bober

Guest
Автор оригинала: lucas
Покажи SQL-запрос.
Для начала я попробовал прописать сразу имя а не переменную.
Ошибок не выводит но и результат тоже
PHP:
$prov=mysql_query ("SELECT * 
         FROM clients
         WHERE username
         LIKE \' %vova\' ");
                        echo mysql_error();
for ($i=0; $i<mysql_num_rows($prov); $i++)
{
$fprov=mysql_fetch_array($prov);

 }
 

ys

отодвинутый новичок
PHP:
$prov=mysql_query ("SELECT * 
         FROM clients
         WHERE username
         LIKE \' %vova\' ");
                        echo mysql_error();
for ($i=0; $i<mysql_num_rows($prov); $i++)
{
$fprov=mysql_fetch_array($prov);

 }
Можно дурацкий вопрос?
Каков тайный смысл в этом запросе и что хочется получить в итоге?
 

confguru

ExAdmin
Команда форума
$sql=sprintf("SELECT *
FROM clients
WHERE username WHERE username='%s' ",mysql_escape_string('vova');
 

bober

Guest
У меня есть форма заказа и регистраций для етих форм я хочу сделать проверку существования юзера (есть ли инфы юзера у меня в базе)
Я перепробовал
PHP:
WHERE username ='vova';
или

PHP:
LIKE \' %vova\' ");
но все они только сверяют юзера у которого cli_id=1 а на других ничего.Тоесть я пробовал вывести инфу по проверяемому нику но ничего нету хотя я знаю что такой ник есть

-~{}~ 24.06.04 13:59:

Автор оригинала: admin
$sql=sprintf("SELECT *
FROM clients
WHERE username WHERE username='%s' ",mysql_escape_string('vova');
ПОПРОБУЮ!!!
 

Winer

Мимо проходил
пробелы, переводы строк не затесались случаем в конце строки
 
Сверху