package main import ( "database/sql" "fmt" "html/template" "log" "net/http" //"net/url" //"time" _ "github.com/mattn/go-sqlite3" ) //logowanie ------------ var loginFROMsite string var passwordFROMsite string //users --------------- var IDusers int var User string var Password string var PIN int var RFID int var Login string var Blokada bool var Koszt int //bilety --------------- var IDbiletu int var KtoZabral string var DataCzas string var KosztBiletu int var CzyZaplacony bool //dania --------------- var IDdania int var NazwaDania string var KosztDania int //*************************************************************************** //funkcje sterujące //*************************************************************************** //############################################################################# func opisStołówkaZPM(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("StronaGlowna.gtpl") t.Execute(w, nil) } //############################################################################# func panel(w http.ResponseWriter, r *http.Request) { //Here: //time.Sleep(3 * time.Second) /* //bilety ---------------------------------- db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows1, err := db.Query("SELECT * FROM bilety") checkErr(err) fmt.Fprintf(w, "Lista zabranych biletów: \n") for rows1.Next() { err = rows1.Scan(&IDbiletu, &KtoZabral, &DataCzas, &KosztBiletu) checkErr(err) fmt.Printf("%d. %s, %s, %d \n", IDbiletu, KtoZabral, DataCzas, KosztBiletu) } //---------------------------------- //dania ---------------------------------- rows2, err := db.Query("SELECT * FROM dania") checkErr(err) fmt.Fprintf(w, "Lista dań: \n") for rows2.Next() { err = rows2.Scan(&IDdania, &NazwaDania, &KosztDania) checkErr(err) fmt.Printf("%d. %s, %d \n", IDdania, NazwaDania, KosztDania) } //---------------------------------- rows1.Close() rows2.Close() db.Close() */ for _, cookie := range r.Cookies() { fmt.Fprint(w, cookie.Name) } fmt.Println("method:", r.Method) t, _ := template.ParseFiles("panel.gtpl") d := struct { UserView string }{ UserView: User} t.ExecuteTemplate(w, "panel.gtpl", d) } //############################################################################# func wylogowano(w http.ResponseWriter, r *http.Request) { //-------------------------------------------------- t, _ := template.ParseFiles("wylogowano.gtpl") d := struct { loginFROMsiteView string passwordFROMsiteView string IDusersView int UserView string PasswordView string PINView int RFIDView int LoginView string BlokadaView bool KosztView int IDbiletuView int KtoZabralView string DataCzasView string KosztBiletuView int IDdaniaView int NazwaDaniaView string KosztDaniaView int }{ loginFROMsiteView: "", passwordFROMsiteView: "", IDusersView: 0, UserView: "", PasswordView: "", PINView: 0, RFIDView: 0, LoginView: "", BlokadaView: Blokada, KosztView: 0, IDbiletuView: 0, KtoZabralView: "", DataCzasView: "", KosztBiletuView: 0, IDdaniaView: 0, NazwaDaniaView: "", KosztDaniaView: 0} t.ExecuteTemplate(w, "wylogowano.gtpl", d) } //############################################################################# func login(w http.ResponseWriter, r *http.Request) { //cookies start=================================================================== type Cookie struct { Login string Password string } //cookies end=================================================================== loginFROMsite := r.FormValue("loginFROMsite") passwordFROMsite := r.FormValue("passwordFROMsite") //zaloguj := "Zalogowano!" //************************************************************************** db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) // query rows0, err := db.Query("SELECT * FROM users") checkErr(err) for rows0.Next() { err = rows0.Scan(&IDusers, &User, &Password, &PIN, &RFID, &Login, &Blokada, &Koszt) checkErr(err) //fmt.Printf("%d. %s, %s, %d, %d, %s, %d, %d \n", IDusers, User, Password, PIN, RFID, Login, Blokada, Koszt) //fmt.Fprint(w, IDusers) //fmt.Fprint(w, ". ") //fmt.Fprint(w, User) //fmt.Fprint(w, " \n") //if r.Method == "POST" { if Login == loginFROMsite { if Password == passwordFROMsite { //fmt.Fprintln(w, zaloguj) //fmt.Fprintln(w, usernameFROMsite) //time.Sleep(3 * time.Second) //if zaloguj == "Zalogowano!" http.Redirect(w, r, "http://localhost:9197/panel", http.StatusSeeOther) panel(w, r) break } } //} } fmt.Println("method:", r.Method) if r.Method == "GET" { t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) //} else { r.ParseForm() //fmt.Println("usernameFROMsite: ", r.Form["usernameFROMsite"]) //fmt.Println("passwordFROMsite: ", r.Form["passwordFROMsite"]) //if len(r.Form["usernameFROMsite"][0]) == 0 { // goto Here //} //if len(r.Form["passwordFROMsite"][0]) == 0 { // goto Here //} } //obsługa blędnego wpisania loginu lub hasła if r.Method == "POST" { if loginFROMsite != Login { if loginFROMsite == "" { if passwordFROMsite != Password { t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) fmt.Fprint(w, "*** UWAGA! *** Błąd logowania! Login lub hasło nieprawidłowe. *** Spróbuj ponownie. ***") } } else { if passwordFROMsite != Password { t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) fmt.Fprint(w, "*** UWAGA! *** Błąd logowania! Login lub hasło nieprawidłowe. *** Spróbuj ponownie. ***") } } } } rows0.Close() db.Close() //************************************************************************** } //############################################################################# func historiaPosilkow(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("historiaPosilkowNaglowek.gtpl") d := struct { UserView string }{ UserView: User} t.ExecuteTemplate(w, "historiaPosilkowNaglowek.gtpl", d) //bilety ---------------------------------- db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows3, err := db.Query("SELECT * FROM bilety") checkErr(err) for rows3.Next() { err = rows3.Scan(&IDbiletu, &KtoZabral, &DataCzas, &KosztBiletu, &CzyZaplacony) checkErr(err) if KtoZabral == User { t, _ := template.ParseFiles("historiaPosilkow.gtpl") d := struct { IDbiletuView int KtoZabralView string DataCzasView string KosztBiletuView int CzyZaplaconyView bool }{ IDbiletuView: IDbiletu, KtoZabralView: KtoZabral, DataCzasView: DataCzas, KosztBiletuView: KosztBiletu, CzyZaplaconyView: CzyZaplacony} t.ExecuteTemplate(w, "historiaPosilkow.gtpl", d) } //---------------------------------- } rows3.Close() db.Close() } //############################################################################# func platnosci(w http.ResponseWriter, r *http.Request) { //fmt.Fprint(w, User) //bilety ---------------------------------- db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows5, err := db.Query("SELECT SUM(KosztBiletu)FROM bilety WHERE KtoZabral=?", User) if err != nil { fmt.Println(err) // os.Exit(1) } /* //for rows5.Next() { //err = rows5.Scan(&KtoZabral, &KosztBiletu) //checkErr3(err) if KtoZabral == User { t, _ := template.ParseFiles("platnosci.gtpl") d := struct { UserView string KosztBiletuViewSuma int }{ UserView: User, KosztBiletuViewSuma: } t.ExecuteTemplate(w, "platnosci.gtpl", d) //break } //---------------------------------- //} */ for rows5.Next() { rows5.Scan(&KtoZabral, &KosztBiletu) fmt.Printf("%v %v\n", KtoZabral, KosztBiletu) } rows5.Close() db.Close() } //*************************************************************************** //Obsługa błędów //*************************************************************************** func checkErr(err error) { if err != nil { fmt.Println("Błąd") } } func checkErr2(err error) { if err != nil { fmt.Println("Błąd dwa") } } func checkErr3(err error) { if err != nil { fmt.Println("Błąd trzy") } } //*************************************************************************** //funkcja główna //*************************************************************************** func main() { http.HandleFunc("/", opisStołówkaZPM) http.HandleFunc("/login", login) http.HandleFunc("/panel", panel) http.HandleFunc("/historiaPosilkow", historiaPosilkow) http.HandleFunc("/platnosci", platnosci) http.HandleFunc("/wylogowano", wylogowano) err := http.ListenAndServe(":9197", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } }