nieprawidłowy format ciągu wejściowego

0

Witam
Mam o to taki problem. W swojej aplikacji podczas próby logowania dostaje błąd "nieprawidłowy format ciągu wejściowego".
Zmieniałem już opcje regionalne ale to nie skutkuje kod wygląda tak

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Globalization;



namespace Library
{
    public partial class logowanie : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

  
        protected void Button5_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString);
            con.Open();
            string checkuser = "select email, haslo from uzytkownicy where email= '" + TextBoxlogin.Text + "'";
            SqlCommand com = new SqlCommand(checkuser, con);
            string currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
            CultureInfo ci = new CultureInfo(currentCulture);
            //Ustawiamy nowy format
            ci.NumberFormat.NumberDecimalSeparator = ".";
            System.Threading.Thread.CurrentThread.CurrentCulture = ci;
            int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
            con.Close();
            if (temp == 1)
            {
                con.Open();
                string checkPasswordQuery = "Select haslo, email from uzytkownicy where email='" + TextBoxlogin.Text + "'";
                SqlCommand passcom = new SqlCommand(checkPasswordQuery, con);
                string haslo = passcom.ExecuteScalar().ToString();
                if (haslo == TextBoxhaslo.Text)
                {
                  
                    Session["New"] = TextBoxlogin.Text;
                   Response.Redirect("panel uzytkownika.aspx");
                }
                else
                {
                    Response.Write("haslo nie jest git");
                }

            }
            else
            {
                Response.Write("login nie jest git");
            }
        }

        private void Replace(string p1, string p2)
        {
            throw new NotImplementedException();
        }

        private void Replace()
        {
            throw new NotImplementedException();
        }
         
            }
                } 

W miejsce int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
wstawiałem
int temp = Convert.ToInt32(com.ExecuteScalar().ToString().Replace(",","."));
ale to też nic nie działa. Proszę o jakąś radę

0

W której konkretnie linii jest rzucany wyjątek o nieprawidłowym ciągu wejściowym? Tam gdzie masz Convert? A próbowałeś zobaczyć, co naprawdę kryje się pod com.ExecuteScalar().ToString(), bo może to nie jest liczba?

Bo wydaje mi się, że wykonujesz select email, haslo from uzytkownicy czyli pobierasz e-mail oraz hasło, a następnie ten e-mail próbujesz skonwertować na liczbę.

0

Program zaznacza mi tą linijkę

int temp = Convert.ToInt32(com.ExecuteScalar().ToString());

Pisałem to z poradnikiem. Wydaje mi się że różnią się tylko nazwy tabel i kolumn od tych z poradników.

0

To zapytanie:

string checkuser = "select email, haslo from uzytkownicy where email= '" + TextBoxlogin.Text + "'";

myślę, że chciałeś napisać tak:

string checkuser = "select 1 from uzytkownicy where email= '" + TextBoxlogin.Text + "'";
0
string checkuser = "select count(*)  from uzytkownicy where email= '" + TextBoxlogin.Text + "'";  
(..)
string checkPasswordQuery = "Select haslo, email from uzytkownicy where email='" + TextBoxlogin.Text + "'" + haslo= + ... tu wartość z Twojego textbox z hasłem;
int haslo = (Int32) Convert.ToInt32(passcom.ExecuteScalar().ToString()) ; // i jeśli 1 to się zgadza, a jeśli nie to nie 
0

Teraz działa (przynajmniej nie wyrzuca błędów) ale nie wiem czemu nie przechodzi na stronę którą tam zaznaczyłem
Response.Redirect("panel uzytkownika.aspx");

0
thinklen napisał(a):

Teraz działa (przynajmniej nie wyrzuca błędów) ale nie wiem czemu nie przechodzi na stronę którą tam zaznaczyłem
Response.Redirect("panel uzytkownika.aspx");

Serio? Masz spację w nazwie strony? Powiedz jeszcze, że plik też ma spację i klasa może też? Jeżeli w ogóle jest to możliwe, to radzę unikać takich dziwności.

Poza tym, strasznie dziwnie się za to zabierasz. Przy sprawdzaniu haseł są pewne zasady, które każdy intuicyjnie stosuje:

  1. Hasła w bazie powinny mieć postać zahashowaną! Nie trzymamy haseł w postaci czystego tekstu!
  2. Hasło powinno być wysyłane do bazy i powinno być porównywane w bazie. Ty teraz wysyłasz z bazy na serwer WWW hasło dla użytkownika (i to w postaci jawnej!), którego mail został wpisany. Mało bezpieczne wiesz?
0

Tworzę aplikację w celach edukacyjnych nie komercyjnych. Jeszcze do hashowania haseł to mi daleko :D. W nazwach plików jak najbardziej mogą być spacje (mogą znaczy program nie wyrzuca mi żadnych błędów).

0

Sprawdź po prostu co dostajesz w haslo

0

zakładam że masz namyśli haslo w bazie danych. Już się trochę pogubiłem w tym wszystkim. W chwili obecnej po podaniu loginu, hasła i wciśnięciu nie dzieje się nic. przyczym jeszcze jedna rzecz nie daje mi spokoju. po wejściu na podstrona z logowaniem nie mogę z niej wyjść tzn. próbuje w menu kliknąć "głóna" ale wtedy tylko wyświetlają mi się ostrzeżenia z validatorów. Czy jest jakaś specjalna opcja przy validatorach która za to odpowiada?

zmieniłem trochę kod

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Globalization;
using System.Data;



namespace Library
{
    public partial class logowanie : System.Web.UI.Page
    {
        SqlConnection conn;
        SqlCommand cmd;
        SqlDataReader read;
        protected void Page_Load(object sender, EventArgs e)
        {

        }

  
        protected void Button5_Click(object sender, EventArgs e)
        {
           if (Page.IsValid)
            {
                conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString);
                conn.Open();

                cmd = new SqlCommand("SELECT * FROM uzytkownicy WHERE email=@email and haslo=@haslo");
                cmd.Parameters.Add("@email", SqlDbType.NVarChar);
                cmd.Parameters["@email"].Value = TextBoxlogin.Text;
                cmd.Parameters.Add("@haslo", SqlDbType.NVarChar);
                cmd.Parameters["@haslo"].Value = TextBoxhaslo.Text;
                cmd.Connection = conn;

                read = cmd.ExecuteReader();

                bool status = read.Read();

                
                    if (CheckBox1.Checked == true)
                    {
                        Label2.Text = "Zalogowano poprawnie";
                    }


                    else
                    {
                        Label1.Text = "Podany login i/lub hasło są niepoprawne";
                    }
                    string checkPasswordQuery = "Select haslo from uzytkownicy where email='" + TextBoxlogin.Text + "'";
                    SqlCommand passcom = new SqlCommand(checkPasswordQuery, conn);
                    string haslo = passcom.ExecuteScalar().ToString();
                    if (haslo == TextBoxhaslo.Text)
                    {

                        Session["New"] = TextBoxlogin.Text;
                        Response.Redirect("panel uzytkownika.aspx");
                    }
                    else
                    {
                        Response.Write("haslo nie jest git");
                    }

                }
                else
                {
                    Response.Write("login nie jest git");
                }
                    read.Close();
                    conn.Close();
                }
        }


            }
                
 

i chociaż podaję dobre hasło dalej nie loguje. Czytałem gdzieś tu na forum na temat autoryzacji dostępu do jakiś strony w projekcie. Czy jest możliwe aby do panelu użytkownika i panelu administratora dostęp można było uzyskać poprzez sprawdzenie czy osoba logująca się jest administratorem czy nie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1