0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 12

Проверка логина на уникальность

18.12.2013, 16:23. Показов 8041. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два файла :

user.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
require_once 'DB.php';
 
function create_user($user) {
    $connection = db_connect();
    $s = $connection->prepare(<<<SQL
INSERT INTO table.users
(
    login,
)
VALUES (?)
SQL
    );
    
    $s->execute(array(
        $user['login']));           
}
И файл обработки формы:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require_once 'user.php';
 
$messages = array();
 
if ('POST' === $_SERVER['REQUEST_METHOD']) {
    if (empty($_POST['login'])) {
        $messages[] = 'Вы должны ввести логин';
    }
  
    $connection = db_connect();
    $statement = $connection->prepare('SELECT COUNT(*) FROM table.users WHERE login=?');
    $statement->execute($login);
    $loginCount = $statement->fetch();
    if ($loginCount > 0) {
        $messages[] = 'Такой пользователь уже есть';
    }
Выдает ошибку на строчку $statement->execute($login); с текстом Undefined variable: login . Как это исправить??
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.12.2013, 16:23
Ответы с готовыми решениями:

Проверка логина из формы на наличие логина в базе данных
Пожалуюста подскажите что у меня неправильно работает в коде. Ошибок вродебы нет. Вообщем код должен получать данные из формы записывать их...

Ошибка проверки логина на уникальность в Mysql через jquery-ajax
Здравсвуйте ув. программисты! Я начинающий не бейте больно :) Есть страница регистрации с полем логина &quot; index.php &quot;. ...

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

13
Иллюзионист
 Аватар для philin
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
18.12.2013, 16:31
Для начала прочитать ошибку и посмотреть в код. "Undefined variable: $login" - "необъявленная переменная $login". $login нигде не присваивается значение, переменная попросту не существует — из нее нельзя ничего прочитать.
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 12
18.12.2013, 17:37  [ТС]
Цитата Сообщение от philin Посмотреть сообщение
Для начала прочитать ошибку и посмотреть в код. "Undefined variable: $login" - "необъявленная переменная $login". $login нигде не присваивается значение, переменная попросту не существует — из нее нельзя ничего прочитать.
ну а если сделать так $login = $user['login']

Добавлено через 59 минут
Ну хоть кто-нибудь скажите как решить эту ошибку
0
10 / 10 / 2
Регистрация: 18.05.2013
Сообщений: 21
18.12.2013, 19:47
Ирина, не могли бы вы выложить норм код и сказать что вы хотите сделать? такое впечатление что у вас тут не одна ошибка, а их много.
Выложите целиком свой скрипт и форму, чтоб можно было запустить и посмотреть, db.php только не надо
1
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 12
18.12.2013, 19:58  [ТС]
Цитата Сообщение от TerMih Посмотреть сообщение
Ирина, не могли бы вы выложить норм код и сказать что вы хотите сделать? такое впечатление что у вас тут не одна ошибка, а их много.
Выложите целиком свой скрипт и форму, чтоб можно было запустить и посмотреть, db.php только не надо
Файл user.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function create_user($user) {
    $connection = db_connect();
    $s = $connection->prepare(<<<SQL
INSERT INTO table.users
(
    login,
)
VALUES (?)
SQL
    );
    
    $s->execute(array(
        $user['login']));
        
}
Файл обработки

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
require_once 'user.php';
 
$messages = array();
 
if ('POST' === $_SERVER['REQUEST_METHOD']) {
    if (empty($_POST['login'])) {
        $messages[] = 'Вы должны ввести логин';
    }
    
    $connection = db_connect();
    $statement = $connection->prepare('SELECT COUNT(*) FROM table.users WHERE login=?');
    $statement->execute([$login]);
    $loginCount = $statement->fetch()[0];
    if ($loginCount > 0) {
        $messages[] = 'Такой пользователь уже есть';
    }
    if (!$messages) {
        create_user($_POST);        
        die;
    }
}
Ошибку выдает на строке : $statement->execute([$login]); Undefined variable: login , я не знаю как ее правильно объявить
0
Иллюзионист
 Аватар для philin
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
18.12.2013, 20:06
Зачем лезть в сложные структуры, если основы непонятны...
Чтобы взять данные из $login, нужно их туда сначала положить. Где это действие?
11 строка составляет SQL-запрос, 12 подставляет в него логин. А логин лежит в $_POST['login'], он пришел из формы. Хотите читать именно из $login - запишите в него данные сначала.
PHP
1
$login = $_POST['login'];
1
10 / 10 / 2
Регистрация: 18.05.2013
Сообщений: 21
18.12.2013, 20:12
Я так понимаю вы работаете с cms drupal? я с нею к сожалению не знаком, но
PHP
1
$statement = $connection->prepare('SELECT COUNT(*) FROM table.users WHERE login=?');
Похоже на параметризованные запросы, тут вы подготавливаете запрос.

PHP
1
$statement->execute([$login]);
Тут вы выполняете запрос, но скорей всего вам надо было сделать так

[PHP]$statement = $connection->prepare('SELECT COUNT(*) FROM table.users WHERE login=?');
(функция примерно такого содержания)bind_param ($login)
$statement->execute();

Наверно так, суть bind_param в том что вы подставляете значение в запрос за место '?', а execute уже выполняет запрос, и проверьте чтоб $login имела значение, к примеру var_dump($login);

