Skip to content

Commit

Permalink
mise à jour du 13 novembre
Browse files Browse the repository at this point in the history
  • Loading branch information
bouloan committed Nov 13, 2017
1 parent c9d4b39 commit a64e7ee
Show file tree
Hide file tree
Showing 12 changed files with 360 additions and 267 deletions.
36 changes: 0 additions & 36 deletions Class/Check.php

This file was deleted.

29 changes: 29 additions & 0 deletions Class/CheckSubmittedData.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

class CheckSubmittedData
{
private $errorMessage;

private $formDataValidation = true;

/*vérification de la validité des champs du formulaire.
En cas de non validité, un message d'erreur est enregistré dans la varaible errorMessage et le formulaire n'est pas validé*/
public function checkForm(FormData $data)
{
foreach ($data->getFormData() as $key =>$value) {
if(!empty($value['regex']) && !preg_match($value['regex'], $_POST[$key])){
$this->errorMessage .= '<p class="errorMessageCheckFormPhp">'.$value['errMessage'].'</p>';
$this->formDataValidation = false;
}
}
}

// récupération de tous les messages d'erreur après que le formulaire ai été rempli
public function getErrorMessage(){
return $this->errorMessage;
}

public function getFormDataValidation(){
return $this->formDataValidation;
}
}
74 changes: 9 additions & 65 deletions Class/Email.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,6 @@ class Email

private $message;

private $txtMessage;

private $htmlMessage;

private $boundary;

private $lineBreak;

private $validationMessage;
Expand All @@ -31,11 +25,10 @@ public function getAddresseeEmail(){
public function setHeader($sender, $sendAddress, $reply, $replyAddress)
{
$this->setLineBreak($this->getAddresseeEmail());
$this->setBoundary();
$this->header = "From: ".$sender."<".$sendAddress.">".$this->getLineBreak();
/*$this->setBoundary();*/
$this->header .= "From: ".$sender."<".$sendAddress.">".$this->getLineBreak();
$this->header .= "Reply-to: ".$reply." <".$replyAddress.">".$this->getLineBreak();
$this->header .= "MIME-Version: 1.0".$this->getLineBreak();
$this->header .= "Content-Type: multipart/alternative;".$this->getLineBreak()." boundary=".$this->getBoundary().$this->getLineBreak();
$this->header .= "Content-Type: text/html;charset=\"utf-8\"".$this->getLineBreak();
}

public function getHeader()
Expand All @@ -45,32 +38,17 @@ public function getHeader()

public function setSubject($subject)
{
$this->subject = $subject;
$this->subject = utf8_encode($subject);
}

public function getSubject()
{
return $this->subject;
}

public function setMessage()
public function setMessage($message)
{
$this->setLineBreak($this->getAddresseeEmail());
$this->setBoundary();
$this->message = $this->getLineBreak()."--".$this->getBoundary().$this->getLineBreak();
//ajout du message au format texte
$this->message .= "Content-Type: text/html; charset=\"ISO-8859-1\"".$this->getLineBreak();
$this->message .= "Content-Transfer-Encoding: 8bit".$this->getLineBreak();
$this->message .= $this->getLineBreak().$this->getTxtMessage().$this->getLineBreak();

$this->message .= $this->getLineBreak()."--".$this->getBoundary().$this->getLineBreak();
//ajout du message au format HTML
$this->message .= "Content-Type: text/html; charset=\"ISO-8859-1\"".$this->getLineBreak();
$this->message .= "Content-Transfer-Encoding: 8bit".$this->getLineBreak();
$this->message .= $this->getLineBreak().$this->getHtmlMessage().$this->getLineBreak();

$this->message .= $this->getLineBreak()."--".$this->getBoundary().$this->getLineBreak();
$this->message .= $this->getLineBreak()."--".$this->getBoundary().$this->getLineBreak();
$this->message = $message;

}

Expand All @@ -79,36 +57,6 @@ public function getMessage()
return $this->message;
}

