fix api group routes, install google/recaptcha, add more templates
This commit is contained in:
parent
6cb63e6938
commit
61d954d5fc
76
api/contact.php
Normal file
76
api/contact.php
Normal file
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
function verifyCaptcha(){
|
||||
$url = 'https://www.google.com/recaptcha/api/siteverify';
|
||||
$data = array(
|
||||
'secret' => '6LeLxy4UAAAAABClplWLJUjZ1_nhX_-SI7CuNcm8',
|
||||
'response' => $_POST["g-recaptcha-response"]
|
||||
);
|
||||
$options = array(
|
||||
'http' => array (
|
||||
'header' => 'Content-Type: application/x-www-form-urlencoded\r\n',
|
||||
'method' => 'POST',
|
||||
'content' => http_build_query($data)
|
||||
)
|
||||
);
|
||||
$context = stream_context_create($options);
|
||||
$verify = file_get_contents($url, false, $context);
|
||||
$captcha_success=json_decode($verify);
|
||||
return $captcha_success;
|
||||
}
|
||||
// process.php
|
||||
|
||||
$errors = array(); // array to hold validation errors
|
||||
$data = array(); // array to pass back data
|
||||
|
||||
// validate the variables ======================================================
|
||||
// if any of these variables don't exist, add an error to our $errors array
|
||||
|
||||
if (empty($_POST['nombre']))
|
||||
$errors['nombre'] = 'Name is required.';
|
||||
|
||||
if (empty($_POST['email']))
|
||||
$errors['email'] = 'Email is required.';
|
||||
|
||||
if (empty($_POST['mensage']))
|
||||
$errors['mensage'] = 'Mensaje is required.';
|
||||
|
||||
if(empty($_POST['g-recaptcha-response'])){
|
||||
$errors['recaptcha'] = 'Debe validar el captcha';
|
||||
}
|
||||
else if(!verifyCaptcha()){
|
||||
$errors['recaptcha'] = 'Error en la validación de ReCaptcha';
|
||||
}
|
||||
|
||||
// return a response ===========================================================
|
||||
|
||||
// if there are any errors in our errors array, return a success boolean of false
|
||||
if ( ! empty($errors)) {
|
||||
|
||||
// if there are items in our errors array, return those errors
|
||||
$data['success'] = false;
|
||||
$data['errors'] = $errors;
|
||||
} else {
|
||||
|
||||
// if there are no errors process our form, then return a message
|
||||
|
||||
// DO ALL YOUR FORM PROCESSING HERE
|
||||
// THIS CAN BE WHATEVER YOU WANT TO DO (LOGIN, SAVE, UPDATE, WHATEVER)
|
||||
|
||||
// show a message of success and provide a true success variable
|
||||
$nombre = $_POST['nombre'];
|
||||
$mail = $_POST['email'];
|
||||
$msg = $_POST['mensage'];
|
||||
$headers = 'From: ' . $mail . "\r\n" .
|
||||
'Reply-To: ' . $mail . "\r\n" .
|
||||
'X-Mailer: PHP/' . phpversion();
|
||||
mail('6coloquio@cmat.edu.uy', 'Contacto de ' . $nombre, $msg, $headers);
|
||||
|
||||
$data['success'] = true;
|
||||
$data['message'] = 'Mensaje enviado,<br/>A la brevedad el comite organizador se pondrá en contacto con usted.';
|
||||
|
||||
}
|
||||
|
||||
// return all our data to an AJAX call
|
||||
echo json_encode($data);
|
||||
|
||||
?>
|
135
api/register.php
Normal file
135
api/register.php
Normal file
@ -0,0 +1,135 @@
|
||||
<?php
|
||||
|
||||
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
include_once $root.'/db/db.php';
|
||||
|
||||
function verifyCaptcha(){
|
||||
$url = 'https://www.google.com/recaptcha/api/siteverify';
|
||||
$data = array(
|
||||
'secret' => '6LesRDsUAAAAAA6t3UgL4U4Foc9njmXX-8HIiLj_',
|
||||
'response' => $_POST["g-recaptcha-response"]
|
||||
);
|
||||
$options = array(
|
||||
'http' => array (
|
||||
'header' => 'Content-Type: application/x-www-form-urlencoded\r\n',
|
||||
'method' => 'POST',
|
||||
'content' => http_build_query($data)
|
||||
)
|
||||
);
|
||||
$context = stream_context_create($options);
|
||||
$verify = file_get_contents($url, false, $context);
|
||||
$captcha_success=json_decode($verify);
|
||||
return $captcha_success;
|
||||
}
|
||||
|
||||
/*function verifyExistance($doc,$mail){
|
||||
$fp = fopen("2021y22.csv", 'r');
|
||||
fclose($fp);
|
||||
}*/
|
||||
|
||||
/*function setheaders() {
|
||||
$fp = fopen("2021y22.csv", 'w');
|
||||
$cabezal = array('Nombre', 'Apellido','TipoDoc','Documento',
|
||||
'Direccion','Pais','Ciudad', 'Telefono', 'Email',
|
||||
'Profesión','Trabaja en','Financiación','Detalle Financiación');
|
||||
if($fp){
|
||||
fputcsv($fp,$cabezal);
|
||||
fclose($fp);
|
||||
}
|
||||
else{
|
||||
die("unable to open file");
|
||||
}
|
||||
}*/
|
||||
|
||||
/*function registrar($fila) {
|
||||
$fp = fopen("2021y22.csv", 'a');
|
||||
if($fp){
|
||||
fputcsv($fp,$fila);
|
||||
fclose($fp);
|
||||
|
||||
}
|
||||
else{
|
||||
die("unable to open file");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function bkpregister(){
|
||||
$fecha = date("d-m-H:i:s");
|
||||
$filebkp = "bkp/registro-".$fecha.".bak.csv";
|
||||
copy("2021y22.csv",$filebkp);
|
||||
}*/
|
||||
|
||||
$errors = array(); // array to hold validation errors
|
||||
$data = array(); // array to pass back data
|
||||
|
||||
|
||||
// validate the variables ======================================================
|
||||
$data['nombre'] = $_POST['nombre'];
|
||||
$data['apellido'] = $_POST['apellido'];
|
||||
$data['titulo'] = $_POST['titulo'];
|
||||
$data['afiliacion'] = $_POST['afiliacion'];
|
||||
$data['ciudad'] = $_POST['ciudad'];
|
||||
$data['pais'] = $_POST['pais'];
|
||||
$data['email'] = $_POST['email'];
|
||||
$data['fechaLlegada'] = $_POST['bda'];
|
||||
$data['fechaPartida'] = $_POST['eda'];
|
||||
$data['financiacion'] = $_POST['financiacion'];
|
||||
$data['invitado'] = $_POST['invited'];
|
||||
$data['cartaInvitacion'] = $_POST['letterinvited'];
|
||||
$data['roomingPref'] = $_POST['roomtype'];
|
||||
$data['roommate'] = $_POST['roomate'];
|
||||
$data['fechaRegistro'] = date("Y-m-d H:i:s");
|
||||
$fila = $data;
|
||||
|
||||
if (empty($_POST['nombre']))
|
||||
$errors['nombre'] = 'Nombre is required.';
|
||||
|
||||
if (empty($_POST['apellido']))
|
||||
$errors['apellido'] = 'Apellido is required.';
|
||||
|
||||
if (empty($_POST['email']))
|
||||
$errors['email'] = 'E-Mail de contacto vacio o incorrecto';
|
||||
|
||||
if(empty($_POST['g-recaptcha-response'])){
|
||||
$errors['recaptcha'] = 'Debe validar el captcha';
|
||||
}
|
||||
else if(!verifyCaptcha()){
|
||||
$errors['recaptcha'] = 'Error en la validación de ReCaptcha';
|
||||
}
|
||||
|
||||
/*GUAMBIA ACAAA!!!!*/
|
||||
$errors=array();
|
||||
/* NO GILEAR!!!!!*/
|
||||
|
||||
if ( !empty($errors)) {
|
||||
|
||||
// if there are items in our errors array, return those errors
|
||||
$data['success'] = false;
|
||||
$data['errors'] = $errors;
|
||||
}
|
||||
else {
|
||||
$data['success'] = true;
|
||||
$db->insert($fila);
|
||||
/*
|
||||
$mail = $data["email"];
|
||||
$nombre = $data["nombre"] . " " . $data["apellido"];
|
||||
$msg = "Hi ". $data["nombre"] ."!\n\n".
|
||||
"You have been Successfully registered to the workshop on Groups, Geometry and Dynamics!\n\n".
|
||||
"For any question, write us to: ggdworkshop@cmat.edu.uy\n\n".
|
||||
"Regards,\n\n".
|
||||
"Organizing Commite, GGD Workshop.";
|
||||
$headers = 'From: ' . "ggdworkshop@cmat.edu.uy" . "\r\n" .
|
||||
'Reply-To: ' . "ggdworkshop@cmat.edu.uy" . "\r\n" .
|
||||
'Content-Type: ' . "text/plain; charset=UTF-8". "\r\n" .
|
||||
'X-Mailer: PHP/' . phpversion();
|
||||
mail($mail, 'Registration confirmation for GGDWorkshop', $msg, $headers);
|
||||
*/
|
||||
$data['message'] = "Registration Successfully!";
|
||||
|
||||
}
|
||||
|
||||
// return all our data to an AJAX call
|
||||
echo json_encode($data);
|
||||
|
||||
?>
|
@ -15,7 +15,8 @@
|
||||
"php": ">=5.5.0",
|
||||
"slim/slim": "^3.1",
|
||||
"monolog/monolog": "^1.17",
|
||||
"slim/twig-view": "^2.3"
|
||||
"slim/twig-view": "^2.3",
|
||||
"google/recaptcha": "^1.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": ">=4.8 < 6.0"
|
||||
|
47
composer.lock
generated
47
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "c068853e76cdab884c36b9e671e23258",
|
||||
"content-hash": "f85f941c60254a0fb9e6426933aeac77",
|
||||
"packages": [
|
||||
{
|
||||
"name": "container-interop/container-interop",
|
||||
@ -37,6 +37,51 @@
|
||||
"homepage": "https://github.com/container-interop/container-interop",
|
||||
"time": "2017-02-14T19:40:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "google/recaptcha",
|
||||
"version": "1.1.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/google/recaptcha.git",
|
||||
"reference": "5a56d15ca10a7b75158178752b2ad8f755eb4f78"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/google/recaptcha/zipball/5a56d15ca10a7b75158178752b2ad8f755eb4f78",
|
||||
"reference": "5a56d15ca10a7b75158178752b2ad8f755eb4f78",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.8"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ReCaptcha\\": "src/ReCaptcha"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Client library for reCAPTCHA, a free service that protect websites from spam and abuse.",
|
||||
"homepage": "http://www.google.com/recaptcha/",
|
||||
"keywords": [
|
||||
"Abuse",
|
||||
"captcha",
|
||||
"recaptcha",
|
||||
"spam"
|
||||
],
|
||||
"time": "2017-03-09T18:44:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "1.23.0",
|
||||
|
@ -2,7 +2,7 @@
|
||||
class DB{
|
||||
private $pdo;
|
||||
|
||||
public function __constructor($dbpdo){
|
||||
public function __construct($dbpdo){
|
||||
$this->pdo = $dbpdo;
|
||||
}
|
||||
|
||||
|
@ -12,10 +12,16 @@ $container['renderer'] = function ($c) {
|
||||
]);
|
||||
};
|
||||
$container['db'] = function ($c) {
|
||||
$db = $c['settings']['db'];
|
||||
$pdo = new PDO('sqlite:'.$db['path']);
|
||||
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
|
||||
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
|
||||
$db = $c->get('settings')['db'];
|
||||
try{
|
||||
$pdo = new PDO('sqlite:'.$db['path']);
|
||||
$pdo->setAttribute( \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION );
|
||||
$pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
|
||||
}
|
||||
catch(\PDOException $e){
|
||||
echo $e->getMessage();
|
||||
}
|
||||
|
||||
return $pdo;
|
||||
};
|
||||
// monolog
|
||||
|
@ -22,36 +22,62 @@ $app->get('/registration', function (Request $request, Response $response, array
|
||||
return $this->renderer->render($response, 'registration.html', $args);
|
||||
});
|
||||
|
||||
$app->post('/reg', function (Request $request, Response $response, array $args) {
|
||||
|
||||
$app->get('/participants', function (Request $request, Response $response, array $args) {
|
||||
// Sample log message
|
||||
$this->logger->debug($resquest->getBody());
|
||||
$db = new DB($this->db);
|
||||
$data = $request->getParsedBody();
|
||||
//var_dump($data);
|
||||
$newresponse = $response->withJson($data);
|
||||
//echo $newresponse;
|
||||
$this->logger->info("GDDWorkshop '/participants' route");
|
||||
$db = new DB($this->db);
|
||||
$data = $db->getAll();
|
||||
|
||||
// Render index view
|
||||
//return $this->renderer->render($response, 'registration.html', $args);
|
||||
return $this->renderer->render($response, 'participants.html', ['registros' => $data]);
|
||||
});
|
||||
|
||||
|
||||
|
||||
/*$app->get('/caca', function (Request $request, Response $response, array $args) {
|
||||
// Sample log message
|
||||
$this->logger->info("GDDWorkshop '/api/register' route");
|
||||
$db = new DB($this->db);
|
||||
$data = $request->getParsedBody();
|
||||
//var_dump($data);
|
||||
$newresponse = $response->withJson($data);
|
||||
return "<h1>caca</h1>";
|
||||
|
||||
});*/
|
||||
|
||||
$app->get('/committess', function (Request $request, Response $response, array $args) {
|
||||
// Sample log message
|
||||
$this->logger->info("GDDWorkshop '/committess' route");
|
||||
|
||||
// Render index view
|
||||
return $this->renderer->render($response, 'committess.html', $args);
|
||||
});
|
||||
|
||||
/*
|
||||
$mw = function ($request, $response, $next) {
|
||||
$response->getBody()->write('BEFORE');
|
||||
$response = $next($request, $response);
|
||||
$response->getBody()->write('AFTER');
|
||||
|
||||
return $response;
|
||||
};*/
|
||||
|
||||
// API ROUTES
|
||||
$app->group('/api', function($app){
|
||||
|
||||
$app->get("/test", function(Request $request, Response $response, array $args) {
|
||||
$this->logger->info("GDDWorkshop '/api/test' route");
|
||||
return var_dump($request);
|
||||
|
||||
});
|
||||
|
||||
$app->post('/register', function (Request $request, Response $response, array $args) {
|
||||
// Sample log message
|
||||
//$this->logger->debug(var_dump($request->getParsedBody()));
|
||||
$db = new DB($this->db);
|
||||
$data = $request->getParsedBody();
|
||||
|
||||
try{
|
||||
$db->insert($data);
|
||||
}
|
||||
catch (Exception $e){
|
||||
$this->logger->debug($e->getMessage());
|
||||
return $e->getMessage();
|
||||
}
|
||||
|
||||
$newresponse = $response->withJson($data);
|
||||
return $newresponse;
|
||||
|
||||
|
||||
});
|
||||
|
||||
});
|
@ -4,7 +4,7 @@ return [
|
||||
'displayErrorDetails' => true, // set to false in production
|
||||
'addContentLengthHeader' => false, // Allow the web server to send the content-length header
|
||||
'debug' => true,
|
||||
|
||||
|
||||
// Renderer settings
|
||||
'renderer' => [
|
||||
'template_path' => __DIR__ . '/../templates/',
|
||||
|
32
templates/participants.html
Normal file
32
templates/participants.html
Normal file
@ -0,0 +1,32 @@
|
||||
{% extends "layout.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<h1><strong>Participants</strong></h1>
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Firstname</th>
|
||||
<th>Lastname</th>
|
||||
<th>Affiliation</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for reg in registros %}
|
||||
<tr>
|
||||
<td>{{ reg.nombre }}</td>
|
||||
<td>{{ reg.apellido }}</td>
|
||||
<td>{{ reg.afiliacion }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user