Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

index.php 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. namespace Blog;
  3. session_start();
  4. use Psr\Http\Message\ResponseInterface as Response;
  5. use Psr\Http\Message\ServerRequestInterface as Request;
  6. use Slim\Factory\AppFactory;
  7. use Blog\DB\User;
  8. use Blog\DB\Blog;
  9. use Blog\DB\Bloglist;
  10. use Blog\DB\DB;
  11. require __DIR__ . '/../vendor/autoload.php';
  12. $app = AppFactory::create();
  13. $loader = new \Twig\Loader\FilesystemLoader('../templates');
  14. $twig = new \Twig\Environment($loader);
  15. ini_set('display_errors', 'Off');
  16. function addNavbar($response)
  17. {
  18. $response->getBody()->write("<html><head></head><body>");
  19. if (isset($_SESSION['username'])) {
  20. $response->getBody()->write('<div><a href="/">Index</a> | <a href="/blog/create">Create Blog</a> | <a href="/logout">Logout</a></div>');
  21. } else {
  22. $response->getBody()->write('<div><a href="/">Index</a> | <a href="/login">Login</a></div>');
  23. }
  24. return;
  25. }
  26. function addFooter($response)
  27. {
  28. $response->getBody()->write('<div>Privacy statement | Cookie Policy | Contact</div>');
  29. $response->getBody()->write("</body></html>");
  30. return;
  31. }
  32. function init()
  33. {
  34. $bloglist = new Bloglist;
  35. $articles = $bloglist->countBlogs();
  36. $i = 0;
  37. $blogArray = [];
  38. while ($articles[$i]) {
  39. array_push($blogArray, $articles[$i]);
  40. $i++;
  41. }
  42. $_SESSION['blogs'] = $blogArray;
  43. }
  44. $app->get('/', function (Request $request, Response $response, array $args) {
  45. init();
  46. global $twig;
  47. $template = $twig->load('index.html.twig');
  48. $a = $template->render(["key" => "value", "key2" => ["val1", "val2", "val3"], "name" => "John", "lastname" => "Doe"]);
  49. $response->getBody()->write($a);
  50. // addNavbar($response);
  51. // $response->getBody()->write('<hr/><h1>Onze blog</h1>');
  52. // $response->getBody()->write('<ul>');
  53. // foreach ($_SESSION['blogs'] as $art) {
  54. // $response->getBody()->write('<li><a href="/blog/' . $art['slug'] . '">' . $art['title'] . '</a></li>');
  55. // }
  56. // $response->getBody()->write('</ul>');
  57. // $response->getBody()->write('<hr/>');
  58. // addFooter($response);
  59. return $response;
  60. });
  61. $app->map(['GET', 'POST'], '/blog/create', function (Request $request, Response $response, array $args) {
  62. if (isset($_SESSION['username'])) {
  63. if ($request->getMethod() == 'GET') {
  64. addNavbar($response);
  65. if ($_SESSION['error']) {
  66. $response->getBody()->write($_SESSION['error']);
  67. $response->getBody()->write('<hr/>');
  68. unset($_SESSION['error']);
  69. }
  70. // toon reeds ingevoerde ggevens in geval van foutmelding
  71. $response->getBody()->write('<form action="/blog/create" method="POST">');
  72. $response->getBody()->write('<label for="slug">slug:</label>');
  73. $response->getBody()->write('<input type="text" name="slug"/><br/>');
  74. $response->getBody()->write('<label for="title">Titel:</label>');
  75. $response->getBody()->write('<input type="text" name="title"/><br/>');
  76. $response->getBody()->write('<label for="content">Content:</label>');
  77. $response->getBody()->write('<textarea name="content" rows="4" columns="50"></textarea>');
  78. $response->getBody()->write('<input type="submit"/>');
  79. addFooter($response);
  80. } else {
  81. $data = $request->getParsedBody();
  82. $blog = new Blog();
  83. $res = $blog->createBlog($data);
  84. if($res) {
  85. return $response->withHeader('Location', '/')->withStatus(302);
  86. } else {
  87. $err = $blog->lastErrorMsg();
  88. $_SESSION['error'] = $err;
  89. return $response->withHeader('Location', '/blog/create')->withStatus(302);
  90. }
  91. }
  92. } else {
  93. addNavbar($response);
  94. $response->getBody()->write(('Please login'));
  95. addFooter($response);
  96. }
  97. return $response;
  98. });
  99. $app->get('/blog/{slug}', function (Request $request, Response $response, array $args) {
  100. addNavbar($response);
  101. foreach ($_SESSION['blogs'] as $art) {
  102. if ($art['slug'] == $args['slug']) {
  103. $response->getBody()->write("<h1>" . $art['title'] . "</h1>");
  104. $response->getBody()->write('<p>' . $art['content'] . '</p>');
  105. }
  106. }
  107. addFooter($response);
  108. return $response;
  109. });
  110. $app->get('/logout', function (Request $request, Response $response, array $args) {
  111. unset($_SESSION['username']);
  112. addNavbar($response);
  113. $response->getBody()->write('Logged out');
  114. addFooter($response);
  115. return $response->withHeader('Location', '/')->withStatus(302);
  116. });
  117. $app->map(['GET', 'POST'], '/login', function (Request $request, Response $response, array $args) {
  118. if ($request->getMethod() == 'GET') {
  119. addNavbar($response);
  120. $response->getBody()->write('<form action="/login" method="POST">');
  121. $response->getBody()->write('<label for="username">Username:</label>');
  122. $response->getBody()->write('<input type="text" name="username"/><br/>');
  123. $response->getBody()->write('<label for="password">Password:</label>');
  124. $response->getBody()->write('<input type="password" name="password"/><br/>');
  125. $response->getBody()->write('<input type="submit"/>');
  126. addFooter($response);
  127. } else {
  128. $postdata = $request->getParsedBody();
  129. $user = new User();
  130. $logged_in = $user->checkUserPass($postdata['username'], $postdata['password']);
  131. if ($logged_in) {
  132. $_SESSION["username"] = $postdata['username'];
  133. addNavbar($response);
  134. $response->getBody()->write('Logged in');
  135. addFooter($response);
  136. return $response->withHeader('Location', '/')->withStatus(302);
  137. } else {
  138. $response->getBody()->write('Username and/or password incorrect');
  139. }
  140. }
  141. return $response;
  142. });
  143. $app->post('/postcomment', function (Request $request, Response $response, array $args) {
  144. $response->getBody()->write("Postcomment");
  145. return $response;
  146. });
  147. $app->run();