public function setTxtMessage($txtMessage)
{
$this->txtMessage = $txtMessage;
}

public function getTxtMessage()
{
return $this->txtMessage;
}

public function setHtmlMessage($htmlMessage)
{
$this->htmlMessage = $htmlMessage;
}

public function getHtmlMessage()
{
return $this->htmlMessage;
}

public function setBoundary()
{
$this->boundary = "-----=".md5(rand());
}

public function getBoundary()
{
return $this->boundary;
}

public function setLineBreak($email){
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $email)) // On filtre les serveurs qui rencontrent des bogues.
{
Expand All @@ -124,12 +72,9 @@ public function getLineBreak(){
return $this->lineBreak;
}

public function setValidationMessage()
public function setValidationMessage($message)
{
$this->validationMessage = '<p>Votre message a bien été transmis au collectif Union Square, vous recevrez une réponse dans les meilleurs délais.<p>
<form action="http://localhost/form/index.php">
<input type="submit" value="retour à la page d\'accueil" />
</form>';
$this->validationMessage = $message;
}

public function getValidationMessage()
Expand All @@ -139,8 +84,7 @@ public function getValidationMessage()

public function sentEmail()
{
$this->setMessage();
return mail($this->getAddresseeEmail(), $this->getSubject(), $this->getMessage(), $this->getHeader());
return mail($this->getAddresseeEmail(), utf8_decode($this->getSubject()), $this->getMessage(), $this->getHeader());
}

}
73 changes: 73 additions & 0 deletions Class/FormData.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?php

class FormData
{
//tableau contenant les données nécessaires à la création du formulaire
private $formData =[
'contactName'=>[
'type'=> 'text',
'value' =>'',
'name' =>'contactName',
'labelContent' => 'Nom *',
'placeholder' =>'' ,
'required'=>'required',
'errMessage' =>"<img src=\"img/unValid.svg\" alt=\"icône d'erreur\"> Votre nom ne semble pas valide (entre 2 et 60 caractères, absence de chiffre)",
'regex'=>'/^[A-Za-zéèêëàîïôù-]{2,}$/'],
'companyName'=>[
'type'=> 'text',
'value' =>'',
'name' =>'companyName',
'labelContent' => 'Société ',
'placeholder' =>'' ,
'required'=>'',
'errMessage' =>""],
'contactEmail'=>[
'type'=> 'email',
'value' =>'',
'name' =>'contactEmail',
'labelContent' => 'Email *',
'placeholder' =>'' ,
'required'=>'required',
'errMessage' =>"<img src=\"img/unValid.svg\" alt=\"icône d'erreur\"> Votre adresse Email ne semble pas valide",
'regex' =>'/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/'],
'telephone'=>[
'type'=> 'tel',
'value' =>'',
'name' =>'telephone',
'labelContent' => 'Téléphone *',
'placeholder' =>'' ,
'required'=>'required',
'errMessage' =>"<img src=\"img/unValid.svg\" alt=\"icône d'erreur\"> Votre numéro de téléphone ne semble pas valide (10 chiffres commençant par 0)",
'regex' =>'/^0[1-68]([-. ]?[0-9]{2}){4}$/'],
'message' =>[
'name' => "message",
'labelContent' => 'Votre Message *',
'placeholder' =>'' ,
'required'=>'required',
'errMessage' =>"<img src=\"img/unValid.svg\" alt=\"icône d'erreur\"> Veuillez entrer un message",
'value' => '',
'rows' => '5',
'cols' => '60',
'maxLength' => '2000',
'regex'=>'/^[A-Za-zéèêëàîïôù-]{2,}$/'],
'submit' =>[
'type' => 'submit',
'value' => 'Envoyer',
'data-sitekey' => '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI']
];

public function getFormData(){
return $this->formData;
}

//permet d'afficher dans chaque champs les valeurs qui avait été rentrées dans le formulaire après que ce formulaire ai été soumis
public function setFormDataValue($post){
foreach ($this->formData as $key => &$value) {
if(!empty($post)){
if ($value['value'] == ''){
$value['value'] = $post[$key];
}
}
}
}
}
50 changes: 26 additions & 24 deletions Class/FormStructure.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,43 @@

class Formstructure
{
private $input;
private $formElement;

public function setInput(InputData $data){
//définition du contenu des éléments composant le formulaire
public function setFormElement(FormData $data){

foreach ($data->getData() as $value){
foreach ($data->getFormData() as $value){

//définition de tous les élements Input
if(!empty($value['type'])){

if ($value['type'] =="reset" || $value['type'] =="button"){
$this->input = '<input type="'.$value['type'].'" value = "'.$value['value'].'"></input>';


if ($value['type'] == "text" || $value['type'] == "email" || $value['type'] == "number" || $value['type'] == "tel"){
$this->formElement = '<p>
<label class="labelForm" for="'.$value['name'].'">'.$value['labelContent'].'</label></br>
<input type="'.$value['type'].'" class="champForm" id="'.$value['name'].'" name="'.$value['name'].'" value="'.$value['value'].'" placeholder="'.$value['placeholder'].'" min="0" max="12" step="1" required="'.$value['required'].'">
<span class="messageForm" id="'.$value['name'].'Statut" style="display:none;">'.$value['errMessage'].'</span>
</p>
';

} elseif ($value['type'] =="reset" || $value['type'] =="button"){
$this->formElement = '<input type="'.$value['type'].'" value = "'.$value['value'].'"></input>';
}
//on met le submit à part pour inclure le captcha
elseif($value['type'] =="submit"){
$this->input = '<input type="'.$value['type'].'" class="g-recaptcha" data-sitekey="'.$value['data-sitekey'].'" data-callback="captchaSubmit" data-badge="inline" value = "'.$value['value'].'"></input>';
}

elseif ($value['type'] == "text" || $value['type'] == "email" || $value['type'] == "number" || $value['type'] == "tel"){
$this->input = '<p>
<label class="labelForm" for="'.$value['name'].'">'.$value['labelContent'].'</label>
<input type="'.$value['type'].'" class="champForm" id="'.$value['name'].'" name="'.$value['name'].'" value="'.$value['value'].'" min="0" max="12" step="1" required="required">
<span id="'.$value['name'].'Statut" style="display:none;">'.$value['errMessage'].'</span>
</p>
';
}

$this->formElement = '<button class="g-recaptcha" data-sitekey="'.$value['data-sitekey'].'" data-callback="onSubmit">Envoyer</button>';
}

} elseif(!empty($value['rows'])){
$this->input = '<p>
<label class="labelForm" for="'.$value['name'].'">'.$value['labelContent'].'</label>
<textarea name= "'.$value['name'].'" rows= "'.$value['rows'].'" cols="'.$value['cols'].'" required="required" maxlength="'.$value['maxLength'].'">'.$value['value'].'</textarea>
} /*définition des éléments de type textarea*/
elseif(!empty($value['rows'])){
$this->formElement = '<p>
<label class="labelForm" for="'.$value['name'].'">'.$value['labelContent'].'</label></br>
<textarea name= "'.$value['name'].'" id="'.$value['name'].'" rows= "'.$value['rows'].'" cols="'.$value['cols'].'" required="'.$value['required'].'" maxlength="'.$value['maxLength'].'" placeholder="'.$value['placeholder'].'">'.$value['value'].'</textarea>
<span class="messageForm" id="'.$value['name'].'Statut" style="display:none;">'.$value['errMessage'].'</span>
</p>
<p>Champs Obligatoires *<p>
';
}
echo $this->input;
echo $this->formElement;
}
}
}
Loading

0 comments on commit a64e7ee

Please sign in to comment.