powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Условие: если нет такого e_mail
13 сообщений из 13, страница 1 из 1
Условие: если нет такого e_mail
    #39820058
VladimirVVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не могу сообразить в чем ошибка...
ели нет такого e_mail то создать запись (но запись создается даже если есть такой e_mail)

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<?php
$response = array();

if (isset($_POST['login']) && isset($_POST['pass']) && isset($_POST['e-mail'])) {
   
    require 'random_idService.php';
    $login = $_POST['login'];
    $password = $_POST['pass'];
    $e_mail = $_POST['e-mail'];
    $id_Service = $rand;

    require 'db_connect.php';

    $db = new DB_CONNECT();
    
    if (mysql_query("SELECT mail FROM user") !== $e_mail) { 
    
    $result = mysql_query("INSERT INTO user(login, password, mail, idService) VALUES('$login', '$password', '$e_mail', '$id_Service')");

    if ($result) {
        $response["success"] = 1;
        $response["message"] = $rand;

        echo json_encode($response);
    } else {
        $response["success"] = 0;
        $response["message"] = "Oops! An error occurred.";

        echo json_encode($response);
    }
    } else {
        $response["message"] = "such email already exists";
        echo json_encode($response);
    }
} else {
    $response["success"] = 4;
    $response["message"] = "Обязательные поля отсутствуют";

    echo json_encode($response);
}
?>
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820129
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как минимум, в этой строке фигня какая-то написанаавтор
Код: php
1.
    if (mysql_query("SELECT mail FROM user") !== $e_mail) { 

, ибо в данном случае https://www.php.net/manual/ru/function.mysql-query.php mysql_query() возвращает дескриптор результата запроса (resource), или FALSE в случае ошибки.

Дальше не читал.
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820457
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это норм?
Код: plaintext
1.
    }
    } else {
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820478
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЭто норм?
Код: plaintext
1.
    }
    } else {
Там вложенный if, а отступы... да на кой они нужны... :(
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820498
VladimirVVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,
не фигня а стандартный запрос... просто думал, что в php так же можно.. но как я понял вы тоже не ас..
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820500
VladimirVVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за классные советы, я обсолютна серьезно, ребята - будьте проще!
если вы знаете ответ, то просто напишите его - форум для этого и создан, а не знаете, то просто пройдите мимо!
ели видите, что человет дуб, то посторайтесь прокоментировать, от Вас не убудет...

нашел интересный и главоне рабочий вариант

Код: php
1.
2.
3.
$a = mysql_query("SELECT COUNT(1) FROM user WHERE mail='$e_mail'");
    $b = mysql_fetch_array( $a );
     if ($b[0] == 0) {


выбираем в масив все поля из таблицы user где есть совпадения mail='$e_mail'
и потом просто сравниваем
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820512
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVPвыбираем в масив все поля из таблицы user где есть совпадения mail='$e_mail'
и потом просто сравниваемА в это время другая сессия вставляет такой же E-mail...

Если реально нужна уникальность этого поля, так создайте уникальный ключ из него.
Тогда перед вставкой проверять не надо, достаточно либо ошибку обрабатывать, либо вставлять с игнором ошибки нарушения ключа (INSERT IGNORE).
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820518
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVPне фигня а стандартный запрос...Хех, ладно, по порядку.

Ваш запрос выбирает поле mail из ВСЕХ записей таблицы user.

У тут сразу вопрос: нафига Вам все записи, хоть и представлены они лишь одним полем?
Ну ладно, получили на клиенте 100500 строк данных, а дальше что с этим добром делать - прикинуться скульптром и отсечь от глыбы всё лишнее? Согласен, глупое предположение.
Вот внятных и по делу у меня нет вообще никаких предположений по поводу данного запроса и результата его работы. И действительно, Вы ничего с результатом этого запроса не делаете, как будто он Вам и не нужен.

Потрудитесь уж объяснить, что если это не фигня какая-то, то что именно должно в этом месте кода происходить.

Про сравнение ресурса и строки с учетом типа данных, надеюсь, понятно, что такие вещи не сравниваются.

VladimirVVPпросто думал, что в php так же можно..Так же, как ГДЕ можно? Если можно, с примером.
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820546
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVPvkle,
не фигня а стандартный запрос... просто думал, что в php так же можно.. но как я понял вы тоже не ас..

Стандартный запрос со стандартной sql инъекцией
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820612
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettсо стандартной sql инъекцией
Не, в том бесполезном запросе такого не было. Так стало позже, вместе с "рабочим" вариантом. :)

Почему в кавычках? Да потому, что даже с использованием и этого кода, нет проверки текста из поля e_mail на предмет соответствия понятию "адрес электронной почты", если конечно нужно проверить именно адрес электронной почты, а не "существует ли в базе некоторый заданный произвольный текст". Старый код тоже не решал эту задачу.

Вообще, странно, что функции фильтрации/валидации данных https://www.php.net/manual/ru/book.filter.php почти не встречаются на форуме, хотя известны лет десять, не меньше. Зато постоянно встречаеются mysql_*, которыми уже лет десять как не рекомендуют пользоваться. Неужели, студентам преподают нынче по учебникам овердесятилетней давности?

И, да, в нескольких различных записях в поле login допускаются одинаковые значения, при условии, что произвольный текст в поле e_mail различается? ;-) Если так, тогда побежали все региться под одним логином! А вот кому потом залогиниться удастся - это вопрос пока не вполне однозначный.
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820765
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

В инсерте в первом посте
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820797
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Тот инсерт как раз вполне полезный, а не "фигня какая-то", о которой и было сказано, что она "стандартный запрос". В селекте на тот момент не было причин для инъекций. После обновления до состояния "рабочий вариант" - есть.
...
Рейтинг: 0 / 0
Условие: если нет такого e_mail
    #39820820
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

А я и не говорил про "фингя", я про инъекции говорил :)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Условие: если нет такого e_mail
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]