| |
|
|
| | Здравствуйте!!!
У меня написана такая программка в index.php в водишь поля: логин, пароль.
Index.php обрабатывается скриптом который вносит эти поля в Базу Данных.
Но мне нужно чтобы перед тем как он внёс юзера он проверил существует такой логин или нет.
Я делаю вот так но не получается.
........
$test = mysql_query ("select * from users where login='$_REQUEST[login]'") ;
if ($test == $test)
{
echo "Такой юзер уже существует!" . "<br>";
}
else {
$request = mysql_query ("insert into users (password, login) values ('$_REQUEST[parol]', '$_REQUEST[login]') ");
if (!$request){
echo mysql_error () . "<br>" ;
exit () ;
}
echo "Ваши данные!" . "<br>" .
"Логин: " . "$_REQUEST[login]" . "<br>" .
"Пароль: " . "$_REQUEST[parol]" . "<br>" ;
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(06.08.2004 в 05:01)
| | | У меня вызывают вопросы вот эти строки
<?
$test = mysql_query ("select * from users where login='$_REQUEST[login]'") ;
if ($test == $test)
{
echo "Такой юзер уже существует!" . "<br>";
}
?>
|
Вы выполняете запрос и идентификатор результата помещаете в $test;
Если запрос отработал, то $test будет указывать на результат запроса. Причем он не будет равен NULL, даже в том случае, если запрос вернет 0 строк (т.е. такого пользователя не будет в базе). Это надо проверять специальной функцией.
Например так.
<?
$test = mysql_query ("select * from user where user='$_REQUEST[login]'") ;
if (!$test)
{
echo "Ошибка при выполнении запроса";
exit();
}
if(mysql_num_rows($test)>0)
{
echo "<br>Такой юзер уже существует!" . "<br>";
}
else
{
echo "<br>Такого юзера НЕТ!" . "<br>";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(06.08.2004 в 09:30)
| | | to Дизайнер
Работает!
Большое спасибо!
| |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(06.08.2004 в 18:15)
| | | Еще один вопросик если не сложна.
Есть страничка index.php в ней водишь логин и пароль этот файл редактирует другая программка, которая проверяет есть ли такой юзер с паролем в базе данных MySQL . Но у меня не получается проверить.
.......
$test = mysql_query ("select * from users where login='$_REQUEST[login]', password='$_REQUEST[password]'") ;
if (!$test)
{
echo mysql_error() . "<br>";
exit();
}
if(mysql_num_rows($test)>0)
{
echo "Неправельно ведён логин или пароль!" . "<br>";
}
else
{
echo "Привет!" . "$_REQUEST[login]" . "<br>";
echo "<a href='user_edit.php'>Изменить данные!" ;
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(06.08.2004 в 19:38)
| | | А что за ошибку пишет?
Вообще вот здесь ошибка - в запросе. Там надо логический оператор AND ставить вместо запятой.
<?
$test = mysql_query ("select * from users where login='$_REQUEST[login]' and password='$_REQUEST[password]'") ;
?>
|
| |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(06.08.2004 в 19:59)
| | | Я бы от греха вообще бы переписал бы следующим образом:
<?php
$query = "SELECT * FROM users
WHERE login='".$_REQUEST['login']."' AND
password='".$_REQUEST['password']."'";
$test = mysql_query($query);
?>
|
Элементы суперглобальных массивов плохо интерпретируются в двойных кавычках - их лучше объединять при помощи точки. | |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(06.08.2004 в 19:59)
| | | Поставел "and" работате спасибо Дизайнер и cheops | |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(06.08.2004 в 05:01)
| | | Здравствуйте!!!!
Мне надо чтобы вот в этом примере, $test проверял юзеров но чтобы было исключение.
<?
$test = mysql_query ("select * from user where user='$_REQUEST[login]'") ;
if(mysql_num_rows($test)>0)
{
echo "<br>Такой юзер уже существует!" . "<br>";
}
else
{
echo "<br>Такого юзера НЕТ!" . "<br>";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(09.08.2004 в 23:32)
| | | Имеется ввиду чтобы генерировалось исключение (Exception) или для одного из пользователей проверка не проводилась? | |
| |
|
|
| |
|
|
| |
для: cheops
(09.08.2004 в 23:40)
| | | >или для одного из пользователей проверка не проводилась?
Да | |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(10.08.2004 в 03:08)
| | | Можно поставить дополнительное условие:
<?php
$test = mysql_query ("select * from user where user='$_REQUEST[login]'") ;
if(mysql_num_rows($test)>0 && $_REQUEST['login'] != "Адоп Акробат")
{
echo "<br>Такой юзер уже существует!" . "<br>";
}
else
{
echo "<br>Такого юзера НЕТ!" . "<br>";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: cheops
(10.08.2004 в 10:10)
| | | Я наверно неправельно выразелся .
Мне надо чтобы он проверял пользователей в MySQL но адна во из них не смотрел .Наверна вот сюда нада чтонебуть дабавить
$test = mysql_query ("select * from user where user='$_REQUEST[login]'")
|
| |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(10.08.2004 в 15:46)
| | | Дело в том, что этот запрос вернёт стороку (а mysql_num_rows($test)>0 будет true только в этом случае) когда пользователь занесён в базу данных. Насколько я понял его исключительные права должны предоставляться ему в любом случае: занесён он в базу данных или нет... Хм вообще-то я в предыдущем посте сам ошибся... :)))
Тогда
<?php
$test = mysql_query ("select * from user where user='$_REQUEST[login]'") ;
if(mysql_num_rows($test)>0)
{
echo "<br>Такой юзер уже существует!" . "<br>";
}
else
{
// Но если это исключительный пользователь - его следует пустить
if($_REQUEST['login'] != "Адоп Акробат")
{
echo "<br>Всё в порядке свои!" . "<br>";
}
else
{
echo "<br>Такого юзера НЕТ!" . "<br>";
}
}
?>
|
Но в этом случае его не должно быть в базе данных, если такой пользоваетль в базе данных существует SQL-запрос следует изменить:
<?php
$test = mysql_query ("select * from user where user='$_REQUEST[login]' AND user NOT LIKE 'Адоп Акробат'") ;
?>
|
| |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(06.08.2004 в 05:01)
| | | to cheops
Например я зарегистрированный пользователь и хочу изменить мои данные но не хочу изменить свой логин который уже лежит в базе данных. Но который пример я вам показал он всегда говорит то, что такой пользователь существует. А мне необходимо чтобы он проверял других пользователь но не меня.
Извеняюсь за то, что так много спрашиваю! | |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(10.08.2004 в 22:34)
| | | Ага, тогда нужно поступить следующим образом:
Для регистрации использовать один скрипт, например register.php, а для обновления - другой - upload.php (приглядитесь на этом форуме реализована именно такая схема). При регистрации - заводить нового пользователя и отказывать всем, кто покушается на уже существующие ники. А при обновлении (upload.php) сначала запрашивать у базы данных существует ли такой пользователь, и, если он существует - обновлять его данные.
<?php
// это файл upload.php
$query = "SELECT * FROM user WHERE user='$_REQUEST[login]'";
$usr = mysql_query($query);
if(!$usr)
{
echo "Ошибка в SQL-запросе";
exit()
}
// Если СУБД вернула результат - обновляем данные пользователя
if(mysql_num_rows($usr)>0)
{
$query = "UPDATE user SET password = '$_REQUEST[password]'
WHERE user = '$_REQUEST[login]'";
mysql_query($query);
}
// Если такого пользователя нет в базе данных - вежливо
// предлагаем ему зарегистрироваться
else
{
echo "Пожалуйста, зарегистрируйтесь в системе...";
}
?>
|
>Извиняюсь то что так много спрашиваю!
Ну... форум для этого и был создан - вы можете спрашивать здесь всё что вас интересует. | |
| |
|
|
| |
|
|
| |
для: cheops
(10.08.2004 в 23:45)
| | | Правильно я понял??
Допустим у меня 2 пользователя в БД. 1-го завут "Аркадий" А 2-го "Адоп Акробат" тогда я зашел под "Аркадием" и захотел изменить свой логин на "Адоп Акробат" то тогда ваш скрипт мне разрешит это??
И не могли бы вы полутше описать этот скрипт, а то я не очень хорошо в нём разобрался. | |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(11.08.2004 в 03:09)
| | | Давайте еще раз более четко поставим задачу. Потому что могут быть разночтения…
Есть база, есть пользователи в ней. Вы хотите, чтобы у пользователя была возможность менять свои регистрационные данные и даже логин?
Скрипт, который привел cheops позволяет это сделать. Это тот скрипт, которые будет обновлять регистрационные данные. Для регистрации нового пользователя будет использоваться другой скрипт (он обсуждался выше).
<?php
// это файл upload.php
// Делаем запрос к базе и получаем данные для пользователя,
//логин которого передан на страницу
$query = "SELECT * FROM user WHERE user='$_REQUEST[login]'";
$usr = mysql_query($query);
// Если запрос выполнить не удалось – пишем что ошибка и останавливаем
// выполнение
if(!$usr)
{
echo "Ошибка в SQL-запросе";
exit()
}
// Если СУБД вернула результат (количество строк, которые вернул запрос
// больше нуля) - обновляем данные пользователя
if(mysql_num_rows($usr)>0)
{
// Ну здесь какой то запрос на обновление. В данном случае
// написан запрос на изменение пароля. Если бы был передан
// новый логин, то можно было бы изменить логин.
// А можно здесь сначала выводить форму для ввода новых значений,
// а само обновление (запрос на обновление) выполнять на
// другой странице
$query = "UPDATE user SET password = '$_REQUEST[password]'
WHERE user = '$_REQUEST[login]'";
mysql_query($query);
}
// Если такого пользователя нет в базе данных - вежливо
// предлагаем ему зарегистрироваться
else
{
echo "Пожалуйста, зарегистрируйтесь в системе...";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(11.08.2004 в 03:09)
| | | >Допустим у меня 2 пользователя в БД. 1-го завут "Аркадий" А
>2-го "Адоп Акробат" тогда я зашел под "Аркадием" и захотел
>изменить свой логин на "Адоп Акробат" то тогда ваш скрипт
>мне разрешит это??
Нет, этот скрипт изменит только пароль пользователя, и не изменит его имени
Да, наверное стоит разобрать более подробнее этот скрипт
<?php
// это файл upload.php
///////////////////////////////////////////////////////////
// Изменять данные посетителя мы можем лишь в том случае
// если соответствующая ему запись присутствует в таблице,
// поэтому запрашиваем запись в имени введённого посетителем
///////////////////////////////////////////////////////////
// Формируем SQL-запрос
$query = "SELECT * FROM user WHERE user='$_REQUEST[login]'";
// Выполняем SQL-запрос
$usr = mysql_query($query);
// Проверяем не было ли сбоев при выполнении запроса
// и вернула ли функция mysql_query() дескриптор запроса, а
// не false
if(!$usr)
{
echo "Ошибка в SQL-запросе";
exit()
}
// Если СУБД вернула результат - при помощи mysql_num_rows()
// проверяем количество записей в результате. Их может быть 0
// или 1. Первый случай означает то, что такой посетитель отсутствует
// в базе данных, если фунция вернёт 1 - имеется запись
// соотвествующая посетителю
if(mysql_num_rows($usr)>0)
{
// Обновляем данные посетителя при помощи
// SQL-оператора UPDATE
$query = "UPDATE user SET password = '$_REQUEST[password]'
WHERE user = '$_REQUEST[login]'";
mysql_query($query);
}
// Если такого пользователя нет в базе данных - вежливо
// предлагаем ему зарегистрироваться
else
{
echo "Пожалуйста, зарегистрируйтесь в системе...";
}
?>
|
Здесь следует обратить внимание на SQL-оператор UPDATE. Он изменяет запись раположенную в таблице user для полей расположенных за ключевым словом SET.
Пусть структура вашей таблице user следующая
user - имя пользователя
password - пароль
about - описание
email - e-mail
Тогда SQL-оператор UPDATE
UPDATE user SET about='Один из пользователей системы',
password = 'password',
email = 'someone@somehost.ru'
|
Изменит только поля password - пароль, about и email, оставив поле user не изменным, как я понял именно это и нужно. | |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(06.08.2004 в 05:01)
| | | вот сматрите у меня вот такие скриптики
этот скрипт делает чтобы можнобыло изменить данные
<?php
include ("connection.php") ;
$result = mysql_query("select * from users where login='$_SESSION[login]'", $connection);
$row = mysql_fetch_object($result);
echo "<form action='user_new_edit.php'>";
echo "<input type='hidden' name='user_id' value='$row->id'>";
echo "Логин:" . "<input type='text' name='user_login' value='$row->login'>" . "<br>";
echo "Пароль:" . "<input type='edit' name='user_password' value='$row->password'>" . "<br>";
echo "Яме:" . "<input type='edit' name='user_name' value='$row->name'>" . "<br>";
echo "Фамилия:" . "<input type='edit' name='user_fam' value='$row->fam'>" . "<br>";
echo "Возраст:" . "<input type='edit' name='user_date' cols='5' value='$row->date'>" . "<br>";
echo "?Пол:" . "<select name='user_sex'>" . "<option>?" . "<option>?" . "</select>" . "<br>";
echo "<input type='submit' value='Сахранить!'></form>";
?>
|
А вот этот скрипт обрабатывает эти формы
<?php
include ("connection.php");
$login1 = htmlspecialchars($_REQUEST["user_login"], ENT_QUOTES);
$password1 = htmlspecialchars($_REQUEST["user_password"], ENT_QUOTES);
$name1 = htmlspecialchars($_REQUEST["user_name"], ENT_QUOTES);
$fam1 = htmlspecialchars($_REQUEST["user_fam"], ENT_QUOTES);
$date1 = htmlspecialchars($_REQUEST["user_date"], ENT_QUOTES);
$sex1 = htmlspecialchars($_REQUEST["user_sex"], ENT_QUOTES);
$result = mysql_query("select * from users where id = $_REQUEST[user_id]", $connection);
$row = mysql_fetch_object($result);
[b]
$test = mysql_query ("select * from users where login='$login1'", $connection) ;
if(mysql_num_rows($test)>0)
{
echo "<br>Такой юзер уже сужествует!" . "<br>";
echo "<a href='user_edit.php'>Назат.</a>";
}[/b]
else
{
$query = mysql_query ("update users set login='".$login1."', password='".$password1."', name='".$name1."', fam='".$fam1."', date='".$date1."', sex='".$sex1."' where id=$row->id", $connection) ;
echo "Юзер созранен!!" . "<br>";
echo "<a href='index.php'>На главную!</a>";
}
?>
|
Мне надо чтобы если я не хочу изменять свой логин а хочу изменить свои данные .
Допустим я зашол под "Адоп Акробат" и хочу изменить мой пароль и возраст но не изменил свой логин и нажму сохранить то программа мне скажет точто такой юзер уже существует (а это я и есть).
Вот мне надо чтобы программа проверяла несовпадает ли логин с другими пользователями но не сомной | |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(11.08.2004 в 14:55)
| | | А где оператор INSERT? Может вот так:
<?php
include ("connection.php");
$login1 = htmlspecialchars($_REQUEST["user_login"], ENT_QUOTES);
$password1 = htmlspecialchars($_REQUEST["user_password"], ENT_QUOTES);
$name1 = htmlspecialchars($_REQUEST["user_name"], ENT_QUOTES);
$fam1 = htmlspecialchars($_REQUEST["user_fam"], ENT_QUOTES);
$date1 = htmlspecialchars($_REQUEST["user_date"], ENT_QUOTES);
$sex1 = htmlspecialchars($_REQUEST["user_sex"], ENT_QUOTES);
$test = mysql_query ("select * from users where login='$login1'", $connection) ;
if($test && mysql_num_rows($test)>0)
{
$except = mysql_fetch_object($test);
if($except->login == "Адоп Акробат")
{
// Обновляем данные для "Адоп Акробат"
$query = mysql_query ("update users
set password='".$password1."',
name='".$name1."',
fam='".$fam1."',
date='".$date1."',
sex='".$sex1."'
where login='$login1'", $connection);
if(mysql_query($query))
{
echo "Данные для пользователя 'Адоп Акробат' успешно обновлены" . "<br>";
echo "<a href='index.php'>На главную!</a>";
}
}
echo "<br>Такой юзер уже сужествует!" . "<br>";
echo "<a href='user_edit.php'>Назад.</a>";
}
else
{
// Если такого пользователя нет в базе данных
// добавляем его
if(mysql_query("INSERT INTO users VALUES('".$login1."',
'".$password1."',
'".$name1."',
'".$fam1."',
'".$date1."',
'".$sex1."'",
$connection)
{
echo "Юзер создан!!" . "<br>";
echo "<a href='index.php'>На главную!</a>";
}
else
{
echo "Ошибка при создании пользователя" . "<br>";
echo "<a href='index.php'>На главную!</a>";
}
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2004 в 15:23)
| | | Ребят, буду рад ошибиться, но мне кажется, что вы решаете разные задачи. Давайте еще раз точно определим - что надо сделать. | |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(11.08.2004 в 21:01)
| | | Да нет вроде всё нормально: есть форма и скрипт за ней - она регистрирует посетителей, если посетитель хочет ник, который имеется в системе - ему следует отказать. Но среди зарегистрированных посетителей есть один посетитель с исключительными правами, который введя свой логин и пароль может менять свои регистрационные данные - только вот про пароль мы как-то опустили :))) | |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2004 в 21:06)
| | | >если посетитель хочет ник, который имеется в системе - ему следует отказать.
А мне кажется - не только регистрация
Менять свои данные могут все. И могут менять даже логин, но нельзя изменять его на логин уже существующего пользователя
>Но среди зарегистрированных посетителей есть один посетитель с исключительными правами
В в этом то я и сомневаюсь :))
Адоп Акробат, рассуди нас пожалуйста :) | |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(11.08.2004 в 21:01)
| | | Давайте объявим мораторий на выкладывание кода пока не поставим задачу.
Попробую сделать это я.
Есть пользователи. Они могут менять свои данные, в том числе свои логин. Но при изменении своего логина надо сделать так, чтобы он не совпадал с логинами уже существующих пользователей. Так?
(Если так, то при обновлении нужно передавать и старый логин и новый. Тогда можно будет решить эту задачу) | |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(11.08.2004 в 21:09)
| | | >Есть пользователи. Они могут менять свои данные, в том числе
>свои логин. Но при изменении своего логина надо сделать так,
>чтобы он не совпадал с логинами уже существующих
>пользователей. Так?
Да так, этот скрипт у меня уже есть.
Но мне нужно, если я не хочу изменить свой логин, а хочу изменить другие данные, то мой скрипт скажет, что такой уже существует(а это я и есть), поэтому мой скрип обязует изменить свой логин, а если я его не изменю, то он скажет, то, что такой юзер уже существует. Понимаете в чем проблема??
Но если я изменил свой логин, то тогда программа должна проверять, есть такой юзер или нет. | |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(12.08.2004 в 04:25)
| | | Так, давайте по порядку.
>Но если я изменил свой логин, то тогда программа должна проверять, есть такой юзер или нет.
По этому пункту все понятно. Перефразирую: Если пользователь изменяет свои и данные и изменяет логин, то новый логин нужно проверить на совпадение с уже сущестующими. И если совпадает, то выводить об этом сообщение и запрещать изменять данные.
>Но мне нужно, если я не хочу изменить свой логин, а хочу изменить другие данные, то мой скрипт скажет, что такой уже существует(а это я и есть), поэтому мой скрип обязует изменить свой логин, а если я его не изменю, то он скажет, то, что такой юзер уже существует.
Вот здесь не до конца ясно. Но по моему подходим к решению…
Разбираем по порядку:
Пользователь менят свои данные, а логин менять не хочет. Логин остается старым.
Теперь скрипт обновления. При обновлении он проверяет логин на несовпадение с уже существующими. И вот здесь проблема! Так как логин не был изменен, то он будет найден в базе и изменения не пройдут. Так? | |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(12.08.2004 в 08:27)
| | | Ребятыможно я вклинюсь в вашу беседу и выскажу свое мнение.
Собствеено говоря у вас есть база пользователей, у каждого пользователя обычно есть уникальный номер, покрайней мере я обычно нумерую записи в базе autoincrement. Ну так вот и что тогда можно сделать Если пользователь Вася Пупкин зарегистрированный в базе хочет изменить свои данные все вплоть до Вася Пупкин на Ася Пупкина то мы апдейтом меняем все запрошенные данные в записи под помером который имел Вася предварительно конечно проверив не совпадает ли поле логин с такимже полем в записи с другим номером. И если не совпадает то благополучно меняем. А так как мы смотрим по номеру записи то у нас нет нужды сравнивать запись саму с собой.
То есть мы можем получить запрос такого вида.
<?php
$sql="update table set login=$login and pwd=$pwd and email=$email и т.д. where id=$id";
?>
|
Где $id это уникальный номер Васи Пупкина а $login, $pwd, $email и им подобные это те переменные которые записываются в базу.
Если я просто не врубился в тему извиняйте, но мне кажется так все можно решить. | |
| |
|
|
| |
|
|
| |
для: Адоп Акробат
(12.08.2004 в 04:25)
| | | Если я все правильно описан, то:
У вас в скрипте написано
<?
$result = mysql_query("select * from users where id = $_REQUEST[user_id]", $connection);
?>
|
Т.е. у каждого пользователя есть user_id – идентификатор пользователя и он не изменяется.
Тогда – нет проблем. Во втором запросе применяйте user_id, что бы исключить этого пользователя из проверки. Вот так
<?
$test = mysql_query ("select * from users where login='$login1' and user_id!=".$_REQUEST[user_id]." ", $connection) ;
?>
|
| |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(12.08.2004 в 08:34)
| | | Дизайнер большое вам человечиское спасиба!!
Извеняюсь за свою неграмотность. | |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(12.08.2004 в 08:34)
| | | доброго времени суток,извините,что вклиниваюсь в вашу беседу,но тем не менее,у меня возникла почти точно такая дилемма,помогите ее решить,она щас обсуждается в соседней ветке,помогите отладить скрипт,он указан в последнем ссобщении...
вот ссылочка
http://softtime.ru/forum/read.php?id_forum=1&id_theme=205&id_post=1443 | |
| |
|
|