Advertisement
Guest User

Untitled

a guest
Dec 13th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.29 KB | None | 0 0
  1. error_reporting(E_ALL);
  2. ini_set("display_errors", 1);
  3.  
  4. // Habe das Login Tutorial von https://de.wikihow.com/Ein-sicheres-Login-Skript-mit-PHP-und-MySQL-erstellen so modifiziert das es nur ein Passwort Feld gibt und ein paar Sicherheitsfunktionen rausgenommen
  5.  
  6.  
  7. include_once 'config.php';
  8.  
  9. function sec_session_start() {
  10. $session_name = 'sec_session_id'; // vergib einen Sessionnamen
  11. $secure = SECURE;
  12. // Damit wird verhindert, dass JavaScript auf die session id zugreifen kann.
  13. $httponly = true;
  14. // Zwingt die Sessions nur Cookies zu benutzen.
  15. if (ini_set('session.use_only_cookies', 1) === FALSE) {
  16. header("Location: ../error.php?err=Could not initiate a safe session (ini_set)");
  17. exit();
  18. }
  19. // Holt Cookie-Parameter.
  20. $cookieParams = session_get_cookie_params();
  21. session_set_cookie_params($cookieParams["lifetime"],
  22. $cookieParams["path"],
  23. $cookieParams["domain"],
  24. $secure,
  25. $httponly);
  26. // Setzt den Session-Name zu oben angegebenem.
  27. session_name($session_name);
  28. session_start(); // Startet die PHP-Sitzung
  29. session_regenerate_id(); // Erneuert die Session, löscht die alte.
  30. }
  31.  
  32. function splitPerms ($perms) {
  33. return explode(",", $perms);
  34. }
  35.  
  36. function hasPerm ($a, $perms) {
  37. for ($i = 0; count($perms) <= $i-1; i++) {
  38. if ($perms[$i] == strval($a)) {
  39. return true;
  40. }
  41. }
  42. return false;
  43. }
  44.  
  45. function login($password, $username, $mysqli) {
  46.  
  47. // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
  48. if ($stmt = $mysqli->prepare("SELECT password, name, perm
  49. FROM login
  50. WHERE name = ?
  51. LIMIT 1")) {
  52. $stmt->bind_param('s', $username); // Bind "$password" to parameter.
  53. $stmt->execute(); // Führe die vorbereitete Anfrage aus.
  54. $stmt->store_result();
  55.  
  56. // hole Variablen von result.
  57. $stmt->bind_result($db_password, $DBusername, $permissions);
  58. $stmt->fetch();
  59.  
  60.  
  61.  
  62. if ($stmt->num_rows == 1) {
  63. // Wenn es den Benutzer gibt, dann wird überprüft ob das Konto
  64.  
  65. if ($db_password == $password) {
  66. $_SESSION['login_string'] = $db_password;
  67. $_SESSION['permissions'] = $permissions;
  68. $_SESSION['name'] = $DBusername;
  69. // Login erfolgreich.
  70. echo("Login erfolgreich!");
  71. return true;
  72. } else {
  73. die ("Passwort falsch.");
  74. return false;
  75. }
  76.  
  77. } else {
  78. die ("Username nicht gefunden");
  79. return false;
  80. }
  81. } else {
  82. echo("Datenbank Fehler");
  83. return false;
  84. }
  85. }
  86.  
  87. function login_check($mysqli) {
  88. // Überprüfe, ob alle Session-Variablen gesetzt sind
  89. if (isset($_SESSION['permissions'], $_SESSION['login_string'], $_SESSION['name'])) {
  90.  
  91. $login_string = $_SESSION['login_string'];
  92. $permissions = $_SESSION['permissions'];
  93. $name = $_SESSION['name'];
  94.  
  95.  
  96. if ($stmt = $mysqli->prepare("SELECT password, name
  97. FROM login
  98. WHERE name = ? LIMIT 1")) {
  99. // Bind "$user_id" zum Parameter.
  100. $stmt->bind_param('s', $name);
  101. $stmt->execute(); // Execute the prepared query.
  102. $stmt->store_result();
  103.  
  104. if ($stmt->num_rows == 1) {
  105. // Wenn es den Benutzer gibt, hole die Variablen von result.
  106. $stmt->bind_result($password, $name);
  107. $stmt->fetch();
  108.  
  109. if ($login_string == $password) {
  110. return true;
  111. } else {
  112. // Nicht eingeloggt
  113. return false;
  114. }
  115. } else {
  116. // Nicht eingeloggt
  117. return false;
  118. }
  119. } else {
  120. // Nicht eingeloggt
  121. return false;
  122. }
  123. } else {
  124. // Nicht eingeloggt
  125. return false;
  126. }
  127. }
  128.  
  129. function getelements($perms, $isAdmin, $mysqli) {
  130. // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
  131. if ($stmt = $mysqli->prepare("SELECT id FROM elements ORDER BY id DESC LIMIT 1")) {
  132. $stmt->execute(); // Führe die vorbereitete Anfrage aus.
  133. $stmt->store_result();
  134.  
  135. // hole Variablen von result.
  136. $stmt->bind_result($maxid);
  137. $stmt->fetch();
  138.  
  139.  
  140.  
  141. if ($stmt->num_rows == 1) {
  142.  
  143. for ($i = 1; $i <= $maxid; $i++)
  144. {
  145. echo (loadelement($i, $perms, $isAdmin, $mysqli));
  146. }
  147.  
  148. } else {
  149. echo '<p class="error">Keine videos gefunden. Max ID: '.$max.'</p>';
  150. }
  151. } else {
  152. echo "<p class='error'>Database Fail</p>";
  153. }
  154. }
  155.  
  156. function loadelement($id, $perms, $isAdmin, $mysqli) {
  157.  
  158. // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
  159. if ($stmt = $mysqli->prepare("SELECT code, name
  160. FROM elements
  161. WHERE id = ?
  162. LIMIT 1")) {
  163. $stmt->bind_param('i', $id); // Bind "$id" to parameter.
  164. $stmt->execute(); // Führe die vorbereitete Anfrage aus.
  165. $stmt->store_result();
  166.  
  167. // hole Variablen von result.
  168. $stmt->bind_result($code, $name);
  169. $stmt->fetch();
  170.  
  171.  
  172.  
  173. if ($stmt->num_rows == 1) {
  174. // put rank requirement around $code
  175. if ($isAdmin == true) {
  176. $code = $code .'<p>Name: '. $name . ' ID: ' . $id . '</p><form method="post" action="includes/deletevideo.php">
  177. <input type="hidden" name="id" value="' . $id . '">
  178. <button type="submit" name="submit_param" value="submit_value" class="btn-delete btn-secret btn-red">
  179. DELETE VIDEO
  180. </button>
  181. </form>';
  182. }
  183. if (!hasPerm($id, $perms)) {
  184. $code = '';
  185. }
  186.  
  187. return $code;
  188. } else {
  189. // if ($rank > 8) {
  190. // return '<p class="error">Video mit ID '.$id.' nicht gefunden.<br> Dieser Text wird höchstwahrscheinlich angezeigt weil das Video gelöscht wurde</p>';
  191. // }
  192. }
  193. } else {
  194. return "<p class='error'>Database Fail</p>";
  195. }
  196. }
  197.  
  198.  
  199. function retrieveusers($mysqli) {
  200. // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
  201. if ($stmt = $mysqli->prepare("SELECT id FROM login ORDER BY id DESC LIMIT 1")) {
  202. $stmt->execute(); // Führe die vorbereitete Anfrage aus.
  203. $stmt->store_result();
  204.  
  205. // hole Variablen von result.
  206. $stmt->bind_result($maxid);
  207. $stmt->fetch();
  208.  
  209.  
  210. if ($stmt->num_rows == 1) {
  211.  
  212. for($i = 1; $i <= $maxid; $i++)
  213. {
  214. echo (loaduser($i, $mysqli));
  215. }
  216.  
  217. } else {
  218. echo '<p class="error">Keine Benutzer gefunden. Max ID: '.$max.'</p>';
  219. }
  220. } else {
  221. echo "<p class='error'>Database Fail</p>";
  222. }
  223. }
  224.  
  225.  
  226. function loaduser($id, $mysqli) {
  227.  
  228. // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
  229. if ($stmt = $mysqli->prepare("SELECT id, password, perm, name
  230. FROM login
  231. WHERE id = ?
  232. LIMIT 1")) {
  233. $stmt->bind_param('i', $id); // Bind "$id" tos parameter.
  234. $stmt->execute(); // Führe die vorbereitete Anfrage aus.
  235. $stmt->store_result();
  236.  
  237. // hole Variablen von result.
  238. $stmt->bind_result($id, $password, $perm, $username);
  239. $stmt->fetch();
  240.  
  241. if ($stmt->num_rows == 1) {
  242. $user = ' Name: ' . $username . ' ID: ' . $id . ' Rank: ' . $perm . '<form method="post" action="includes/deleteuser.php">
  243. <input type="hidden" name="id" value="'.$id.'">
  244. <button type="submit" name="submit_delete" value="submit_value" class="btn-delete btn-secret btn-red btn-overlay">
  245. DELETE USER
  246. </button>
  247. </form>
  248. <br>
  249. <form method="post" action="includes/addperm.php">
  250. <input type="hidden" name="id" value="'.$id.'">
  251. <input type="text" name="videoid" value=""><br>
  252. <button type="submit" name="submit_perm" value="submit_value" class="btn-perm btn-secret btn-green btn-overlay">
  253. ADD PERM
  254. </button>
  255. </form><br>';
  256.  
  257. return $user;
  258. } else {
  259. }
  260. } else {
  261. return "<p class='error'>Database Fail</p>";
  262. }
  263. }
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275. function esc_url($url) {
  276.  
  277. if ('' == $url) {
  278. return $url;
  279. }
  280.  
  281. $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
  282.  
  283. $strip = array('%0d', '%0a', '%0D', '%0A');
  284. $url = (string) $url;
  285.  
  286. $count = 1;
  287. while ($count) {
  288. $url = str_replace($strip, '', $url, $count);
  289. }
  290.  
  291. $url = str_replace(';//', '://', $url);
  292.  
  293. $url = htmlentities($url);
  294.  
  295. $url = str_replace('&amp;', '&#038;', $url);
  296. $url = str_replace("'", '&#039;', $url);
  297.  
  298. if ($url[0] !== '/') {
  299. // Wir wollen nur relative Links von $_SERVER['PHP_SELF']
  300. return '';
  301. } else {
  302. return $url;
  303. }
  304. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement