Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- error_reporting(E_ALL);
- ini_set("display_errors", 1);
- // 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
- include_once 'config.php';
- function sec_session_start() {
- $session_name = 'sec_session_id'; // vergib einen Sessionnamen
- $secure = SECURE;
- // Damit wird verhindert, dass JavaScript auf die session id zugreifen kann.
- $httponly = true;
- // Zwingt die Sessions nur Cookies zu benutzen.
- if (ini_set('session.use_only_cookies', 1) === FALSE) {
- header("Location: ../error.php?err=Could not initiate a safe session (ini_set)");
- exit();
- }
- // Holt Cookie-Parameter.
- $cookieParams = session_get_cookie_params();
- session_set_cookie_params($cookieParams["lifetime"],
- $cookieParams["path"],
- $cookieParams["domain"],
- $secure,
- $httponly);
- // Setzt den Session-Name zu oben angegebenem.
- session_name($session_name);
- session_start(); // Startet die PHP-Sitzung
- session_regenerate_id(); // Erneuert die Session, löscht die alte.
- }
- function splitPerms ($perms) {
- return explode(",", $perms);
- }
- function hasPerm ($a, $perms) {
- for ($i = 0; count($perms) <= $i-1; i++) {
- if ($perms[$i] == strval($a)) {
- return true;
- }
- }
- return false;
- }
- function login($password, $username, $mysqli) {
- // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
- if ($stmt = $mysqli->prepare("SELECT password, name, perm
- FROM login
- WHERE name = ?
- LIMIT 1")) {
- $stmt->bind_param('s', $username); // Bind "$password" to parameter.
- $stmt->execute(); // Führe die vorbereitete Anfrage aus.
- $stmt->store_result();
- // hole Variablen von result.
- $stmt->bind_result($db_password, $DBusername, $permissions);
- $stmt->fetch();
- if ($stmt->num_rows == 1) {
- // Wenn es den Benutzer gibt, dann wird überprüft ob das Konto
- if ($db_password == $password) {
- $_SESSION['login_string'] = $db_password;
- $_SESSION['permissions'] = $permissions;
- $_SESSION['name'] = $DBusername;
- // Login erfolgreich.
- echo("Login erfolgreich!");
- return true;
- } else {
- die ("Passwort falsch.");
- return false;
- }
- } else {
- die ("Username nicht gefunden");
- return false;
- }
- } else {
- echo("Datenbank Fehler");
- return false;
- }
- }
- function login_check($mysqli) {
- // Überprüfe, ob alle Session-Variablen gesetzt sind
- if (isset($_SESSION['permissions'], $_SESSION['login_string'], $_SESSION['name'])) {
- $login_string = $_SESSION['login_string'];
- $permissions = $_SESSION['permissions'];
- $name = $_SESSION['name'];
- if ($stmt = $mysqli->prepare("SELECT password, name
- FROM login
- WHERE name = ? LIMIT 1")) {
- // Bind "$user_id" zum Parameter.
- $stmt->bind_param('s', $name);
- $stmt->execute(); // Execute the prepared query.
- $stmt->store_result();
- if ($stmt->num_rows == 1) {
- // Wenn es den Benutzer gibt, hole die Variablen von result.
- $stmt->bind_result($password, $name);
- $stmt->fetch();
- if ($login_string == $password) {
- return true;
- } else {
- // Nicht eingeloggt
- return false;
- }
- } else {
- // Nicht eingeloggt
- return false;
- }
- } else {
- // Nicht eingeloggt
- return false;
- }
- } else {
- // Nicht eingeloggt
- return false;
- }
- }
- function getelements($perms, $isAdmin, $mysqli) {
- // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
- if ($stmt = $mysqli->prepare("SELECT id FROM elements ORDER BY id DESC LIMIT 1")) {
- $stmt->execute(); // Führe die vorbereitete Anfrage aus.
- $stmt->store_result();
- // hole Variablen von result.
- $stmt->bind_result($maxid);
- $stmt->fetch();
- if ($stmt->num_rows == 1) {
- for ($i = 1; $i <= $maxid; $i++)
- {
- echo (loadelement($i, $perms, $isAdmin, $mysqli));
- }
- } else {
- echo '<p class="error">Keine videos gefunden. Max ID: '.$max.'</p>';
- }
- } else {
- echo "<p class='error'>Database Fail</p>";
- }
- }
- function loadelement($id, $perms, $isAdmin, $mysqli) {
- // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
- if ($stmt = $mysqli->prepare("SELECT code, name
- FROM elements
- WHERE id = ?
- LIMIT 1")) {
- $stmt->bind_param('i', $id); // Bind "$id" to parameter.
- $stmt->execute(); // Führe die vorbereitete Anfrage aus.
- $stmt->store_result();
- // hole Variablen von result.
- $stmt->bind_result($code, $name);
- $stmt->fetch();
- if ($stmt->num_rows == 1) {
- // put rank requirement around $code
- if ($isAdmin == true) {
- $code = $code .'<p>Name: '. $name . ' ID: ' . $id . '</p><form method="post" action="includes/deletevideo.php">
- <input type="hidden" name="id" value="' . $id . '">
- <button type="submit" name="submit_param" value="submit_value" class="btn-delete btn-secret btn-red">
- DELETE VIDEO
- </button>
- </form>';
- }
- if (!hasPerm($id, $perms)) {
- $code = '';
- }
- return $code;
- } else {
- // if ($rank > 8) {
- // return '<p class="error">Video mit ID '.$id.' nicht gefunden.<br> Dieser Text wird höchstwahrscheinlich angezeigt weil das Video gelöscht wurde</p>';
- // }
- }
- } else {
- return "<p class='error'>Database Fail</p>";
- }
- }
- function retrieveusers($mysqli) {
- // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
- if ($stmt = $mysqli->prepare("SELECT id FROM login ORDER BY id DESC LIMIT 1")) {
- $stmt->execute(); // Führe die vorbereitete Anfrage aus.
- $stmt->store_result();
- // hole Variablen von result.
- $stmt->bind_result($maxid);
- $stmt->fetch();
- if ($stmt->num_rows == 1) {
- for($i = 1; $i <= $maxid; $i++)
- {
- echo (loaduser($i, $mysqli));
- }
- } else {
- echo '<p class="error">Keine Benutzer gefunden. Max ID: '.$max.'</p>';
- }
- } else {
- echo "<p class='error'>Database Fail</p>";
- }
- }
- function loaduser($id, $mysqli) {
- // Das Benutzen vorbereiteter Statements verhindert SQL-Injektion.
- if ($stmt = $mysqli->prepare("SELECT id, password, perm, name
- FROM login
- WHERE id = ?
- LIMIT 1")) {
- $stmt->bind_param('i', $id); // Bind "$id" tos parameter.
- $stmt->execute(); // Führe die vorbereitete Anfrage aus.
- $stmt->store_result();
- // hole Variablen von result.
- $stmt->bind_result($id, $password, $perm, $username);
- $stmt->fetch();
- if ($stmt->num_rows == 1) {
- $user = ' Name: ' . $username . ' ID: ' . $id . ' Rank: ' . $perm . '<form method="post" action="includes/deleteuser.php">
- <input type="hidden" name="id" value="'.$id.'">
- <button type="submit" name="submit_delete" value="submit_value" class="btn-delete btn-secret btn-red btn-overlay">
- DELETE USER
- </button>
- </form>
- <br>
- <form method="post" action="includes/addperm.php">
- <input type="hidden" name="id" value="'.$id.'">
- <input type="text" name="videoid" value=""><br>
- <button type="submit" name="submit_perm" value="submit_value" class="btn-perm btn-secret btn-green btn-overlay">
- ADD PERM
- </button>
- </form><br>';
- return $user;
- } else {
- }
- } else {
- return "<p class='error'>Database Fail</p>";
- }
- }
- function esc_url($url) {
- if ('' == $url) {
- return $url;
- }
- $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
- $strip = array('%0d', '%0a', '%0D', '%0A');
- $url = (string) $url;
- $count = 1;
- while ($count) {
- $url = str_replace($strip, '', $url, $count);
- }
- $url = str_replace(';//', '://', $url);
- $url = htmlentities($url);
- $url = str_replace('&', '&', $url);
- $url = str_replace("'", ''', $url);
- if ($url[0] !== '/') {
- // Wir wollen nur relative Links von $_SERVER['PHP_SELF']
- return '';
- } else {
- return $url;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement