Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Условие: если нет такого e_mail / 13 сообщений из 13, страница 1 из 1
29.05.2019, 20:42
    #39820058
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие: если нет такого e_mail
не могу сообразить в чем ошибка...
ели нет такого 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
30.05.2019, 02:33
    #39820129
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие: если нет такого e_mail
Как минимум, в этой строке фигня какая-то написанаавтор
Код: 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
30.05.2019, 18:40
    #39820457
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие: если нет такого e_mail
Это норм?
Код: plaintext
1.
    }
    } else {
...
Рейтинг: 0 / 0
30.05.2019, 20:47
    #39820478
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие: если нет такого e_mail
HettЭто норм?
Код: plaintext
1.
    }
    } else {
Там вложенный if, а отступы... да на кой они нужны... :(
...
Рейтинг: 0 / 0
30.05.2019, 22:10
    #39820498
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие: если нет такого e_mail
vkle,
не фигня а стандартный запрос... просто думал, что в php так же можно.. но как я понял вы тоже не ас..
...
Рейтинг: 0 / 0
30.05.2019, 22:17
    #39820500
VladimirVVP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие: если нет такого e_mail
спасибо за классные советы, я обсолютна серьезно, ребята - будьте проще!
если вы знаете ответ, то просто напишите его - форум для этого и создан, а не знаете, то просто пройдите мимо!
ели видите, что человет дуб, то посторайтесь прокоментировать, от Вас не убудет...

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

Код: 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
30.05.2019, 23:42
    #39820512
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие: если нет такого e_mail
VladimirVVPвыбираем в масив все поля из таблицы user где есть совпадения mail='$e_mail'
и потом просто сравниваемА в это время другая сессия вставляет такой же E-mail...

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

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

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

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

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

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

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

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

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

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

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

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

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


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