nieprawidłowy format ciągu wejściowego

nieprawidłowy format ciągu wejściowego
TH
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:6
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

Kopiuj
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ę

Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 14 godzin
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ę.

TH
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:6
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.

edytowany 1x, ostatnio: thinklen
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:dzień
  • Postów:2512
0

To zapytanie:

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

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

Kopiuj
string checkuser = "select 1 from uzytkownicy where email= '" + TextBoxlogin.Text + "'";
fourfour
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:627
0
Kopiuj
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 
edytowany 2x, ostatnio: fourfour
TH
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:6
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");

Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:dzień
  • Postów:2512
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?
edytowany 1x, ostatnio: Sarrus
TH
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:6
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).

Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:dzień
  • Postów:2512
0

Sprawdź po prostu co dostajesz w haslo

TH
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:6
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

Kopiuj
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?

edytowany 3x, ostatnio: thinklen
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)