Add Login - Signin Messages error

pull/20/head
tomivt 5 months ago
parent 5fccbca698
commit 7d2cb11f89

@ -5,12 +5,13 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="afa12d51-331f-4dbc-a297-7289ad4e396d" name="Changes" comment=""> <list default="true" id="afa12d51-331f-4dbc-a297-7289ad4e396d" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/dataSources/351a7e7c-c4d1-4e89-bf03-667b32764270.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/351a7e7c-c4d1-4e89-bf03-667b32764270.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/351a7e7c-c4d1-4e89-bf03-667b32764270/storage_v2/_src_/database/dbwikifantasy.OCIa2Q/schema/public.abK9xQ.meta" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/351a7e7c-c4d1-4e89-bf03-667b32764270/storage_v2/_src_/database/dbwikifantasy.OCIa2Q/schema/public.abK9xQ.meta" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/index.php" beforeDir="false" afterPath="$PROJECT_DIR$/index.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Controleur/FrontControler.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Controleur/FrontControler.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Controleur/QuizController.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Controleur/QuizController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Controleur/VisitorControler.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Controleur/VisitorControler.php" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Controleur/VisitorControler.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Controleur/VisitorControler.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Gateway/userGateway.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Gateway/userGateway.php" afterDir="false" /> <change beforePath="$PROJECT_DIR$/vue/templates/login.html.twig" beforeDir="false" afterPath="$PROJECT_DIR$/vue/templates/login.html.twig" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Model/userModel.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Model/userModel.php" afterDir="false" /> <change beforePath="$PROJECT_DIR$/vue/templates/signin.html.twig" beforeDir="false" afterPath="$PROJECT_DIR$/vue/templates/signin.html.twig" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -121,7 +122,11 @@
<workItem from="1731254310060" duration="6803000" /> <workItem from="1731254310060" duration="6803000" />
<workItem from="1731266281659" duration="3339000" /> <workItem from="1731266281659" duration="3339000" />
<workItem from="1731284706585" duration="215000" /> <workItem from="1731284706585" duration="215000" />
<workItem from="1731284930148" duration="2409000" /> <workItem from="1731284930148" duration="2692000" />
<workItem from="1731335752621" duration="4170000" />
<workItem from="1731342597283" duration="1536000" />
<workItem from="1731407652445" duration="715000" />
<workItem from="1731501246750" duration="13331000" />
</task> </task>
<servers /> <servers />
</component> </component>

@ -0,0 +1,127 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin2.html.twig */
class __TwigTemplate_487259351c054531e82d7ec374d515ee extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ S'inscrazeazeazeire ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"Entrez votre mot de passe\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"Confirmez votre mot de passe\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" value=\"Inscription\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin2.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin2.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin4.html.twig */
class __TwigTemplate_02d73cdfa663473648587454068306f0 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" value=\"Inscription\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin4.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin4.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin4.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin5.html.twig */
class __TwigTemplate_b1f0b539b8066ca5a58d316472e062b0 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["test"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" value=\"Inscription\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin5.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin5.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin5.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin6.html.twig */
class __TwigTemplate_7a4f39ed5cce012c6d4972b06e431782 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["test"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"hidden\" class=\"btn\" name=\"action\" value=\"validsignin\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin6.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin6.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin6.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin7.html.twig */
class __TwigTemplate_179113c369ca1501764a939233b8ee58 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["test"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" name=\"action\" value=\"validsignin\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin7.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin7.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin7.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin1.html.twig */
class __TwigTemplate_c5ff4ebd3f89e0ca0a1643dfb2cba640 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["test"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" name=\"action\" value=\"validsignin\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin1.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin1.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin1.html.twig");
}
}

@ -0,0 +1,141 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin3.html.twig */
class __TwigTemplate_13f68f972002b997fce4f87301b50b63 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ lo ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" value=\"Inscription\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin3.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 94 => 48, 86 => 43, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin3.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin3.html.twig");
}
}

@ -16,7 +16,7 @@ $co = new \Gateway\Connection('pgsql:host=localhost;dbname=dbwikifantasy;', 'kie
//twig //twig
$loader = new \Twig\Loader\FilesystemLoader('vue/templates'); $loader = new \Twig\Loader\FilesystemLoader('vue/templates');
$twig = new \Twig\Environment($loader, [ $twig = new \Twig\Environment($loader, [
'cache' => 'cache', 'cache' => false,
]); ]);

@ -16,7 +16,7 @@ Class FrontControler{
$this->co=$co; $this->co=$co;
$this->listAction = ['visitor' => array('accueil','search','quote','login','signin','quiz'), $this->listAction = ['visitor' => array('accueil','search','quote','login','signin','quiz','valid'),
'user' => array('quiz','commentary','favorite','logout'), 'user' => array('quiz','commentary','favorite','logout'),
'admin' => array('null')]; 'admin' => array('null')];
@ -38,6 +38,7 @@ Class FrontControler{
$router->map('GET|POST', '/quote/[i:idQuote]?', 'VisitorControler'); $router->map('GET|POST', '/quote/[i:idQuote]?', 'VisitorControler');
$router->map('GET|POST', '/login', 'VisitorControler'); $router->map('GET|POST', '/login', 'VisitorControler');
$router->map('GET|POST', '/signin', 'VisitorControler'); $router->map('GET|POST', '/signin', 'VisitorControler');
$router->map('GET|POST', '/valid', 'VisitorControler');
$router->map('GET|POST', '/quiz/[i:id]?', 'QuizController'); $router->map('GET|POST', '/quiz/[i:id]?', 'QuizController');
$match = $router->match(); $match = $router->match();
@ -63,12 +64,11 @@ Class FrontControler{
$this->vueErreur($dVueEreur); $this->vueErreur($dVueEreur);
} }
if(!$this->verifDroit($action)){ if(!$this->verifDroit($action) ){
$action='login'; $action='login';
$controller='VisitorControler'; $controller='VisitorControler';
} }
$controller = '\\Controleur\\' . $controller; $controller = '\\Controleur\\' . $controller;
$controller = new $controller($this->co, $action); $controller = new $controller($this->co, $action);
if (is_callable(array($controller, $action))) { if (is_callable(array($controller, $action))) {

@ -116,7 +116,6 @@ class QuizController
$idquestion = $question->getIdQuestion(); $idquestion = $question->getIdQuestion();
echo $twig->render('quiz.html.twig', ['question' => $question,'id'=>$idquestion]); echo $twig->render('quiz.html.twig', ['question' => $question,'id'=>$idquestion]);
} }
public function getNumberOfQuestion() : int public function getNumberOfQuestion() : int

@ -15,6 +15,8 @@ Class VisitorControler {
private UserModel $mdl; private UserModel $mdl;
private array $errors;
/** /**
* @throws SyntaxError * @throws SyntaxError
* @throws RuntimeError * @throws RuntimeError
@ -41,6 +43,9 @@ Class VisitorControler {
case "signin": case "signin":
$this -> visitorSignIn(); $this -> visitorSignIn();
break; break;
case "valid":
$this -> toSignIn();
break;
default: default:
break; break;
} }
@ -66,8 +71,6 @@ Class VisitorControler {
*/ */
public function visitorLogIn(): void public function visitorLogIn(): void
{ {
global $vues;
global $twig; global $twig;
echo $twig->render("login.html.twig"); echo $twig->render("login.html.twig");
@ -87,8 +90,7 @@ Class VisitorControler {
{ {
if (password_verify($mdp, $user->getPassword())) if (password_verify($mdp, $user->getPassword()))
{ {
$_SESSION['pseudo'] = $pseudo; $_SESSION['user'] = $pseudo;
$_SESSION['email'] = $user->getEmail();
header("Location: /"); header("Location: /");
} }
else die(); /* Afficher Erreur Mot de passe */ else die(); /* Afficher Erreur Mot de passe */
@ -105,16 +107,22 @@ Class VisitorControler {
*/ */
public function visitorSignIn(): void public function visitorSignIn(): void
{ {
global $vues;
global $twig; global $twig;
echo $twig->render("signin.html.twig"); echo $twig->render("signin.html.twig");
$this -> toSignIn();
} }
/**
* @throws RuntimeError
* @throws SyntaxError
* @throws LoaderError
*/
public function toSignIn() : void public function toSignIn() : void
{ {
global $twig;
$this -> errors = [null, null, null];
if ($_POST) { if ($_POST) {
$pseudo = $_POST['pseudo'] ?? null; $pseudo = $_POST['pseudo'] ?? null;
$email = $_POST['email'] ?? null; $email = $_POST['email'] ?? null;
@ -122,21 +130,30 @@ Class VisitorControler {
$cmdp = $_POST['cmdp'] ?? null; $cmdp = $_POST['cmdp'] ?? null;
if ($mdp != $cmdp) { if ($mdp != $cmdp) {
die(); /* Afficher Erreur Mot de passe */ $this->errors[2] = "Mots de passe incorrects";
//$this->visitorSignIn();
echo $twig->render("signin.html.twig", ['error' => $this->errors]);
exit();
} }
$option = ['cost' => 12]; $option = ['cost' => 12];
$hmdp = password_hash($mdp, PASSWORD_BCRYPT, $option); $hmdp = password_hash($mdp, PASSWORD_BCRYPT, $option);
$isUserAlreadyUsed = $this -> mdl -> getUsername($pseudo); $isUserAlreadyUsed = $this -> mdl -> getUsername($pseudo);
$isEmailAlreadyUsed = $this -> mdl -> getEmail($email); $isEmailAlreadyUsed = $this -> mdl -> getEmail($email);
if ($isUserAlreadyUsed || $isEmailAlreadyUsed) if ($isUserAlreadyUsed) {
die(); /* Afficher Message Erreur */ $this->errors[0] = "Pseudo déjà utilisé";
echo $twig->render("signin.html.twig", ['error' => $this->errors]);
exit();
}
else if ($isEmailAlreadyUsed) {
$this->errors[1] = "Email déjà utilisé";
echo $twig->render("signin.html.twig", ['error' => $this->errors]);
exit();
}
else echo $this->mdl->insertUser($pseudo, $email, $hmdp); else echo $this->mdl->insertUser($pseudo, $email, $hmdp);
$_SESSION["pseudo"] = $pseudo; $_SESSION["pseudo"] = $pseudo;
$_SESSION["email"] = $email;
header("Location: /"); header("Location: /");
} }

@ -29,14 +29,14 @@
<form class="login" method="post"> <form class="login" method="post">
<p> <strong>Identifiant *</strong></p> <p> <strong>Identifiant *</strong></p>
<input type="text" class="connexion" name="pseudo" id="pseudo" placeholder="Entrez votre pseudo ..." required /> <input type="text" class="connexion" name="pseudo" id="pseudo" placeholder="Entrez votre pseudo" required />
<p> <strong> Mot de passe *</strong></p> <p> <strong> Mot de passe *</strong></p>
<input type="password" class="connexion" name="mdp" id="mdp" placeholder="Entrez votre mdp ..." required /> <input type="password" class="connexion" name="mdp" id="mdp" placeholder="Entrez votre mdp" required />
<div class="createAccount"> <div class="createAccount">
<p class="createAccount">Vous n'avez pas de compte?</p> <p class="createAccount">Vous n'avez de compte?</p>
<a href="signin.html.twig" class="createAccount">S'incrire</a> <a href="/signin" class="createAccount">S'incrire</a>
</div> </div>

@ -26,31 +26,34 @@
</div> </div>
</div> </div>
<h1>▶ S'inscrire ◀</h1> <h1>▶ S'inscrire ◀</h1>
<form method="post"> <form method="post" action="/valid">
<div class="signin"> <div class="signin">
<div class="DivId"> <div class="DivId">
<p>Identifiant *</p> <p>Identifiant *</p>
<input type="text" class="champ" id="pseudo" name="pseudo" required/> <input type="text" class="champ" id="pseudo" name="pseudo" placeholder="Entrer Pseudonyme" required/>
{% if error[0] != null %}
<p style="color: red"> {{ error[0] }} </p>
{% endif %}
</div> </div>
<div class="DivEmail"> <div class="DivEmail">
<p>Email *</p> <p>Email *</p>
<input type="email" class="champ" id="email" name="email" required/> <input type="email" class="champ" id="email" name="email" placeholder="Entrer Email" required/>
{% if error[1] != null %}
<p style="color: red"> {{ error[1] }} </p>
{% endif %}
</div> </div>
<div class="mdp"> <div class="mdp">
<p>Mot de passe *</p> <p>Mot de passe *</p>
<input type="password" class="champ" id="mdp" name="mdp" required placeholder="{{ errors }}"/> <input type="password" class="champ" id="mdp" name="mdp" required placeholder="Entrer Mot de passe"/>
{% if errors %}
<div>{{ errors }}</div>
{% endif %}
</div> </div>
<div class="confmdp"> <div class="confmdp">
<p>Confirmer mot de passe *</p> <p>Confirmer mot de passe *</p>
<input type="password" class="champ" id="cmdp" name="cmdp" required/> <input type="password" class="champ" id="cmdp" name="cmdp" placeholder="Confirmer Mot de passe" required/>
{% if errors %} {% if error[2] != null %}
<div>{{ errors }}</div> <p style="color: red"> {{ error[2] }} </p>
{% endif %} {% endif %}
</div> </div>
@ -60,7 +63,7 @@
</div> </div>
<div class="confirmer"> <div class="confirmer">
<input type="submit" class="btn" value="Inscription" /> <input type="submit" class="btn" name="action" value="s'inscrire" />
</div> </div>
</div> </div>
</form> </form>

@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../public/styles/styleSignin.css" media="screen">
<title>Wiki Fantasy : Inscription</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
<script defer src="../public/script/theme-toggle.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<a href="favorite.html"><img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false"></a>
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<a href="quiz.html"><img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false"></a>
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>▶ z{{ test }} aeazrazeraz ◀</h1>
<form method="post">
<div class="signin">
<div class="DivId">
<p>Identifiant *</p>
<input type="text" class="champ" id="pseudo" name="pseudo" placeholder="Id" required/>
</div>
<div class="DivEmail">
<p>Email *</p>
<input type="email" class="champ" id="email" name="email" required/>
</div>
<div class="mdp">
<p>Mot de passe *</p>
<input type="password" class="champ" id="mdp" name="mdp" required placeholder="{{ errors }}"/>
</div>
<div class="confmdp">
<p>Confirmer mot de passe *</p>
<input type="password" class="champ" id="cmdp" name="cmdp" placeholder="{{ errors }}" required/>
</div>
<div class="imgprof">
<p>Image *</p>
</div>
<div class="confirmer">
<input type="submit" class="btn" name="action" value="validsignin" />
</div>
</div>
</form>
</body>
</html>
Loading…
Cancel
Save