PageRenderTime 52ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/database/server.php

https://bitbucket.org/htagen/askut
PHP | 650 lines | 502 code | 82 blank | 66 comment | 140 complexity | c9d9ac6a2b1f57dcf8b626593de581b6 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, MIT, Apache-2.0, MPL-2.0, LGPL-2.1, BSD-3-Clause, GPL-2.0, LGPL-3.0, LGPL-2.0, GPL-3.0, AGPL-1.0, BSD-2-Clause
  1. <?php
  2. //Suhtlus serveriga
  3. ini_set('display_errors',1);
  4. error_reporting(E_ALL);
  5. include_once 'helper.php';
  6. include_once '../mail/mail.php';
  7. include_once '../facebook/facebook-php-sdk/src/Facebook/autoload.php';
  8. //include_once '../loginphp/client.php';
  9. // Andmebaasiga ühendamine
  10. $servername = "hostname";
  11. $username = "username";
  12. $password = "password";
  13. $dbname = "name";
  14. $connection = mysqli_connect(config($servername), config($username), config($password), config($dbname));
  15. // Andmebaasi ühenduse kontroll
  16. if ($connection->connect_error) {
  17. die("Connection failed: " . $connection->connect_error);
  18. }
  19. //määrame algseteks kasutajanimeks ja emailiks tühja sõne, et saaks pärast kontrollida, kas kasutaja sisestas sinna midagi
  20. $username = "";
  21. $email = "";
  22. $passwdHash = "";
  23. $options = [
  24. 'cost' => 13,
  25. ];
  26. //kasutaja jm errorite jaoks
  27. $errors = array();
  28. if (isset($_POST['register'])) {
  29. // Vormist kasutaja sisestatud andmete saamine
  30. $username = mysqli_real_escape_string($connection, $_POST['username']);
  31. $email = mysqli_real_escape_string($connection, $_POST['email']);
  32. $course = mysqli_real_escape_string($connection, $_POST['course']);
  33. $institute = mysqli_real_escape_string($connection, $_POST['institute']);
  34. $password = mysqli_real_escape_string($connection, $_POST['password']);
  35. $repeatPassword = mysqli_real_escape_string($connection, $_POST['repeatPassword']);
  36. //kontrollime kas väljad said kõik ilusti täidetud, kui ei, siis anname errori järjendisse, mis puudu või valesti
  37. if (empty($username)) {
  38. array_push($errors, "Kasutajanimi on vajalik!");
  39. }
  40. if (empty($email)) {
  41. array_push($errors, "Email on vajalik!");
  42. }
  43. if (empty($password)) {
  44. array_push($errors, "Parool on vajalik!");
  45. }
  46. if ($password != $repeatPassword) {
  47. array_push($errors, "Paroolid ei klapi omavahel");
  48. }
  49. if (strlen($username) < 4) {
  50. array_push($errors, "Kasutajanime pikkus peab olema pikem kui 4 tähte");
  51. }
  52. if (preg_match('/[^A-ZÕÄÖÜa-zõäöü0-9]+/',$username)){
  53. array_push($errors, "Kasutajanimi võib koosneda ainult tähtedest ja numbritest!");
  54. }
  55. if (strlen($password) < 8) {
  56. array_push($errors, "Parooli pikkus peab olema pikem kui 8 tähte");
  57. }
  58. //Kontrollime, et andmebaasis sellist kasutajat meil juba ei oleks
  59. $userCheck = "Select * From users WHERE username='$username' OR email='$email' Limit 1";
  60. $result = mysqli_query($connection, $userCheck);
  61. $user = mysqli_fetch_assoc($result);
  62. //kui kasutaja on olemas
  63. if ($user) {
  64. if ($user['username'] === $username) {
  65. array_push($errors, "Kasutajanimi on juba olemas!");
  66. }
  67. if ($user['email'] === $email) {
  68. array_push($errors, "Email on juba kasutusel!");
  69. }
  70. }
  71. //Kasutaja registreerimine, sisestamine tabelisse juhul kui erroreid pole
  72. if (count($errors) == 0) {
  73. //krüpteerime parooli
  74. $password = password_hash($password,PASSWORD_BCRYPT, $options);
  75. $query = "INSERT INTO users (username, email, course, institute, password) VALUES ('$username', '$email', '$course', '$institute', '$password')";
  76. // Tabelisse sisestamise päring
  77. try {
  78. mysqli_query($connection, $query);
  79. //sisseloginud kasutajate jälgimiseks, et teada kas ja kes sisseloginud on
  80. // $_SESSION['username'] = $username;
  81. //automaatteavitus õnnestunud registreerimise kohta:
  82. sendWelcomeMail($username,$email,$password);
  83. echo '<p class="noticeSuccess">Kasutaja registreeritud!</p>';
  84. // header('location: login.php');
  85. } catch (Exception $e) {
  86. echo $e->getMessage();
  87. }
  88. }
  89. }
  90. //Kasutaja sisse logimine
  91. if (isset($_POST['loginUser'])) {
  92. $username = mysqli_real_escape_string($connection, $_POST['username']);
  93. $password = mysqli_real_escape_string($connection, $_POST['password']);
  94. if (count($errors) == 0) {
  95. //Mysql lause, millega võrdleme kas sellist kasutajat, sellise parooliga on olemas
  96. $query = "SELECT password FROM users WHERE username='$username'";
  97. $results = mysqli_query($connection, $query);
  98. if($results->num_rows != 1){
  99. array_push($errors, "Sellist kasutajat ei eksisteeri.");
  100. }
  101. else {
  102. while ($obj = mysqli_fetch_object($results)) {
  103. $passwdHash = $obj->password;
  104. }
  105. //kui leitud kasutajat on täpselt üks, siis logime sisse
  106. if (password_verify($password, $passwdHash)) {
  107. $_SESSION['username'] = $username;
  108. //Suuname kasutaja sinna lehele, kuhu ta eelnevalt soovis, võte 9.
  109. if (isset($_SESSION['url'])) {
  110. $url = $_SESSION['url'];
  111. } else {
  112. $url = "/home/main.php";
  113. }
  114. header("Location: http://askut.today$url");
  115. } else {
  116. array_push($errors, "Vale parool!");
  117. }
  118. }
  119. }
  120. }
  121. //Kasutaja logib sisse ID-kaardiga. Vaatame kas sellist kontot on juba olemas
  122. if (isset($_SESSION['idUserId'])) {
  123. $userIdCode = $_SESSION['idUserId'];
  124. $userEmail = $_SESSION['idUserEmail'];
  125. //Kas selline kasutaja andmebaasis
  126. $queryIdCard = "SELECT idcardid FROM users WHERE idcardid = $userIdCode";
  127. $resultIdCard = $connection->query($queryIdCard);
  128. if ($resultIdCard) {
  129. $idCard = mysqli_fetch_array($resultIdCard)[0];
  130. mysqli_free_result($resultIdCard);
  131. }
  132. //Kui sellist kasutajat andmebaasist ei leidnud
  133. if (!isset($idCard)) {
  134. //Kasutaja email on märgitud -> kontrollime, kas selline email on meie andmebaasis
  135. if (isset($userEmail)) {
  136. $queryIdCard = "SELECT email FROM users WHERE email = '$userEmail'";
  137. $resultIdEmail = $connection->query($queryIdCard);
  138. if ($resultIdEmail) {
  139. $idEmail = mysqli_fetch_array($resultIdEmail)[0];
  140. mysqli_free_result($resultIdEmail);
  141. }
  142. //Selline email on andmebaasis -> määrame SESSIONi kasutajanimeks selle kasutajanime
  143. if (isset($idEmail)) {
  144. $queryEmailUser = "SELECT username FROM users WHERE email = '$userEmail'";
  145. $resultsEmailUser = $connection->query($queryEmailUser);
  146. if ($resultsEmailUser) {
  147. $emailUser = mysqli_fetch_array($resultsEmailUser)[0];
  148. $_SESSION['username'] = $emailUser;
  149. mysqli_free_result($resultsEmailUser);
  150. }
  151. } //Sellist emaili ei ole andmebaasis -> loome uue kasutaja: [userx, email, idcardid]
  152. else {
  153. $newUsername = newUsername();
  154. try {
  155. $queryAddUser = "INSERT INTO users (username, email, idcardid) VALUES ('$newUsername', '$userEmail', '$userIdCode')";
  156. if ($connection->query($queryAddUser) === TRUE) {
  157. $_SESSION['username'] = $newUsername;
  158. } else {
  159. echo "Error: " . $queryAddUser . "<br>" . $connection->error;
  160. }
  161. } catch (mysqli_sql_exception $e) {
  162. echo $e->getMessage();
  163. }
  164. }
  165. }
  166. } //Selline ID-kaardi idcode on andmebaasis -> määrame SESSIONi kasutajanimeks selle kasutajanime
  167. else {
  168. $queryUsername = "SELECT username FROM users WHERE idcardid = '$userIdCode'";
  169. $resultsUsername = $connection->query($queryUsername);
  170. if ($resultsUsername) {
  171. $idUsername = mysqli_fetch_array($resultsUsername)[0];
  172. $_SESSION['username'] = $idUsername;
  173. mysqli_free_result($resultsUsername);
  174. }
  175. }
  176. }
  177. //Kasutaja logib sisse Facebookiga. Uurime, kas tema fbID või emailiga on juba konto olemas.
  178. if (isset($_SESSION['fbUserId'])) {
  179. $userId = $_SESSION['fbUserId'];
  180. $userEmail = $_SESSION['fbUserEmail'];
  181. //Uurime, kas selline fbId on andmebaasis
  182. $queryFbId = "SELECT fbid FROM users WHERE fbid = $userId";
  183. $resultFbId = $connection->query($queryFbId);
  184. if ($resultFbId) {
  185. $fbId = mysqli_fetch_array($resultFbId)[0];
  186. mysqli_free_result($resultFbId);
  187. }
  188. //Sellist fbID'd ei ole andmebaasis
  189. if (!isset($fbId)) {
  190. //Kasutaja email on märgitud->kontrollime, kas selline email on meie andmebaasis
  191. if (isset($userEmail)) {
  192. $queryFbEmail = "SELECT email FROM users WHERE email = '$userEmail'";
  193. $resultsFbEmail = $connection->query($queryFbEmail);
  194. if ($resultsFbEmail) {
  195. $fbEmail = mysqli_fetch_array($resultsFbEmail)[0];
  196. mysqli_free_result($resultsFbEmail);
  197. }
  198. //Selline email on andmebaasis->määrame SESSIONi kasutajanimeks selle kasutajanime
  199. if (isset($fbEmail)) {
  200. $_SESSION['issetID'] = "siin0";
  201. $queryEmailUser = "SELECT username FROM users WHERE email = '$userEmail'";
  202. $resultsEmailUser = $connection->query($queryEmailUser);
  203. if ($resultsEmailUser) {
  204. $_SESSION['issetID'] = "siin1";
  205. $emailUser = mysqli_fetch_array($resultsEmailUser)[0];
  206. $_SESSION['username'] = $emailUser;
  207. mysqli_free_result($resultsEmailUser);
  208. }
  209. } //Sellist emaili ei ole andmebaasis->loome uue kasutaja: [userx, email, fbid]
  210. else {
  211. $newUsername = newUsername();
  212. try {
  213. $queryAddUser = "INSERT INTO users (username, email, fbid) VALUES ('$newUsername', '$userEmail', '$userId')";
  214. if ($connection->query($queryAddUser) === TRUE) {
  215. $_SESSION['username'] = $newUsername;
  216. } else {
  217. echo "Error: " . $queryAddUser . "<br>" . $connection->error;
  218. }
  219. } catch (mysqli_sql_exception $e) {
  220. echo $e->getMessage();
  221. }
  222. }
  223. } //Kasutaja email ei ole märgitud->loome uue kasutaja: [userx, fbid]
  224. else {
  225. $newUsername = newUsername();
  226. try {
  227. $queryAddUser = "INSERT INTO users (username, fbid) VALUES ('$newUsername','$userId')";
  228. if ($connection->query($queryAddUser) === TRUE) {
  229. $_SESSION['username'] = $newUsername;
  230. } else {
  231. echo "Error: " . $queryAddUser . "<br>" . $connection->error;
  232. }
  233. } catch (mysqli_sql_exception $e) {
  234. echo $e->getMessage();
  235. }
  236. }
  237. } //Selline fbID on andmebaasis->määrame SESSIONi kasutajanimeks selle kasutajanime
  238. else {
  239. $queryUsername = "SELECT username FROM users WHERE fbid = '$userId'";
  240. $resultsUsername = $connection->query($queryUsername);
  241. if ($resultsUsername) {
  242. $fbUsername = mysqli_fetch_array($resultsUsername)[0];
  243. $_SESSION['username'] = $fbUsername;
  244. mysqli_free_result($resultsUsername);
  245. }
  246. }
  247. }
  248. function newUsername() {
  249. // Andmebaasiga ühendamine
  250. $servername = "hostname";
  251. $username = "username";
  252. $password = "password";
  253. $dbname = "name";
  254. $connection = mysqli_connect(config($servername), config($username), config($password), config($dbname));
  255. // Andmebaasi ühenduse kontroll
  256. if ($connection->connect_error) {
  257. die("Connection failed: " . $connection->connect_error);
  258. }
  259. //muutuja, millega hoiame silma peal, kas selline suvaline kasutajanimi juba eksisteerib
  260. $thisUserExists = true;
  261. $newUserNo = rand(1, 15000);
  262. //Kasutaja nimi suvalise numbriga kujul: user + x [nt. user1220]
  263. $newUsername = "user" . $newUserNo;
  264. //kontrollime, et täpselt sellist userit ei eksisteeriks juba
  265. while ($thisUserExists) {
  266. $queryUserExists = "SELECT username FROM users where username = '$newUsername'";
  267. $resultUserExists = $connection->query($queryUserExists);
  268. if ($resultUserExists) {
  269. $userExists = mysqli_fetch_array($resultUserExists)[0];
  270. if (isset($userExists)) {
  271. $newUserNo = rand(1, 15000);
  272. $newUsername = "user" . $newUserNo;
  273. } else {
  274. $thisUserExists = false;
  275. }
  276. }
  277. mysqli_free_result($resultUserExists);
  278. } return $newUsername;
  279. }
  280. //Kasutaja parooli taastamine
  281. if (isset($_POST['restore'])) {
  282. $usernameOrEmail = mysqli_real_escape_string($connection, $_POST['username']);
  283. if (count($errors) == 0) {
  284. $randomPasswd = str_shuffle(bin2hex(openssl_random_pseudo_bytes(4))); //teeme uue random 8 märgi pikkuse parooli
  285. $randomPasswordHash = password_hash($randomPasswd,PASSWORD_BCRYPT, $options);
  286. $query = "update users set password='$randomPasswordHash' WHERE username='$usernameOrEmail' or email='$usernameOrEmail'";
  287. mysqli_query($connection, $query);
  288. if(mysqli_affected_rows($connection)) {
  289. $query = "select username, email from users where username='$usernameOrEmail' or email='$usernameOrEmail'";
  290. $results = mysqli_query($connection, $query);
  291. $user = mysqli_fetch_assoc($results);
  292. sendRestorePasswordMail($user['email'], $user['username'], $randomPasswd);
  293. header("Location: http://askut.today/home/login.php");
  294. }
  295. else {
  296. array_push($errors, "Sellist kasutajat ei eksisteeri.");
  297. }
  298. }
  299. }
  300. //Kasutaja meili AskUT'le saatmine:
  301. if (isset($_POST['sendMail'])) {
  302. $email = mysqli_real_escape_string($connection, $_POST['email']);
  303. $subject = mysqli_real_escape_string($connection, $_POST['subject']);
  304. $message = mysqli_real_escape_string($connection, $_POST['message']);
  305. if(sendMailToAskUT($email, $subject, $message)){
  306. echo 'Kiri saadetud!';
  307. }
  308. }
  309. //Kasutaja avatar
  310. if (isset($_SESSION['username'])) {
  311. $username = $_SESSION['username'];
  312. $sqlGetAvatar = "SELECT url FROM users WHERE users.username = '$username'";
  313. $resultAvatar = $connection->query($sqlGetAvatar);
  314. if ($resultAvatar === false) {
  315. echo "Error: " . $sqlGetAvatar . "<br>" . $connection->error;
  316. } else {
  317. $avatar = mysqli_fetch_array($resultAvatar);
  318. $_SESSION['userAvatar'] = "../avatars/" . $avatar[0];
  319. mysqli_free_result($resultAvatar);
  320. }
  321. }
  322. //kasutaja email
  323. if (isset($_SESSION['username'])) {
  324. $username = $_SESSION['username'];
  325. $sqlGetEmail = "SELECT email FROM users WHERE users.username = '$username'";
  326. $resultEmail = $connection->query($sqlGetEmail);
  327. if ($resultEmail === false) {
  328. echo "Error: " . $sqlGetEmail . "<br>" . $connection->error;
  329. } else {
  330. $email = mysqli_fetch_array($resultEmail);
  331. $_SESSION['email'] = $email[0];
  332. mysqli_free_result($resultEmail);
  333. }
  334. }
  335. //kasutaja instituut
  336. if (isset($_SESSION['username'])) {
  337. $username = $_SESSION['username'];
  338. $sqlGetInstitute = "SELECT institute FROM users WHERE users.username = '$username'";
  339. $resultInstitute = $connection->query($sqlGetInstitute);
  340. if ($resultInstitute === false) {
  341. echo "Error: " . $sqlGetInstitute . "<br>" . $connection->error;
  342. } else {
  343. $institute = mysqli_fetch_array($resultInstitute);
  344. $_SESSION['institute'] = $institute[0];
  345. mysqli_free_result($resultInstitute);
  346. }
  347. }
  348. //kasutaja eriala
  349. if (isset($_SESSION['username'])) {
  350. $username = $_SESSION['username'];
  351. $sqlGetCourse = "SELECT course FROM users WHERE users.username = '$username'";
  352. $resultCourse = $connection->query($sqlGetCourse);
  353. if ($resultCourse === false) {
  354. echo "Error: " . $sql . "<br>" . $connection->error;
  355. } else {
  356. $course = mysqli_fetch_array($resultCourse);
  357. $_SESSION['course'] = $course[0];
  358. mysqli_free_result($resultCourse);
  359. }
  360. }
  361. //Kasutaja andmete uuendamine
  362. if (isset($_POST['save'])) {
  363. $usernameFromForm = mysqli_real_escape_string($connection, $_POST['username']);
  364. $usernameLoggedIn = $_SESSION['username'];
  365. $emailLoggedIn = $_SESSION['email'];
  366. $email = mysqli_real_escape_string($connection, $_POST['email']);
  367. $course = mysqli_real_escape_string($connection, $_POST['course']);
  368. $institute = mysqli_real_escape_string($connection, $_POST['institute']);
  369. $existingPassword = mysqli_real_escape_string($connection, $_POST['existingPassword']);
  370. $newPassword = mysqli_real_escape_string($connection, $_POST['newPassword']);
  371. $repeatPassword = mysqli_real_escape_string($connection, $_POST['confirmNewPassword']);
  372. //kontrollime kas väljad said kõik ilusti täidetud, kui ei, siis anname errori järjendisse, mis puudu või valesti
  373. if (empty($usernameFromForm)) {
  374. array_push($errors, "Kasutajanimi on vajalik!");
  375. }
  376. if (empty($email)) {
  377. array_push($errors, "Email on vajalik!");
  378. }
  379. $userCheck = "Select password From users WHERE username='$usernameLoggedIn' Limit 1";
  380. $result = mysqli_query($connection, $userCheck);
  381. $user = mysqli_fetch_assoc($result);
  382. if($result->num_rows == 1){
  383. if (empty($existingPassword) && $user['password'] != '' ){
  384. array_push($errors, "Parool on vajalik!");
  385. }
  386. }
  387. if ($user['password'] == '' && !empty($existingPassword) ){
  388. array_push($errors, "Sul pole sellel kasutajal parooli. Jäta praeguse parooli väli tühjaks! ");
  389. }
  390. if ($newPassword != $repeatPassword) {
  391. array_push($errors, "Paroolid ei klapi omavahel");
  392. }
  393. $query = "SELECT password FROM users WHERE username='$username'";
  394. $results = mysqli_query($connection, $query);
  395. while ($obj = mysqli_fetch_object($results)) {
  396. $passwdHash = $obj->password;
  397. }
  398. if (!password_verify($existingPassword, $passwdHash) && $passwdHash != '') {
  399. array_push($errors, "Vale parool!");
  400. }
  401. else {
  402. //Kontrollime, et andmebaasis sellist kasutajat meil juba ei oleks
  403. $userCheck = "Select username From users WHERE username='$usernameFromForm' Limit 1";
  404. $userEmailCheck = "Select email From users WHERE email='$email'Limit 1";
  405. $result = mysqli_query($connection, $userCheck);
  406. $resultUserEmail = mysqli_query($connection, $userEmailCheck);
  407. $user = mysqli_fetch_assoc($result);
  408. $userEmailResult = mysqli_fetch_assoc($resultUserEmail);
  409. if($result->num_rows == 1 || $resultUserEmail->num_rows == 1){
  410. if ($user['username'] != $usernameLoggedIn) {
  411. if ($user['username'] === $usernameFromForm) {
  412. array_push($errors, "Kasutajanimi on juba olemas!");
  413. }
  414. }
  415. if ($userEmailResult['email'] != $emailLoggedIn){
  416. if ($userEmailResult['email'] === $email){
  417. array_push($errors, "Email on juba kasutusel!");
  418. }
  419. }
  420. }
  421. //Kasutaja andmete muutmine, juhul kui erroreid pole
  422. if (count($errors) == 0) {
  423. if (!empty($newPassword) && !empty($repeatPassword)) {
  424. //krüpteerime parooli
  425. $password = password_hash($newPassword, PASSWORD_BCRYPT, $options);
  426. $query = "UPDATE users set username='$usernameFromForm', email='$email', course='$course', institute='$institute', password='$password' WHERE username ='$usernameLoggedIn'";
  427. // Tabelisse sisestamise päring
  428. try {
  429. mysqli_query($connection, $query);
  430. //sisseloginud kasutajate jälgimiseks, et teada kas ja kes sisseloginud on
  431. $_SESSION['username'] = $usernameFromForm;
  432. //automaatteavitus õnnestunud registreerimise kohta:
  433. sendUpdateUserInfoMail($email, $usernameFromForm, $newPassword);
  434. header('location: profile.php');
  435. } catch (Exception $e) {
  436. echo $e->getMessage();
  437. }
  438. } else { //kui parooli ei tahetud muuta
  439. $query = "UPDATE users set username='$usernameFromForm', email='$email', course='$course', institute='$institute' WHERE username ='$usernameLoggedIn'";
  440. // Tabelisse sisestamise päring
  441. try {
  442. mysqli_query($connection, $query);
  443. //sisseloginud kasutajate jälgimiseks, et teada kas ja kes sisseloginud on
  444. $_SESSION['username'] = $usernameFromForm;
  445. //automaatteavitus õnnestunud registreerimise kohta:
  446. sendUpdateUserInfoMail($email, $usernameFromForm, $newPassword);
  447. header('location: profile.php');
  448. } catch (Exception $e) {
  449. echo $e->getMessage();
  450. }
  451. }
  452. }
  453. }
  454. }
  455. //kasutaja kustutamine
  456. if (isset($_POST['deleteUser'])) {
  457. $loggedInUser = $_SESSION['username'];
  458. $existingPassword = mysqli_real_escape_string($connection, $_POST['existingPassword']);
  459. $userCheck = "Select password From users WHERE username='$loggedInUser' Limit 1";
  460. $result = mysqli_query($connection, $userCheck);
  461. $user = mysqli_fetch_assoc($result);
  462. if ($result->num_rows == 1) {
  463. if (empty($existingPassword) && $user['password'] != '') {
  464. array_push($errors, "Parool on vajalik!");
  465. }
  466. }
  467. $query = "SELECT password FROM users WHERE username='$loggedInUser'";
  468. $results = mysqli_query($connection, $query);
  469. while ($obj = mysqli_fetch_object($results)) {
  470. $passwdHash = $obj->password;
  471. }
  472. if (!password_verify($existingPassword, $passwdHash) && $passwdHash != '') {
  473. array_push($errors, "Vale parool!");
  474. }
  475. if ($user['password'] == '' && !empty($existingPassword)) {
  476. array_push($errors, "Sul pole sellel kasutajal parooli. Jäta praeguse parooli väli tühjaks! ");
  477. }
  478. if (count($errors) == 0) {
  479. $query = "select id from users where username='$loggedInUser'";
  480. $results = mysqli_query($connection, $query);
  481. $user = mysqli_fetch_assoc($results);
  482. $loggedInUserID = $user['id'];
  483. $query = "DELETE FROM users where id='$loggedInUserID'";
  484. $results = mysqli_query($connection, $query);
  485. session_destroy();
  486. session_unset();
  487. unset($_SESSION['username']);
  488. unset($_SESSION['fbUserId']);
  489. unset($_SESSION['idUserId']);
  490. header("location: https://askut.today");
  491. }
  492. }
  493. if (isset($_POST['ask'])) {
  494. //et ü,õ,ä,ü ja muud vahvad tähed ilusti näha oleks
  495. mysqli_set_charset($connection, "utf8");
  496. $username = $_SESSION['username'];
  497. //Kasutaja küsimuse andmed
  498. $question = mysqli_real_escape_string($connection, $_POST['question']);
  499. $subject = mysqli_real_escape_string($connection, $_POST['subject']);
  500. $code = mysqli_real_escape_string($connection, $_POST['code']);
  501. //TODO: aksepteerime tühja.. kas nii on okei?
  502. $lector = mysqli_real_escape_string($connection, $_POST['lector']);
  503. if (empty($question)) {
  504. array_push($errors, "Küsimus on vajalik!");
  505. }
  506. if (empty($subject)) {
  507. array_push($errors, "Õppeaine nimi on vajalik!");
  508. }
  509. if (empty($code)) {
  510. array_push($errors, "Ainekood on vajalik!");
  511. }
  512. //Küsimuse lisamine, kui erroreid ei ole
  513. if (count($errors) == 0) {
  514. $query = "INSERT INTO question (username, question, code, name, lector) VALUES ('$username', '$question', '$code', '$subject','$lector')";
  515. // Tabelisse sisestamise päring
  516. try {
  517. //kontrollime, et andmebaasis samal ainel juba sellist küsimust ei oleks
  518. $questionCheck = "SELECT * FROM question WHERE question.question='$question' AND question.name='$subject' LIMIT 1";
  519. $result = mysqli_query($connection, $questionCheck);
  520. $subject = mysqli_fetch_assoc($result);
  521. //kui küsimus on olemas
  522. if ($subject) {
  523. array_push($errors, "Sellel ainel on juba selline küsimus küsitud! Proovi seda otsida.");
  524. } else {
  525. $insertNewQuestion = $connection->query($query);
  526. }
  527. } catch (Exception $e) {
  528. echo $e->getMessage();
  529. }
  530. }
  531. unset($_POST['ask']);
  532. }
  533. if (isset($_POST['answerButton'])) {
  534. //et ü,õ,ä,ü ja muud vahvad tähed ilusti näha oleks
  535. mysqli_set_charset($connection, "utf8");
  536. $username = $_SESSION['username'];
  537. //Kasutaja vastuse andmed
  538. $answer = mysqli_real_escape_string($connection, $_POST['answer']);
  539. //FIXME: võta hetkese modali ID (peab toimima nii otsides kui ka küsides, hetkel ID lahendus ainult top9 modalil?
  540. if (empty($username)) {
  541. array_push($errors, "Vastus on vajalik!");
  542. }
  543. //Vastuse lisamine, kui erroreid ei ole
  544. if (count($errors) == 0 && isset($_SESSION['modalId'])) {
  545. $id = $_SESSION['modalId'];
  546. $query = "INSERT INTO answer (username, answer, question_ID) VALUES ('$username', '$answer', '$id')";
  547. // Tabelisse sisestamise päring
  548. try {
  549. $insertNewAnswer = $connection->query($query);
  550. } catch (Exception $e) {
  551. echo $e->getMessage();
  552. }
  553. }
  554. unset($_POST['answerButton']);
  555. unset($_SESSION['modalId']);
  556. }
  557. if (isset($_POST['delBtn'])) {
  558. $qID = $_SESSION['id'];
  559. $query = "delete from question where ID = '$qID'";
  560. $results = mysqli_query($connection, $query);
  561. $query2 = "delete from answer where question_ID = '$qID'";
  562. $results2 = mysqli_query($connection, $query2);
  563. }
  564. if (isset($_POST['delABtn'])) {
  565. $aID = $_SESSION['id'];
  566. $query2 = "delete from answer where answer.ID = '$aID'";
  567. $results2 = mysqli_query($connection, $query2);
  568. }