Daten in Datenbank schreiben,
Daten aus Datenbank auslesen, Anfang SessionManagement
This commit is contained in:
parent
cfc154c407
commit
e727f0e97e
|
@ -1,5 +1,7 @@
|
||||||
{
|
{
|
||||||
"require": {
|
"require": {
|
||||||
"phpmailer/phpmailer": "^6.4"
|
"phpmailer/phpmailer": "^6.4",
|
||||||
|
"rakit/validation": "v1.4.0",
|
||||||
|
"ext-pdo": "*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "d01b4a542231b112db557e6b7e5a5121",
|
"content-hash": "59230ec995edc426fe883cde9a32b541",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "phpmailer/phpmailer",
|
"name": "phpmailer/phpmailer",
|
||||||
|
@ -81,6 +81,52 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2021-03-31T20:06:42+00:00"
|
"time": "2021-03-31T20:06:42+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rakit/validation",
|
||||||
|
"version": "v1.4.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/rakit/validation.git",
|
||||||
|
"reference": "ff003a35cdf5030a5f2482299f4c93f344a35b29"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/rakit/validation/zipball/ff003a35cdf5030a5f2482299f4c93f344a35b29",
|
||||||
|
"reference": "ff003a35cdf5030a5f2482299f4c93f344a35b29",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"php": ">=7.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"php-coveralls/php-coveralls": "^2.2",
|
||||||
|
"phpunit/phpunit": "^6.5",
|
||||||
|
"squizlabs/php_codesniffer": "^3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Rakit\\Validation\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Muhammad Syifa",
|
||||||
|
"email": "emsifa@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP Laravel like standalone validation library",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/rakit/validation/issues",
|
||||||
|
"source": "https://github.com/rakit/validation/tree/v1.4.0"
|
||||||
|
},
|
||||||
|
"time": "2020-08-27T05:07:01+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [],
|
"packages-dev": [],
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
;<?php die(); ?>
|
;<?php die(); ?>
|
||||||
|
|
||||||
|
url = http://localhost
|
||||||
|
user = sample
|
||||||
|
password = password
|
||||||
|
|
||||||
[database]
|
[database]
|
||||||
db_host = localhost
|
db_host = localhost
|
||||||
db_database = alumni
|
db_database = alumni
|
||||||
|
@ -12,6 +16,7 @@ mail_port = 25
|
||||||
mail_user =
|
mail_user =
|
||||||
mail_address =
|
mail_address =
|
||||||
mail_password =
|
mail_password =
|
||||||
|
mail_name = Alumni Max Emden
|
||||||
|
|
||||||
[style]
|
[style]
|
||||||
title = Alumni Max Emden
|
title = Alumni Max Emden
|
||||||
|
|
|
@ -2,4 +2,6 @@ create table entries(id bigint auto_increment primary key, name varchar(255), ma
|
||||||
year int(4), birthday date, verify bool, vocation varchar(255)
|
year int(4), birthday date, verify bool, vocation varchar(255)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table verify(id bigint primary key, uuid BINARY(16) ,foreign key verify(id) REFERENCES entries(id));
|
create table verify(id bigint primary key, uuid VARCHAR(36),foreign key verify(id) REFERENCES entries(id));
|
||||||
|
|
||||||
|
CREATE TRIGGER before_insert_verify BEFORE INSERT ON verify FOR EACH ROW SET new.uuid = uuid();
|
14
general.php
14
general.php
|
@ -1,15 +1,21 @@
|
||||||
<?php
|
<?php
|
||||||
|
$db = getDatabase();
|
||||||
|
|
||||||
function getConfig() {
|
function getConfig() {
|
||||||
return parse_ini_file('config.ini.php');
|
return parse_ini_file('config.ini.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDatabase() {
|
function getDatabase(): PDO {
|
||||||
$config = getConfig();
|
$config = getConfig();
|
||||||
if($db = mysqli_connect($config['db_host'], $config['db_user'], $config['db_password'], $config['db_database'])){
|
|
||||||
return $db;
|
try {
|
||||||
|
$host = $config['db_host'];
|
||||||
|
$database = $config['db_database'];
|
||||||
|
return new PDO("mysql:host=$host;dbname=$database", $config['db_user'], $config['db_password']);
|
||||||
|
}
|
||||||
|
catch(PDOException $e) {
|
||||||
|
echo $e->getMessage();
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function returnHeader() {
|
function returnHeader() {
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
require_once 'general.php';
|
||||||
|
|
||||||
|
returnHeader();
|
||||||
|
$config = getConfig();
|
||||||
|
|
||||||
|
if (isset($_POST['login']) && !empty($_POST['username'])
|
||||||
|
&& !empty($_POST['password'])) {
|
||||||
|
|
||||||
|
if ($_POST['user'] == $config['user'] && $_POST['password'] == $config['password']) {
|
||||||
|
$_SESSION['timeout'] = time();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
returnFooter();
|
||||||
|
|
||||||
|
?>
|
26
overview.php
26
overview.php
|
@ -1,19 +1,22 @@
|
||||||
<?php
|
<?php
|
||||||
require_once 'general.php';
|
require_once 'general.php';
|
||||||
|
|
||||||
|
session_start();
|
||||||
|
if(!isset($_SESSION['user'])) {
|
||||||
|
echo "Nicht angemeldet";
|
||||||
|
http_response_code(401);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
returnHeader();
|
returnHeader();
|
||||||
|
|
||||||
$file = file_get_contents("MOCK_DATA.json");
|
$statement = getDatabase()->prepare("SELECT * from entries WHERE verify = 1");
|
||||||
if ($file === false) {
|
|
||||||
die();
|
if(!$statement->execute()) {
|
||||||
|
echo "database Error";
|
||||||
}
|
}
|
||||||
|
|
||||||
$entries = json_decode($file, true);
|
$entries = $statement->fetchAll(PDO::FETCH_ASSOC);
|
||||||
if ($entries === null) {
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
|
|
||||||
$config = getConfig();
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
@ -43,13 +46,14 @@ $config = getConfig();
|
||||||
|
|
||||||
|
|
||||||
foreach ($entries as $entry) {
|
foreach ($entries as $entry) {
|
||||||
|
$age = date_diff(date_create($entry['birthday']), date_create('now'))->y;
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td><?php echo $entry["name"] ?></td>
|
<td><?php echo $entry["name"] ?></td>
|
||||||
<td><?php echo $entry["vocation"] ?></td>
|
<td><?php echo $entry["vocation"] ?></td>
|
||||||
<td><?php echo $entry["email"] ?></td>
|
<td><?php echo $entry["mail"] ?></td>
|
||||||
<td><?php echo $entry["year"] ?></td>
|
<td><?php echo $entry["year"] ?></td>
|
||||||
<td><?php echo $entry["age"] ?></td>
|
<td><?php echo $age ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
84
submit.php
84
submit.php
|
@ -1,27 +1,76 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
if ($_SERVER['REQUEST_METHOD'] != "POST") {
|
if ($_SERVER['REQUEST_METHOD'] != "POST") {
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
* */
|
||||||
|
|
||||||
require_once 'general.php';
|
require_once 'general.php';
|
||||||
require_once 'vendor/autoload.php';
|
require_once 'vendor/autoload.php';
|
||||||
|
|
||||||
use PHPMailer\PHPMailer\PHPMailer;
|
use PHPMailer\PHPMailer\PHPMailer;
|
||||||
|
use Rakit\Validation\Validator;
|
||||||
|
|
||||||
$name = $_POST['name'];
|
$validator = new Validator;
|
||||||
$mail = $_POST['mail'];
|
|
||||||
$year = $_POST['year'];
|
|
||||||
$birthday = $_POST['birthday'];
|
|
||||||
$vocation = $_POST['vocation'];
|
|
||||||
$privacy = $_POST['privacy'];
|
|
||||||
|
|
||||||
//validate here
|
$validation = $validator->make($_POST,[
|
||||||
|
'name' => 'required',
|
||||||
|
'email' => 'required|email',
|
||||||
|
'year' => 'required|numeric',
|
||||||
|
'birthday' => 'required|date',
|
||||||
|
'vocation' => 'required',
|
||||||
|
'privacy' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$validation->setMessages([
|
||||||
|
'required' => ":attribute muss ausgefüllt werden",
|
||||||
|
'email' => "Die E-Mail Adresse :email ist nicht gültig",
|
||||||
|
'numeric' => ":numeric muss eine Zahl sein",
|
||||||
|
'date' => ":attribute muss ein Datum sein"
|
||||||
|
|
||||||
|
]);
|
||||||
|
|
||||||
|
$validation->validate();
|
||||||
|
|
||||||
|
if($validation->fails()) {
|
||||||
|
$errors = $validation->errors();
|
||||||
|
echo "<pre>";
|
||||||
|
print_r($errors->firstOfAll());
|
||||||
|
echo "</pre>";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$validData = $validation->getValidData();
|
||||||
|
|
||||||
$config = getConfig();
|
$config = getConfig();
|
||||||
|
|
||||||
|
$validData['verify'] = 0;
|
||||||
|
unset($validData['privacy']);
|
||||||
|
|
||||||
|
$db = getDatabase();
|
||||||
|
$statement = $db->prepare("INSERT INTO entries(name, mail, year, birthday, verify, vocation) VALUES (:name, :email, :year, :birthday, :verify, :vocation)");
|
||||||
|
|
||||||
|
if(!$statement->execute($validData)) {
|
||||||
|
echo "Datenbank Fehler";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
$id = $db->lastInsertId();
|
||||||
|
|
||||||
|
$statement = $db->prepare("INSERT INTO verify(id) VALUES (:id)");
|
||||||
|
|
||||||
|
if(!$statement->execute(['id' => $id])) {
|
||||||
|
echo "Datenbank Fehler";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$statement = $db->prepare("SELECT uuid from verify WHERE id = :id");
|
||||||
|
|
||||||
|
if(!$statement->execute(['id' => $id])) {
|
||||||
|
echo "database Error";
|
||||||
|
}
|
||||||
|
|
||||||
|
$uuid = $statement->fetch(PDO::FETCH_ASSOC)['uuid'];
|
||||||
|
|
||||||
$mail = new PHPMailer(true);
|
$mail = new PHPMailer(true);
|
||||||
|
|
||||||
$mail->isSMTP();
|
$mail->isSMTP();
|
||||||
|
@ -32,15 +81,16 @@ $mail->Username = $config['mail_user'];
|
||||||
$mail->Password = $config['mail_password'];
|
$mail->Password = $config['mail_password'];
|
||||||
|
|
||||||
$mail->From = $config['mail_address'];
|
$mail->From = $config['mail_address'];
|
||||||
$mail->FromName = 'Mailer';
|
$mail->FromName = $config['mail_name'];
|
||||||
try {
|
try {
|
||||||
$mail->addAddress('test@joethei.de', 'Joe User');
|
$mail->addAddress($validData['email'], $validData['name']);
|
||||||
} catch (\PHPMailer\PHPMailer\Exception $e) {
|
} catch (\PHPMailer\PHPMailer\Exception $e) {
|
||||||
|
echo $e->getMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
$mail->Subject = 'Here is the subject';
|
$mail->Subject = 'Bestätigung einer Eintragung';
|
||||||
$mail->AltBody = 'Message without html';
|
$mail->AltBody = 'Bitte bestätige deine Eintragung unter folgendem Link: ' . $config['url'] . "/verify.php/?id=" . $uuid;
|
||||||
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
|
$mail->Body = 'Bitte bestätige deine Eintragung bitte <a href="' . $config['url'] . "/verify.php/?id=" . $uuid . '">hier</a>';
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -48,3 +98,11 @@ try {
|
||||||
} catch (\PHPMailer\PHPMailer\Exception $e) {
|
} catch (\PHPMailer\PHPMailer\Exception $e) {
|
||||||
echo $e;
|
echo $e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
returnHeader();
|
||||||
|
?>
|
||||||
|
|
||||||
|
Vielen Dank, bitte bestätige deine E-Mail Adresse
|
||||||
|
|
||||||
|
<?php
|
||||||
|
returnFooter();
|
Loading…
Reference in New Issue