PATH:
root
/
quiz
<?php sleep(1); $return = array(); $mesaj = ''; //Import PHPMailer classes into the global namespace //These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'src/Exception.php'; require 'src/PHPMailer.php'; require 'src/SMTP.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { function formatMilliseconds($milliseconds) { $seconds = floor($milliseconds / 1000); $minutes = floor($seconds / 60); $hours = floor($minutes / 60); $milliseconds = $milliseconds % 1000; $seconds = $seconds % 60; $minutes = $minutes % 60; $format = '%02u:%02u'; $time = sprintf($format, $minutes, $seconds); return rtrim($time, '0'); } $conn = mysqli_connect("localhost", "quiz", "quiz", "quiz"); // Check connection if($conn === false){ die("ERROR: Could not connect. " . mysqli_connect_error()); } if (!empty($_POST)) { // Taking all 5 values from the form data(input) $name = $_POST['name']; $email = $_POST['email']; $totaltime = $_POST['totaltime']; $regulamin = $_POST['regulamin']; if( isset($_POST['newsletter']) ){ $newsletter = $_POST['newsletter']; }else{ $newsletter='off' ; } $currentDate = date("Y-m-d H:i:s"); $currentday = date("Y-m-d"); $salt = uniqid(mt_rand() , true); $token = sha1($currentDate . md5($salt)); $timestamp = $totaltime; $totaltime_s = formatMilliseconds((int)$timestamp); // sprawdzenie czy w bazie insnieje juz taki email i czy jest z datą dzisiejszą $sql = "SELECT * FROM zgloszenia WHERE email='$email' AND data_zgloszenia BETWEEN '$currentday 00:00:00' AND '$currentday 23:59:59'"; $result = $conn->query($sql); if($result->num_rows > 0) { $mesaj = 'Podany email juz istnieje w bazie'; $return['msg'] = 'Podany email juz istnieje w bazie'; echo json_encode($return); exit(); }else{ // nowe zgłoszenie $sql = "INSERT INTO zgloszenia VALUES ('id','$currentDate','$email','$name','$totaltime','$newsletter','$regulamin', '0' , '', '$token')"; //$result = $conn->query($sql); if(mysqli_query($conn, $sql)){ $from = $_POST['email']; // this is the sender's Email address $first_name = $_POST['name']; //Create an instance; passing `true` enables exceptions $mail = new PHPMailer(true); try { //Server settings // $mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output $mail->isSMTP(); //Send using SMTP $mail->Host = 'smtp.example.com'; //Set the SMTP server to send through $mail->SMTPAuth = true; //Enable SMTP authentication $mail->Username = 'user@example.com'; //SMTP username $mail->Password = 'secret'; //SMTP password $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption $mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS` //Recipients $mail->setFrom('from@example.com', 'Mailer'); $mail->addAddress('joe@example.net', 'Joe User'); //Add a recipient $mail->addAddress('ellen@example.com'); //Name is optional $mail->addReplyTo('info@example.com', 'Information'); $mail->addCC('cc@example.com'); $mail->addBCC('bcc@example.com'); //Content $mail->isHTML(true); //Set email format to HTML $mail->Subject = 'Potwierdzenie zgłoszenia na QUIZ'; $mail->Body = 'To jest potwierdzenie zgłoszenia na qiuz <br>' . $first_name .'Twój czas wypełniania quizu: '. $totaltime_s. '<br><br><h2>Aby dokończyć zapisywanie wyniku, kliknij w link potwierdzający:</h2> <br><br> https://quiz.olejpalmowy.com/verifyemail.php?token=' . $token; $mail->AltBody = 'To jest potwierdzenie zgłoszenia na qiuz <br>' . $first_name .'Twój czas wypełniania quizu: '. $totaltime_s. '<br><br><h2>Aby dokończyć zapisywanie wyniku, kliknij w link potwierdzający:</h2> <br><br> https://quiz.olejpalmowy.com/verifyemail.php?token=' . $token; $mail->send(); $mesaj = 'Thank you for getting in touch. We will contact you!'; // $return["error"] = false; $return["msg"] = 'Thank you for getting in touch. We will contact you! '.$mail->ErrorInfo; echo json_encode($return); exit(); } catch (Exception $e) { $mesaj = 'The message cannot be delivered, please try again later!'; $return['msg'] = 'The message cannot be delivered, please try again later!'; echo json_encode($return); exit(); } } else{ exit(); } } // Close connection mysqli_close($conn); }else{ $mesaj = 'Podany email juz istnieje w bazie'; $return['msg'] = 'Podany email juz istnieje w bazie'; echo json_encode($return); exit(); } $mesaj = 'aaaaaaaaaThe message cannot be delivered, please try again later!'; $return['msg'] = 'aaaaaaaaThe message cannot be delivered, please try again later!'; echo json_encode($return); } ?> <!doctype html> <html lang="pl"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>QUIZ - Sprawdź, czy masz olej w głowie! </title> <meta name="description" content="QUIZ - Sprawdź, czy masz olej w głowie! "> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&&display=swap" rel="stylesheet"> <link rel="stylesheet" href="css/style.css"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="HackTimer.js"></script> <script src="form.js"></script> </head> <body> <main id="content" role="main" class="content"> <div class="totaltime-f"> <div class="field">suma czasu</div> <div id="totaltime_t" class="field">0</div> </div> <div class="quiz-box"> <div class="bg"> <div id="score" class="field">Pytanie 1/10</div> <div id="div-start" class="start"> <h1>Sprawdź, czy masz olej w głowie! </h1> <p>Wygraj podwójny bilet do jednego z największych ogrodów zoologicznych w Polsce. Na każde z 10 pytań masz 60 sekund. Każdego dnia nagradzamy 5 osób z najlepszym i najszybszym wynikiem. </p> <p class="p1"> Pamiętaj, że zawsze możesz zagrać ponownie!</p> <div class="center"> <button class="btn" id="start" type="button">Rozwiąż quiz</button> <a href="#zobacz-ranking">zobacz ranking</a> </div> </div> <div id="div-quiz" class="quiz"> <div class="flex "> <div class="time-line"><span id="time-line"></span></div> <div class="time"> <svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M6.25 1.51562L0.546875 6.24219C0.195312 5.65625 0 4.99219 0 4.25C0 2.17969 1.64062 0.5 3.71094 0.5C4.6875 0.5 5.58594 0.890625 6.25 1.51562ZM10.9375 11.3984L12.5 12.9609C12.8906 13.3516 12.8906 13.9375 12.5 14.2891C12.1484 14.6797 11.5625 14.6797 11.2109 14.2891L9.33594 12.4141C9.14062 12.2578 9.0625 12.0234 9.0625 11.75V7.6875C9.0625 7.17969 9.45312 6.75 10 6.75C10.5078 6.75 10.9375 7.17969 10.9375 7.6875V11.3984ZM4.49219 18.5859L2.8125 20.2266C2.46094 20.6172 1.875 20.6172 1.52344 20.2266C1.13281 19.875 1.13281 19.2891 1.52344 18.8984L3.16406 17.2578C1.95312 15.7734 1.25 13.8594 1.25 11.75C1.25 6.94531 5.15625 3 10 3C14.8047 3 18.75 6.94531 18.75 11.75C18.75 13.8594 18.0078 15.7734 16.7969 17.2578L18.4375 18.8984C18.8281 19.2891 18.8281 19.875 18.4375 20.2266C18.0859 20.6172 17.5 20.6172 17.1484 20.2266L15.4688 18.5859C13.9844 19.7969 12.0703 20.5 10 20.5C7.89062 20.5 5.97656 19.7969 4.49219 18.5859ZM10 18.625C13.7891 18.625 16.875 15.5781 16.875 11.75C16.875 7.96094 13.7891 4.875 10 4.875C6.17188 4.875 3.125 7.96094 3.125 11.75C3.125 15.5781 6.17188 18.625 10 18.625ZM19.4141 6.24219L13.75 1.51562C14.375 0.890625 15.2734 0.5 16.25 0.5C18.3203 0.5 20 2.17969 20 4.25C20 4.95312 19.7656 5.65625 19.4141 6.24219Z" fill="#333333"/> </svg> <span id="time"></span> </div> </div> <div class="flex"> <p id="question" class="p-big"></p> </div> <div class="flex"> <button id="answerA" onclick="answerA_clicked()"></button> </div> <div class="flex"> <button id="answerB" onclick="answerB_clicked()"></button> </div> <div class="flex"> <button id="answerC" onclick="answerC_clicked()"></button> </div> </div> <div id="div-lose" class="lose"> <div class="time-line red"></div> <div class="time"> <svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M6.25 1.51562L0.546875 6.24219C0.195312 5.65625 0 4.99219 0 4.25C0 2.17969 1.64062 0.5 3.71094 0.5C4.6875 0.5 5.58594 0.890625 6.25 1.51562ZM10.9375 11.3984L12.5 12.9609C12.8906 13.3516 12.8906 13.9375 12.5 14.2891C12.1484 14.6797 11.5625 14.6797 11.2109 14.2891L9.33594 12.4141C9.14062 12.2578 9.0625 12.0234 9.0625 11.75V7.6875C9.0625 7.17969 9.45312 6.75 10 6.75C10.5078 6.75 10.9375 7.17969 10.9375 7.6875V11.3984ZM4.49219 18.5859L2.8125 20.2266C2.46094 20.6172 1.875 20.6172 1.52344 20.2266C1.13281 19.875 1.13281 19.2891 1.52344 18.8984L3.16406 17.2578C1.95312 15.7734 1.25 13.8594 1.25 11.75C1.25 6.94531 5.15625 3 10 3C14.8047 3 18.75 6.94531 18.75 11.75C18.75 13.8594 18.0078 15.7734 16.7969 17.2578L18.4375 18.8984C18.8281 19.2891 18.8281 19.875 18.4375 20.2266C18.0859 20.6172 17.5 20.6172 17.1484 20.2266L15.4688 18.5859C13.9844 19.7969 12.0703 20.5 10 20.5C7.89062 20.5 5.97656 19.7969 4.49219 18.5859ZM10 18.625C13.7891 18.625 16.875 15.5781 16.875 11.75C16.875 7.96094 13.7891 4.875 10 4.875C6.17188 4.875 3.125 7.96094 3.125 11.75C3.125 15.5781 6.17188 18.625 10 18.625ZM19.4141 6.24219L13.75 1.51562C14.375 0.890625 15.2734 0.5 16.25 0.5C18.3203 0.5 20 2.17969 20 4.25C20 4.95312 19.7656 5.65625 19.4141 6.24219Z" fill="#333333"/> </svg> <span id="time">0:00</span> </div> <h2>Koniec czasu</h2> <p class="p1">Zagraj jeszcze raz!</p> <div class="center"> <button class="btn btn2" onClick="window.location.reload();" type="button">Spróbuj ponownie</button> </div> </div> <div id="div-lose2" class="lose"> <div class="time-line red"></div> <div class="time"> <svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M6.25 1.51562L0.546875 6.24219C0.195312 5.65625 0 4.99219 0 4.25C0 2.17969 1.64062 0.5 3.71094 0.5C4.6875 0.5 5.58594 0.890625 6.25 1.51562ZM10.9375 11.3984L12.5 12.9609C12.8906 13.3516 12.8906 13.9375 12.5 14.2891C12.1484 14.6797 11.5625 14.6797 11.2109 14.2891L9.33594 12.4141C9.14062 12.2578 9.0625 12.0234 9.0625 11.75V7.6875C9.0625 7.17969 9.45312 6.75 10 6.75C10.5078 6.75 10.9375 7.17969 10.9375 7.6875V11.3984ZM4.49219 18.5859L2.8125 20.2266C2.46094 20.6172 1.875 20.6172 1.52344 20.2266C1.13281 19.875 1.13281 19.2891 1.52344 18.8984L3.16406 17.2578C1.95312 15.7734 1.25 13.8594 1.25 11.75C1.25 6.94531 5.15625 3 10 3C14.8047 3 18.75 6.94531 18.75 11.75C18.75 13.8594 18.0078 15.7734 16.7969 17.2578L18.4375 18.8984C18.8281 19.2891 18.8281 19.875 18.4375 20.2266C18.0859 20.6172 17.5 20.6172 17.1484 20.2266L15.4688 18.5859C13.9844 19.7969 12.0703 20.5 10 20.5C7.89062 20.5 5.97656 19.7969 4.49219 18.5859ZM10 18.625C13.7891 18.625 16.875 15.5781 16.875 11.75C16.875 7.96094 13.7891 4.875 10 4.875C6.17188 4.875 3.125 7.96094 3.125 11.75C3.125 15.5781 6.17188 18.625 10 18.625ZM19.4141 6.24219L13.75 1.51562C14.375 0.890625 15.2734 0.5 16.25 0.5C18.3203 0.5 20 2.17969 20 4.25C20 4.95312 19.7656 5.65625 19.4141 6.24219Z" fill="#333333"/> </svg> <span id="time">0:00</span> </div> <h2>Ups! Zła odpowiedź...</h2> <p class="p1">Niestety, tym razem się nie udało!</p> <div class="info-box"> <p id="informacja"></p> </div> <div class="center"> <button class="btn btn2" onClick="window.location.reload();" type="button">Spróbuj ponownie</button> </div> </div> <div id="div-win" class="win"> <h2>Gratulacje!</h2> <p class="p1 p-big">Odpowiedziałeś poprawnie na 10 pytań w czasie: <span id="time-info"></span></p> <div class="center"> <p>Zapisz swój wynik, aby zyskać szansę na wygraną!</p> <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="text" id="name" placeholder="Podaj swoje imię" name="name" required> <input type="email" id="email" placeholder="Podaj swój adres e-mail" name="email" required> <div> <input type="checkbox" id="regulamin" name="regulamin" required/> <label for="regulamin">Zapoznałem się i akceptuję <a target="_blank" href="#">Regulamin</a></label> </div> <div> <input type="checkbox" id="newsletter" name="newsletter" required/> <label for="newsletter">Wyrażam zgodę na przetwarzanie danych na potrzeby udziału w konkursie oraz marketingu zgodnie z <a target="_blank" href="#">Polityką prywatności</a></label> </div> <input type="hidden" id="totaltime" name="totaltime" value="" /> <input class="btn btn2" type="submit" value="Zapisz swój wynik"> </form> </div> <div id='mess'> </div> </div> </div> </div> </main> </body> <script> // get random numbers between nim - max function generateRandomInteger(min, max) { return Math.floor(min + Math.random() * (max - min + 1)) } // convertSeconds to minutes function secondsToTimeString(seconds) { var minutes = 0, hours = 0; if (seconds / 60 > 0) { minutes = parseInt(seconds / 60, 10); seconds = seconds % 60; } if (minutes / 60 > 0) { hours = parseInt(minutes / 60, 10); minutes = minutes % 60; } return ('0' + minutes).slice(-1) + ':' + ('0' + seconds).slice(-2); } function convertMillisecondsToHumanReadableTime(ms) { let seconds = Math.floor(ms/1000); let minutes = Math.floor(seconds/60); let hours = Math.floor(minutes/60); seconds = seconds % 60; minutes = minutes % 60; hours = hours < 10 ? "0" + hours : hours; minutes = minutes < 10 ? "0" + minutes : minutes; seconds = seconds < 10 ? "0" + seconds : seconds; return `${minutes}:${seconds}`; } //variables var quiz = []; quiz[0] = new Question("Pytanie 1", "Prawidłowa odp do 1", "test1", "test11"); quiz[1] = new Question("Pytanie 2 Jakieś długie pytanie aby sprawdzić czy dobrze wygląda długie pytanie na dwa wiersze lub więcej wierszy", "Prawidłowa odp do 2", "Test2", "test22"); quiz[3] = new Question("treść pyt Pytanie 3", "Prawidłowa odp do 3", "Test3", "test33"); quiz[4] = new Question("treść pyt Pytanie 4", "Prawidłowa odp do 4", "Test4", "test44"); quiz[5] = new Question("treść pyt Pytanie 5", "Prawidłowa odp do 5", "Test5", "test55"); quiz[6] = new Question("treść pyt Pytanie 6", "Prawidłowa odp do 6", "Test6", "test66"); quiz[7] = new Question("treść pyt Pytanie 7", "Prawidłowa odp do 7", "Test7", "test77"); quiz[8] = new Question("treść pyt Pytanie 8", "Prawidłowa odp do 8", "Test8", "test88"); quiz[9] = new Question("treść pyt Pytanie 9", "Prawidłowa odp do 9", "Test9", "test99"); quiz[10] = new Question("treść pyt Pytanie 10", "Prawidłowa odp do 10", "Test10", "test10"); quiz[11] = new Question("treść pyt Pytanie 11", "Prawidłowa odp do 11", "Test11", "test111"); quiz[12] = new Question("treść pyt Pytanie 12", "Prawidłowa odp do 12", "Test122", "test122"); var quiz_info = []; quiz_info[0] = ("Info do pytania1 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[1] = ("Info do pytania2 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[3] = ("Info do pytania3 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[4] = ("Info do pytania4 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[5] = ("Info do pytania5 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[6] = ("Info do pytania6 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[7] = ("Info do pytania7 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[8] = ("Info do pytania8 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[9] = ("Info do pytania9 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[10] = ("Info do pytania10 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[11] = ("Info do pytania11 <a href='#url'>info</a> tekst dalej za linkiem"); quiz_info[12] = ("Info do pytania12 <a href='#url'>info</a> tekst dalej za linkiem"); var randomQuestion; var answers = []; var currentScore = 1; var currentTime = 0; var currentTime_s = 0; var totalTime = 0; var totalTime_s = 0; var number = 0; var timer; var timer2; var quiz_info_number = 0; btn_start = document.getElementById("start"); div_start = document.getElementById("div-start"); div_quiz = document.getElementById("div-quiz"); div_lose = document.getElementById("div-lose"); div_lose2 = document.getElementById("div-lose2"); div_win = document.getElementById("div-win"); time_line = document.getElementById("time-line"); document.addEventListener("DOMContentLoaded", function(event) { btn_start.addEventListener("click", function() { document.getElementById("score").classList.add("show"); div_start.classList.add("hidden"); div_quiz.classList.add("show"); document.getElementById("time").innerHTML = '1:00'; btnProvideQuestion((number)); }); }); function Question(question, rightAnswer, wrongAnswer1, wrongAnswer2) { this.question = question; this.rightAnswer = rightAnswer; this.wrongAnswer1 = wrongAnswer1; this.wrongAnswer2 = wrongAnswer2; }; function shuffle(o) { for (var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); return o; }; function getQ(step) { if (step == 0) { randomQuestion = quiz[step]; //getQuestion 1 quiz_info_number = step; } else if (step == 1) { randomQuestion = quiz[step]; //getQuestion 2 quiz_info_number = step; } else if (step == 2) { quiz_info_number = generateRandomInteger(3, 5); randomQuestion = quiz[quiz_info_number]; //getQuestion random 3-5 } else if (step == 3) { quiz_info_number = generateRandomInteger(6, 8); randomQuestion = quiz[quiz_info_number]; //getQuestion random 6-8 randomQuestion = quiz[generateRandomInteger(6, 10)]; //getQuestion random 6-8 } else if (step == 4) { quiz_info_number = generateRandomInteger(10, 12); randomQuestion = quiz[quiz_info_number]; //getQuestion random 10 -12 } return randomQuestion } function myTimer() { currentTime_s = 0; clearInterval(timer); document.getElementById("time").innerHTML = '1:00'; var timeLeft =6000; timer = setInterval(() => { timeLeft --; currentTime_s++; if (timeLeft > 1000) { document.getElementById("time").innerHTML = '0:' + Math.floor(timeLeft/100); } else { document.getElementById("time").innerHTML = '0:0' + Math.floor(timeLeft/100); } if (timeLeft === 0) { clearInterval(timer); div_start.classList.add("hidden"); div_quiz.classList.remove("show"); div_quiz.classList.add("hidden"); div_lose.classList.add('show'); } },10); } function btnProvideQuestion(number) { myTimer(); time_line.classList.remove("start"); void time_line.offsetWidth; time_line.classList.add("start"); question = getQ(number); answers = [question.rightAnswer, question.wrongAnswer1, question.wrongAnswer2]; shuffle(answers); document.getElementById("question").innerHTML = question.question; document.getElementById("answerA").value = answers[0]; document.getElementById("answerA").innerHTML = answers[0]; document.getElementById("answerB").value = answers[1]; document.getElementById("answerB").innerHTML = answers[1]; document.getElementById("answerC").value = answers[2]; document.getElementById("answerC").innerHTML = answers[2]; } function answerA_clicked() { var answerA = document.getElementById("answerA"); checkAnswer(answerA); } function answerB_clicked() { var answerB = document.getElementById("answerB"); checkAnswer(answerB); } function answerC_clicked() { var answerC = document.getElementById("answerC"); checkAnswer(answerC); } function adjustScore(isCorrect) { // debugger; if (isCorrect) { currentScore++; } else { if (currentScore > 0) { currentScore--; } } document.getElementById("score").innerHTML = "Pytanie " + currentScore + "/10"; currentTime_s = currentTime_s * 10; totalTime_s = totalTime_s + currentTime_s; document.getElementById("totaltime_t").innerHTML = totalTime_s + 'ms'; document.getElementById("time-info").innerHTML = convertMillisecondsToHumanReadableTime(totalTime_s); document.getElementById("totaltime").value = totalTime_s; } function checkAnswer(answer) { if (answer.value == question.rightAnswer) { answer.classList.add('good'); function sleep(time) { return new Promise((resolve) => setTimeout(resolve, time)); } // Usage! sleep(1000).then(() => { adjustScore(true); number++; answer.classList.remove('good'); if (number < 5) { btnProvideQuestion(number); } else if (number = 5) { clearInterval(timer); div_quiz.classList.remove('show'); div_quiz.classList.add("hidden"); div_win.classList.add('show'); div_quiz.classList.remove('show'); document.getElementById("score").classList.remove("show"); } }); } else { answer.classList.add('false'); function sleep(time) { return new Promise((resolve) => setTimeout(resolve, time)); } sleep(1000).then(() => { div_start.classList.add("hidden"); div_quiz.classList.remove("show"); div_quiz.classList.add("hidden"); div_lose2.classList.add('show'); // show info document.getElementById("informacja").innerHTML = quiz_info[quiz_info_number]; currentScore = 0; number = 0; }); } } </script> </html>
[-] form.js
[edit]
[+]
..
[-] COMMITMENT
[edit]
[+]
language
[+]
src
[-] form.php
[edit]
[+]
vendor
[-] show.php
[edit]
[-] verifyemail.php
[edit]
[-] composer
[edit]
[-] HackTimer.js
[edit]
[+]
css
[-] get_oauth_token.php
[edit]
[-] composer.bat
[edit]
[-] composer.json
[edit]
[-] composer.phar
[edit]
[-] index.php
[edit]
[+]
edit