Создание формы входа в C # с MySQL сервером (основная проблема)? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть форма входа в C # Winforms с кнопкой входа (как показано на скриншоте). Я хочу нажать кнопку, чтобы проверить, существует ли пользователь с данным именем. Я делаю это с помощью следующего фрагмента кода (я отправляю только необходимый код):

При условии, что второе поле в моей таблице users в базе данных username, поэтому при условии, что IsDBNull() имеет аргумент 1 (если мы посчитаем от 0), я хотел бы спросить, что я делаю неправильно, потому что там такой пользователь, то есть поле не является нулевым, но вторая форма, которую я хочу показать, не хочет открываться. Я хотел бы спросить, почему это так?

скриншот входа в систему

1 Ответ

0 голосов
/ 09 ноября 2018

Если SQL находится на веб-сервере (даже XAMPP), я бы порекомендовал выводить информацию через PHP. Это также оставляет его открытым для сравнения паролей для логинов и т. Д. Через библиотеку webRequest. Я бы не рекомендовал использовать этот код в финальной версии, но вместо этого я бы порекомендовал использовать его для тестирования и сборки.

Для работы кода вам понадобится несколько вещей:

  • Любой веб-сервер, XAMPP подходит для локального тестирования, так как поставляется с Apache и phpMyAdmin
  • База данных SQL с как минимум разделом с именем пользователя с одним элементом, введенным в нее

После этого просто добавьте следующий код, обновите ссылку в разделе var webRequest кода C # и перейдите оттуда!

В верхней части вашего C # вам необходимо указать: using System.Net;

C # loginButton_onClick

// Connects to the website
var webRequest = WebRequest.Create("http://yourwebsite.com/programLogin.php?username=" + textBox1.Text);
using (var response = webRequest.GetResponse())
using (var content = response.GetResponseStream())
using (var reader = new StreamReader(content))
{
    // This gets all of the info given out by the website
var info = reader.ReadToEnd();

    // Comparing to expected outputs
    if (info == "User found in the database")
    {
        MessageBox.Show("Username Exists", "Login Form");
    }
    else if (info == "Username not found")
    {
        MessageBox.Show("Username Not Found", "Login Form");
    }
    else
    {
        // This will most likely only thow if the website is down OR if there is a HTTP error 500 OR unsuccessful login to the database
        MessageBox.Show("Unknown Error", "Login Form");
    }
}

programLogin.php

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "database";

$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn)
{
    die("Connection failed: " . mysqli_connect_error());
}

$user = $_GET['username'];

if (isset($user))
{
    $sql = "SELECT username FROM users WHERE username='$user'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0)
    {
        while($row = $result->fetch_assoc())
        {
            // $row['username']; will show the informaiton from the database;
            echo "User found in the database";
        }
    }
    else
    {
        echo "Username not found";
    }
}
?>

Если это не ответит на ваш вопрос, отправьте мне еще немного информации о том, что нужно для вашей программы, и я свяжусь с вами с помощью справки / ресурсов!

Этот код не проверен

Редактировать: добавлено необходимое использование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...