toomanysugar преди 3 години
ревизия
29481fc08b
променени са 7 файла, в които са добавени 245 реда и са изтрити 0 реда
  1. 172 0
      main.go
  2. 0 0
      www/game.html
  3. 41 0
      www/index.html
  4. 0 0
      www/leaderboard.html
  5. 21 0
      www/login.html
  6. 0 0
      www/myscores.html
  7. 11 0
      www/signin.html

+ 172 - 0
main.go

@@ -0,0 +1,172 @@
+
+package main 
+
+import (
+	"log"
+	"database/sql"
+	"os"
+	"time"
+	"fmt"
+	"net/http"
+	"html/template"
+	"github.com/gorilla/mux"
+	"github.com/gorilla/sessions"
+
+	_ "github.com/go-sql-driver/mysql"
+
+)
+
+type Page struct {
+    Title string
+    Body  []byte
+}
+
+var (
+	logger	*log.Logger
+	sessionsStore = sessions.NewCookieStore([]byte("mysecretcookie"))
+	indexTemplate = template.Must(template.ParseFiles("www\\index.html"))
+	logInTemplate = template.Must(template.ParseFiles("www\\login.html"))
+	signInTemplate = template.Must(template.ParseFiles("www\\signin.html"))
+)
+
+func indexHandler(w http.ResponseWriter, r *http.Request) {
+	data := struct {
+		User string
+		Title string
+		Items []string
+	}{
+		User: "",
+		Title: "My page",
+		Items: []string{
+			"My photos",
+			"My blog",
+			"More",
+		},
+	}
+	
+
+	session, _ := sessionsStore.Get(r, "session")
+
+	var (
+		password string
+		ok3 bool
+	)
+
+	untyped, ok := session.Values["username"]
+	if ok {
+		username, ok1 := untyped.(string)
+		if ok1 {
+			data.User = username
+			untyped, ok2 := session.Values["password"]
+			if ok2 {
+				password, ok3 = untyped.(string)
+				
+			} 
+		}
+	} 
+	
+
+	indexTemplate.Execute(w, data)
+
+	if ok3 {
+		w.Write([]byte(password))
+	}
+
+}
+
+func indexPostHandler(w http.ResponseWriter, r *http.Request) {
+	fmt.Print("POST")
+}
+
+func logInGetHandler(w http.ResponseWriter, r *http.Request) {
+	logInTemplate.Execute(w, nil)
+}
+
+func logInPostHandler(w http.ResponseWriter, r *http.Request) {
+	r.ParseForm()
+	username := r.PostForm.Get("username")
+	password := r.PostForm.Get("password")
+
+	//dBConnector.
+	
+	db, err := sql.Open("mysql", "gosite:gositepassword@tcp(192.168.48.5)/gosite")
+
+	if err != nil {
+		fmt.Print("Error")
+		panic(err)
+	}
+
+	defer db.Close()
+
+	var counter int
+
+	act_query := "SELECT count(*) FROM gosite.users WHERE username='" + username + "' AND password='" + password + "';"
+	db.QueryRow(act_query).Scan(&counter)
+	fmt.Println("we have", counter, "rows")
+    
+    if (counter == 0) {
+    	logInTemplate.Execute(w, nil)
+    	return
+    }
+
+    session, _ := sessionsStore.Get(r, "session")
+	session.Values["username"] = username
+	session.Values["password"] = password
+
+	session.Save(r,w)
+	fmt.Printf("%s\n%s\n",username,password)
+	http.Redirect(w, r, "/", http.StatusFound)
+}
+
+func signInHandler(w http.ResponseWriter, r *http.Request) {
+	signInTemplate.Execute(w, nil)
+}
+
+func pressHandler(w http.ResponseWriter, r *http.Request) {
+	logger.Print("click")
+	http.Redirect(w, r, "/", http.StatusFound)
+}
+
+
+func createLogger() {
+	startTime := time.Now()
+	logFileName := "logs/go-site_log_" + startTime.Format("2006-01-02_15-04-05") + ".txt"
+	file, err := os.OpenFile(logFileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
+	logger = log.New(file, "logger: ", log.Lshortfile)
+  	
+  	if err != nil {
+        	log.Fatal(err)
+    	}
+
+}
+
+type user struct{
+    idusers int
+    username string
+    password string
+}
+
+
+func main() {
+	
+	
+
+	createLogger()
+
+	logger.Print("Hello, log file!")
+
+	requestRouter := mux.NewRouter()
+
+	
+    
+    
+
+    requestRouter.HandleFunc("/", indexHandler).Methods("GET")
+    requestRouter.HandleFunc("/", indexPostHandler).Methods("POST")
+    requestRouter.HandleFunc("/login/", logInGetHandler).Methods("GET")
+    requestRouter.HandleFunc("/login/", logInPostHandler).Methods("POST")
+    requestRouter.HandleFunc("/signin/", signInHandler).Methods("GET")
+    //requestRouter.HandleFunc("/", pressHandler).Methods("POST")
+    http.Handle("/", requestRouter)
+    logger.Fatal(http.ListenAndServe(":8080", nil))
+}

+ 0 - 0
www/game.html


+ 41 - 0
www/index.html

@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="UTF-8">
+		<title>{{.Title}}</title>
+	</head>
+	<script>
+		function post()
+		{
+		  var xhr = new XMLHttpRequest();// Создаём объект xhr
+		  xhr.open("POST", "/" , true);// Открываем асинхронное соединение
+		  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");// Отправляем кодировку
+		  xhr.send(); // Отправляем POST-запрос
+		  xhr.onreadystatechange = function() // Ждём ответа от сервера
+		  {
+		    if (xhr.readyState == 4) // возвращает текущее состояние объекта(0-4)
+		    {
+		      if(xhr.status == 200) // код 200 (если страница не найдена вернет 404)
+		      {
+		        //location.reload(); // Выводим ответ сервера
+		      }
+		    }
+		  }
+		}
+	</script>
+	<body>
+		<h1>INDEX</h1>
+		<div>Вошли как 
+			{{if .User}}{{.User}}<br><a href="/logout/">Выйти</a><br>{{else}}гость<br><a href="/login/">Войти</a><br><a href="/signin/">Зарегистрироваться</a>{{end}}
+		</div>
+		<div>
+			<a href="/leaderboard/">Таблица лидеров</a>
+			<br>
+			{{if .User}}<a href="/myscores/">Мои результаты</a>{{end}}
+			<br>
+		</div>
+		{{range .Items}}<div style="font-size: 18pt">{{ . }}</div>{{else}}<div><strong>no rows</strong></div>{{end}}
+		<br>
+		<button onclick=post()>Клик</button>
+	</body>
+</html>

+ 0 - 0
www/leaderboard.html


+ 21 - 0
www/login.html

@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="UTF-8">
+		<title>Вход</title>
+	</head>
+	<body>
+		<h1>LOGIN</h1>
+		<form method="POST">
+			Логин: <input name="username">
+			<br>
+			<br>
+			Пароль: <input name="password">
+			<div>
+				<br>
+				<br>
+				<button type="submit">Войти</button>
+			</div>
+		</form> 
+	</body>
+</html>

+ 0 - 0
www/myscores.html


+ 11 - 0
www/signin.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="UTF-8">
+		<title>Регистрация</title>
+	</head>
+	<body>
+		<h1>SIGNIN</h1>
+		
+	</body>
+</html>