philin, а я совсем не прав?
1
10 / 10 / 2
Регистрация: 18.05.2013
Сообщений: 21
18.12.2013, 21:43
Сделал, напишу сюда, во первых у шаблона формы я не увидел action, в ваш скрипт обработки, во вторых
PHP
1
2
3
4
5
6
7
8
 $statement = $connection->prepare('SELECT COUNT(*) as count FROM users WHERE login=?');
    $login = $_POST['login'];
    $statement->execute(array($login));
    $loginCount = $statement->fetch(PDO::FETCH_ASSOC);
    print_r($loginCount);
    if ($loginCount['count'] > 0) {
        echo  'Идите лесом! Такой пользователь у нас уже есть!';
    }
В третьих у вас не правильные регулярные выражения) как минимум это к телефону, остальное не смотрел)
1
52 / 14 / 7
Регистрация: 29.09.2012
Сообщений: 90
18.12.2013, 22:37
А у меня как- то так)) Думаю тоже не плохо, да и работает отлично!
PHP
1
2
3
4
5
6
7
$result = mysql_query("SELECT * FROM users ORDER BY id");
    $kol = mysql_num_rows($result);
            while ( $postrow[] = mysql_fetch_array($result))
            for($i = 0; $i < $koll; $i++)
                if($_POST['login'] == $postrow[$i]['login'])
                    echo "Пользователь с таким логином уже существует";
    }
1
10 / 10 / 2
Регистрация: 18.05.2013
Сообщений: 21
18.12.2013, 22:51
Ваш вариант не очень хорош, в php версии > 5.3 mysql нет, поэтому надо использовать mysqli или pdo api, да и доведите до ума параметризованные запросы чтобы обезопасить себя от sql инъекций.
PHP
1
2
3
4
5
6
7
$result = mysql_query("SELECT * FROM users ORDER BY id");
    $kol = mysql_num_rows($result);
            while ( $postrow[] = mysql_fetch_array($result))
            for($i = 0; $i < $koll; $i++)
                if($_POST['login'] == $postrow[$i]['login'])
                    echo "Пользователь с таким логином уже существует";
    }
И вообще у вас лишние действия, код может и работает, но ваш for тут ни к чему. И у вас не работает код)
PHP
1
2
$kol = mysql_num_rows($result);
for($i = 0; $i < $koll; $i++)
$koll или $kol?
P.s а спасибо не будет?)
2
52 / 14 / 7
Регистрация: 29.09.2012
Сообщений: 90
18.12.2013, 22:59
Цитата Сообщение от TerMih Посмотреть сообщение
Ваш вариант не очень хорош, в php версии > 5.3 mysql нет, поэтому надо использовать mysqli или pdo api, да и доведите до ума параметризованные запросы чтобы обезопасить себя от sql инъекций.
PHP
1
2
3
4
5
6
7
$result = mysql_query("SELECT * FROM users ORDER BY id");
    $kol = mysql_num_rows($result);
            while ( $postrow[] = mysql_fetch_array($result))
            for($i = 0; $i < $koll; $i++)
                if($_POST['login'] == $postrow[$i]['login'])
                    echo "Пользователь с таким логином уже существует";
    }
И вообще у вас лишние действия, код может и работает, но ваш for тут ни к чему. И у вас не работает код)
PHP
1
2
$kol = mysql_num_rows($result);
for($i = 0; $i < $koll; $i++)
$koll или $kol?
P.s а спасибо не будет?)
Ну и немного подумав сделал вывод что так будет ещё проще)
PHP
1
2
3
4
$row = mysql_num_rows($query);
if($row > 0){
echo"Такой пользователь уже существует!";
}
1
Иллюзионист
 Аватар для philin
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
18.12.2013, 23:05
Еще сократим?)
PHP
1
2
if (mysql_num_rows($query) > 0)
    echo "Такой пользователь уже существует!";
1
10 / 10 / 2
Регистрация: 18.05.2013
Сообщений: 21
18.12.2013, 23:05
У вас какой то странный вывод, вы выполнили какой-то запрос и посмотрели сколько строк он вам вернул, но вы уже не используете pdo как использовали раньше, у вас же уже почти все было написано и все работало, делайте как считаете нужным и еще регулярка для телефона не правильна, она в любом случае на норм телефон будет записывать ошибку.
1
52 / 14 / 7
Регистрация: 29.09.2012
Сообщений: 90
18.12.2013, 23:27
Цитата Сообщение от TerMih Посмотреть сообщение
У вас какой то странный вывод, вы выполнили какой-то запрос и посмотрели сколько строк он вам вернул, но вы уже не используете pdo как использовали раньше, у вас же уже почти все было написано и все работало, делайте как считаете нужным и еще регулярка для телефона не правильна, она в любом случае на норм телефон будет записывать ошибку.
PHP
1
$query = mysql_query("SELECT * FROM `users`  WHERE `login`='".$_POST['login']."'");
Вот и весь запрос)
А прошлый там переделывать надо еще много. он выводить та будет сообщение об ошибке столько сколько пользователей) тоесть в зыкли ещё одну проверочку и break)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2013, 23:27
Помогаю со студенческими работами здесь

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

Проверка на существование логина
if (!mysql_query(&quot;SELECT `login` FROM `r_users` WHERE `login` = '&quot;.$login.&quot;'&quot;)) { mysql_query(&quot;INSERT INTO `r_users` SET...

Проверка на существование логина в БД
Хочу при регистрации проверить, есть ли пользователь с таким логином. $sql = mysql_query(&quot;SELECT * FROM users WHERE login=$login LIMIT...

Проверка наличия логина
Всем привет, нуждаюсь в помощи. Создал форму регистрации, связал с базой данных. Хочу создать проверку наличия введенного логина в базе...

PHP 7 Проверка Логина
Всем привет! У меня возникла проблема.Я создал форму для регистрации,она работает,но я не могу нормально реализовать проверку логина...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru