Webbserverprogrammering 1

Källkod

Följande filer och mappar finns under mappen webbserverprogrammering.
Mappar visas till vänster och filer till höger. Klicka på en fil eller mapp för att öppna nedan eller visa dess innehåll.

webbserverprogrammering/projects/quiz-extended/

26 filer

admin.php
confirm_account.php
create_account.php
create_quiz.php
css/
dbconnection.php
highscore.php
index.php
js/
logbook.php
login.php
mysql_create_table_options.php
mysql_create_table_questions.php
mysql_create_table_quizzes.php
mysql_create_table_results.php
mysql_create_table_submits.php
mysql_create_table_users.php
plan.php
planering.txt
profile.php
projektrapport.txt
quizzes.php
resources/
result.php
send_email.php
session_variable_array_check.php

login.php

78 lines ASCII Windows (CRLF)
<?php
error_reporting
(-1); // Report all type of errors
ini_set('display_errors'1); // Display all errors 
ini_set('output_buffering'0); // Do not buffer outputs, write directly

function dump($dump) {
 echo 
"<pre>";
 
var_dump($dump);
 echo 
"</pre>";
}

session_start();
include 
"session_variable_array_check.php";

if (
$_SESSION['quizExtended']['loggedIn']) {
 
header("Location:index.php");
}

// POST RECEIVE
$redMessage "";
include(
"dbconnection.php");
if (isset(
$_POST['username']) && isset($_POST['password']) && isset($_POST['submitted'])) {
 
$username $_POST['username'];
 
$password $_POST['password'];

 
$sql "SELECT * FROM quizext_users WHERE username=?";
 
$stmt $dbconn->prepare($sql);
 
$stmt->execute([$username]);
 
$result $stmt->fetchAll(PDO::FETCH_ASSOC);

 if (
verifyLogin($password$result)) {
  if (
$result[0]['verified'] === "verified") {
   
$_SESSION['quizExtended'] = ['loggedIn' => true'admin' => isAdmin($result), 'displayname' => $result[0]['displayname'], 'userId' => (int) $result[0]['user_id'], 'username' => $username];
   
header("Location:index.php"); // redirect to start web page
  
} else {
   
$redMessage "Account not verified. If email link has expired, create a new account.";
  }
 }
 else {
  
$redMessage "Invadlid login details!";
 }
}

function 
verifyLogin($password$sqlResult) {
 if (
count($sqlResult) === && password_verify($password$sqlResult[0]['password']))
  return 
true;
 else
  return 
false;
}
function 
isAdmin($sqlResult) {
 return (
$sqlResult[0]['user_level'] === "admin") ? true false;
}


?>

<!DOCTYPE html>
<html lang="sv">
<head>
 <title>Log in</title>
 <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
 <a href="index.php" id="logo">
  CuriousQuizzes
 </a>
 <main class="centered">
  <h1>Log in</h1>
  <form method="post" action="">
   <input type="text" name="username" placeholder="Username"><br>
   <input type="password" name="password" placeholder="Password"><br>
   <input type="submit" name="submitted" value="Log in"><br>
  </form>
  <p class="redMessage"><?= $redMessage ?></p>
  <a class="smallMessage" href="create_account.php">Don't have an account? Create one here!</a>
 </main>
</body>
</html>