[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Непонятка с добавлением пользователя
Begmak
Здравствуйте!
Надеюсь не ошибся разделом=)
У меня задача такая, вывести список пользователей своего сайта, а так же добавить функцию "Добавить пользователя" (доступ для админов типа).
В этой форме 3 поля: "Имя", "Пароль", "Группа".


<form action="adduser.php" method="post">
<label>
Имя</label>
<input
name="login" type="text" size="15" maxlength="15"><br>
<label>
Пароль</label>
<input
name="password" type="password" size="15" maxlength="15"><br>
<label>
Группа</label>
<input
name="group" type="text" size="15" maxlength="15"><br>
<input
type="submit" name="submit" value="Добавить">
</form>



А это скрипт adduser.php:



<?php
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
if (isset($_POST['group'])) { $group=$_POST['group']; if ($group =='') { unset($group);} }

if (empty($login) or empty($password) or empty($group))
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}

$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$group = stripslashes($group);
$group = htmlspecialchars($group);
$login = trim($login);
$password = trim($password);



if (strlen($login) < 3 or strlen($login) > 15) {
exit ("Логин должен состоять не менее чем из 3 символов и не более чем из 15.");
}
if (strlen($password) < 3 or strlen($password) > 15) {
exit ("Пароль должен состоять не менее чем из 3 символов и не более чем из 15.");
}
if ($group!="Admin" or $group!="User" or $group!="Guest") {
exit ("Пользователь должен входить в одну из групп!");
}

include ("connect.inc.php");

$result = mysql_query("SELECT id FROM users WHERE login='$login'");
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit ("Такой логин уже существует! Введите другой логин.");
}
$result2=mysql_query ("INSERT INTO users (login,password,group) VALUES('$login','$password','$group')");

if ($result2=='TRUE')
{
echo "Пользователь успешно добавлен!<a href='index.php'>Главная страница</a>";
}
else {
echo "Ошибка! Добавить пользователя не получилось.";
}
?>



Проблема собственно следующая: Когда я отсылаю форму с назначенной группой(Например Admin) , то добавить в базу не получается, пишет что "Пользователь должен входить в одну из групп!". Если убрать проверку условия совпадения названия групп, то пишется "Ошибка!Добавить пользователя не удалось."

Самое интересное то, что если я уберу из формы поле "Группа", т.е. я буду вводить только Имя и Пароль, то все нормально заносится в базу (естественно,когда я в php закоментирую все полясвязанные с групой).

Уже часа два ныкаюсь и тыкаюсь.Я в этом деле новенький, вроде кучу всего перечитал,а толку ноль :( Может подскажете в чем дело?) Или хотя бы подтолкнете в нужном направлении,куда смотреть :)
Заранее спасибо:)



Спустя 4 минуты, 57 секунд (9.04.2012 - 22:33) h234 написал(а):
Цитата
"INSERT INTO users (login,password) VALUES('$login','$password','$group')"

Запрос некорректный

Спустя 1 минута, 5 секунд (9.04.2012 - 22:34) Begmak написал(а):
Опечатался когда писал сюда, щас подправил,результат один и тот же.

Спустя 2 минуты (9.04.2012 - 22:36) h234 написал(а):
При сравнении групп необходимо проверять на И (&&), а не на ИЛИ

if    (($group!="Admin") && ($group!="User") && ($group!="Guest")) {
exit ("Пользователь должен входить в одну из групп!");
}

Спустя 3 минуты, 21 секунда (9.04.2012 - 22:39) Begmak написал(а):
Ну я и растяпа:)Спасибо!
Так...одной бедой меньше стало, но все равно пишет что "Ошибка!Пользователя добавить не поулчилось"

Щас буду смотреть по новой,теперь я не буду упираться в проверку:)

Спустя 11 минут, 46 секунд (9.04.2012 - 22:51) h234 написал(а):
Какая структура таблицы users ?

Спустя 3 минуты, 11 секунд (9.04.2012 - 22:54) Begmak написал(а):
Один фик не понятно sad.gif

Таблица users состоит из полей id,login,password,group (у последних 3х полей тип varchar, если это имеет какое то значение)


Пперед глазами есть работающий скрипт ,такой же,но без группы,и все работает,вот хоть тапочком убейте,не вижу в чем загвоздка sad.gif


Спустя 9 минут, 54 секунды (9.04.2012 - 23:04) h234 написал(а):
Такой код выполнится?
$result2=mysql_query ("INSERT INTO `users` (`login`, `password`, `group`) VALUES ('123', '456', '789')");

if ($result2)
{
echo "Пользователь успешно добавлен!<a href='index.php'>Главная страница</a>";
}
else {
echo "Ошибка! Добавить пользователя не получилось.";
}

Спустя 2 минуты, 8 секунд (9.04.2012 - 23:06) Begmak написал(а):
Угу,работает.

Спустя 7 минут, 8 секунд (9.04.2012 - 23:13) h234 написал(а):
Попробуй так
$result2=mysql_query ("INSERT INTO `users` (`login`, `password`, `group`) VALUES ('" . $login . "','" . $password . "','" . $group ."')");

Спустя 2 минуты, 53 секунды (9.04.2012 - 23:16) Begmak написал(а):
Работает !!!

В чем же дело получается?

Спустя 1 минута, 35 секунд (9.04.2012 - 23:18) h234 написал(а):
Название таблиц и полей стоит обрамлять косыми кавычками!

Спустя 2 минуты, 42 секунды (9.04.2012 - 23:21) Begmak написал(а):
Хм...тогда почему работает когда без группы?smile.gif

Если глупый вопрос,прошу простить,все мозги атрофировались:)
Тогда пойду читать мануал по командам smile.gif

Спустя 11 минут, 47 секунд (9.04.2012 - 23:32) h234 написал(а):
Вообще косыми кавычками обрамляют для того, что бы Mysql понял где поле, а где зарезервированное слово. А group как раз таковое и является!

Спустя 12 минут, 11 секунд (9.04.2012 - 23:45) Begmak написал(а):
Ааааа,вот оно в чем дело...
Чтож,большое спасибо Вам за разъяснения и помощь !=)

Быстрый ответ:

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