First components for project - User Interface

This commit is contained in:
ccunatbrule
2023-02-02 16:28:06 +01:00
committed by GitHub
parent 9a513b128e
commit 9c9b508096
45 changed files with 1148 additions and 0 deletions

9
connexion.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/connexion/index.php');
}
include_once('./vue/footer.html');

5
contact.php Normal file
View File

@@ -0,0 +1,5 @@
<?php
include_once('./vue/header.html');
include_once('./vue/information/contact/index.html');
include_once('./vue/footer.html');
?>

View File

@@ -0,0 +1,75 @@
<?php
include_once('./modele/membre/connexion.php');
$titre="Connexion";
if ($id!=0) erreur(ERR_IS_CO);
if (!isset($_POST['pseudo'])) { //Page de formulaire
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Connexion</h2>
<form method="post" action="connexion.php">
<br><fieldset>
<label class="labelI" for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br>
<label class="labelI" for="password">Password :</label><input type="password" name="password" id="password" />
</fieldset><br>
<p class="btns"><input type="submit" value="Connexion" class="button-3" /></p>
</form>
<a href="./inscription.php">Pas encore inscrit ?</a><br><br>
</div>
</section>
</div>
<?php
}
else { //Check de l'identification
$message='';
$data = check_Password();
if (empty($_POST['pseudo']) || empty($_POST['password']) ) {
$message = '
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Echec de connexion</h2><br>
<p>Une erreur s\'est produite pendant votre identification!</p>
<p>Vous devez remplir tous les champs</p>
<p>Cliquez <a href="./connexion.php">ici</a> pour revenir à la page de connexion.</p>
</div>
</section>
</div>';
}
else { //Validation de l'accès
if ($data['mdp'] == /*md5*/($_POST['password'])) {
$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['privilege'] = $data['privilege'];
$_SESSION['idclient'] = $data['idclient'];
$message = '
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Connexion réussie!</h2><br>
<p>Bienvenue '.$data['pseudo'].',<br>Vous êtes maintenant connecté!</p>
<p>Cliquez <a href="./espace_membre.php">ici</a> pour accéder a votre espace membre!</p>
</div>
</section>
</div>';
}
else {
$message = '
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Echec de connexion</h2><br>
<p>Une erreur s\'est produite pendant votre identification!</p>
<p>Le mot de passe ou le pseudo entré n\'est pas correct.</p>
<p>Cliquez <a href="./connexion.php">ici</a> pour revenir à la page de connexion.</p>
</div>
</section>
</div>';
}
}
echo $message;
}
include_once('./vue/membre/connexion.php');

View File

@@ -0,0 +1,9 @@
<?php
define('VISITEUR',1);
define('INSCRIT',2);
define('MODO',3);
define('ADMIN',4);
define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté');
?>

View File

@@ -0,0 +1,23 @@
<?php
include_once('./modele/membre/espace.php');
$titre = "Index du forum";
//Initialisation de deux variables
$totaldesmessages = 0;
$categorie = NULL;
$TotalDesMembres = get_MemberCount();
$data = get_LastMember();
$derniermembre = stripslashes(htmlspecialchars($data['pseudo']));
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Espace Membre</h2><br>
<h5>Qui est en ligne ?</h5>
<p>Le site comptent <strong> <?php echo $TotalDesMembres;?></strong> membres.</p><br>
<a href="./profil.php?m=<?php echo $data['idclient']?>&amp;action=consulter"><?php echo $derniermembre;?></a> est le dernier membre.</p>
</div>
</section>
</div>
<?php
include_once('./vue/membre/espace.php');

View File

@@ -0,0 +1,25 @@
<?php
function erreur($err='')
{
$mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
exit('
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Vous êtes pas autorisé a passer ici</h2><br>
<p> '.$mess.' </p>
<p>Cliquez <a href="./espace_membre.php">ici</a> pour revenir à la page d\'accueil</p>
</div>
</section>
</div>');
}
function move_avatar($avatar)
{
$extension_upload = strtolower(substr( strrchr($avatar['name'], '.') ,1));
$name = time();
$nomavatar = str_replace(' ','',$name).".".$extension_upload;
$name = "./images/avatars/".str_replace(' ','',$name).".".$extension_upload;
move_uploaded_file($avatar['tmp_name'],$name);
return $nomavatar;
}
?>

View File

@@ -0,0 +1,140 @@
<?php
include_once('./modele/membre/inscription.php');
$titre="Enregistrement";
if ($id!=0) erreur(ERR_IS_CO);
if (empty($_POST['pseudo'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
{
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Inscription</h2>
<form method="post" action="inscription.php" enctype="multipart/form-data">
<label class="labelI" >*Pseudo</label><br><input name="pseudo" type="text" id="pseudo" placeholder=" Entre 3 à 15 caractères"/><br><br>
<label class="labelI" for="password">*Mot de Passe :</label><input type="password" name="password" id="password" />
<label class="labelI" for="confirm">*Confirmer :</label><input type="password" name="confirm" id="confirm" /><br>
</fieldset>
<label class="labelI" for="email">*Votre adresse email :</label><br><input type="text" name="email" id="email" /><br>
</fieldset>
<label class="labelI" for="localisation">Localisation :</label><br><input type="text" name="localisation" id="localisation" /><br>
</fieldset>
<fieldset><legend class="colorbold marg3 pad1">Profil sur le forum</legend>
<label for="avatar">Choisissez votre avatar :</label><br><input type="file" name="avatar" id="avatar" /><br>(Taille max : 200Ko)
</fieldset><br>
<p class="btns"><input type="submit" value="S'inscrire" class="button-3"/></p><br>
<p>Les champs précédés d'un * sont obligatoires</p>
</form>
</div>
</section>
</div>
<?php
}
else //On est dans le cas traitement
{
$pseudo_erreur1 = NULL;$pseudo_erreur2 = NULL;
$email_erreur1 = NULL;$email_erreur2 = NULL;
$avatar_erreur = NULL;$avatar_erreur1 = NULL;
$avatar_erreur2 = NULL;$avatar_erreur3 = NULL;
$mdp_erreur = NULL;
//On récupère les variables
$i = 0;
$pseudo=$_POST['pseudo'];
$email = $_POST['email'];
$localisation = $_POST['localisation'];
$pass = /*md5*/($_POST['password']);
$confirm = /*md5*/($_POST['confirm']);
//Verification des champs formulaire
$pseudo_free = get_checkPseudo();
if(!$pseudo_free)
{
$pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
$i++;
}
if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
{
$pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
$i++;
}
if ($pass != $confirm || empty($confirm) || empty($pass))
{
$mdp_erreur = "Votre mot de passe et la confirmation sont diffèrent, ou sont vides";
$i++;
}
$mail_free = get_checkMail();
if(!$mail_free)
{
$email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
$i++;
}
if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
{
$email_erreur2 = "Votre adresse email n'a pas un format valide";
$i++;
}
if (!empty($_FILES['avatar']['size']))
{
$maxsize = 200024; //Poid de l'image
$maxwidth = 1000; //Largeur de l'image
$maxheight = 1000; //Longueur de l'image
//Liste des extensions valides
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' );
if ($_FILES['avatar']['error'] > 0)
{
$avatar_erreur = "Erreur lors du transfert de l'avatar : ";
}
if ($_FILES['avatar']['size'] > $maxsize)
{
$i++;
$avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong> contre <strong>".$maxsize." Octets</strong>)";
}
$image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
{
$i++;
$avatar_erreur2 = "Image trop large ou trop longue :
(<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
}
$extension_upload = strtolower(substr( strrchr($_FILES['avatar']['name'], '.') ,1));
if (!in_array($extension_upload,$extensions_valides) )
{
$i++;
$avatar_erreur3 = "Extension de l'avatar incorrecte";
}
}
if ($i==0)
{
?>
<div class="text-center">
<h2>Inscription terminée</h2>
<p>Bienvenue <?php echo stripslashes(htmlspecialchars($_POST['pseudo'])); ?> vous êtes maintenant inscrit sur le forum!</p>
<p>Cliquez <a href="./espace_membre.php">ici</a> pour revenir dans votre espace membre</p>
</div>
<?php
$nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):'';
post_Registre();
//Et on définit les variables de sessions
$_SESSION['pseudo'] = $pseudo;
$_SESSION['idclient'] = $bdd->lastInsertId();
$_SESSION['privilege'] = 2;
}
else
{
?>
<div class="text-center"><h2>Inscription interrompue</h2><br>
<h5><?php echo $i; ?> erreurs se sont produites lors de votre incription</h5><br>
<ul>
<p><?php echo $email_erreur1; $email_erreur2; ?></p>
<p><?php echo $pseudo_erreur1; $pseudo_erreur2; ?></p>
<p><?php echo $avatar_erreur1; $avatar_erreur2; ?></p>
<p><?php echo $avatar_erreur3; $avatar_erreur; ?></p>
<p><?php echo $mdp_erreur; ?></p>
</ul><br>
<p>Cliquez <a href="./inscription.php">ici</a> pour recommencer</p>
</div>
<?php
}
}
include_once('./vue/membre/inscription.php');

View File

@@ -0,0 +1,238 @@
<script>
function bbcode(bbdebut, bbfin)
{
var input = window.document.formulaire.message;
input.focus();
if(typeof document.selection != 'undefined')
{
var range = document.selection.createRange();
var insText = range.text;
range.text = bbdebut + insText + bbfin;
range = document.selection.createRange();
if (insText.length == 0)
{
range.move('character', -bbfin.length);
}
else
{
range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
}
range.select();
}
else if(typeof input.selectionStart != 'undefined')
{
var start = input.selectionStart;
var end = input.selectionEnd;
var insText = input.value.substring(start, end);
input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
var pos;
if (insText.length == 0)
{
pos = start + bbdebut.length;
}
else
{
pos = start + bbdebut.length + insText.length + bbfin.length;
}
input.selectionStart = pos;
input.selectionEnd = pos;
}
else
{
var pos;
var re = new RegExp('^[0-9]{0,3}$');
while(!re.test(pos))
{
pos = prompt("insertion (0.." + input.value.length + "):", "0");
}
if(pos > input.value.length)
{
pos = input.value.length;
}
var insText = prompt("Veuillez taper le texte");
input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
}
}
function smilies(img)
{
window.document.formulaire.message.value += '' + img + '';
}
</script>
<?php
session_start();
$titre="Poster";
$balises = true;
include("./modele/connexion_sql.php");
include("./debut.php");
include("./menu.php");
?>
<?php
//Qu'est ce qu'on veut faire ? poster, répondre ou éditer ?
$action = (isset($_GET['action']))?htmlspecialchars($_GET['action']):'';
//Il faut être connecté pour poster !
if ($id==0) erreur(ERR_IS_CO);
//Si on veut poster un nouveau topic, la variable f se trouve dans l'url,
//On récupère certaines valeurs
if (isset($_GET['f']))
{
$forum = (int) $_GET['f'];
$query= $bdd->prepare('SELECT forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
FROM forum_forum WHERE forum_id =:forum');
$query->bindValue(':forum',$forum,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
echo '<p><i>Vous êtes ici</i> : <a href="./members_area.php">Index du forum</a> -->
<a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
--> Nouveau topic</p>';
}
//Sinon c'est un nouveau message, on a la variable t et
//On récupère f grâce à une requête
elseif (isset($_GET['t']))
{
$topic = (int) $_GET['t'];
$query=$bdd->prepare('SELECT topic_titre, forum_topic.forum_id,
forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
FROM forum_topic
LEFT JOIN forum_forum ON forum_forum.forum_id = forum_topic.forum_id
WHERE topic_id =:topic');
$query->bindValue(':topic',$topic,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
$forum = $data['forum_id'];
echo '<p><i>Vous êtes ici</i> : <a href="./members_area.php">Index du forum</a> -->
<a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
--> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>
--> Répondre</p>';
}
//Enfin sinon c'est au sujet de la modération(on verra plus tard en détail)
//On ne connait que le post, il faut chercher le reste
elseif (isset ($_GET['p']))
{
$post = (int) $_GET['p'];
$query=$bdd->prepare('SELECT post_createur, forum_post.topic_id, topic_titre, forum_topic.forum_id,
forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
FROM forum_post
LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
LEFT JOIN forum_forum ON forum_forum.forum_id = forum_topic.forum_id
WHERE forum_post.post_id =:post');
$query->bindValue(':post',$post,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
$topic = $data['topic_id'];
$forum = $data['forum_id'];
echo '<p><i>Vous êtes ici</i> : <a href="./members_area.php">Index du forum</a> -->
<a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
--> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>
--> Modérer un message</p>';
}
$query->CloseCursor();
?>
<?php
switch($action)
{
case "repondre": //Premier cas : on souhaite répondre
//Ici, on affiche le formulaire de réponse
break;
case "nouveautopic": //Deuxième cas : on souhaite créer un nouveau topic
//Ici, on affiche le formulaire de nouveau topic
break;
//D'autres cas viendront s'ajouter là plus tard :p
default: //Si jamais c'est aucun de ceux-là, c'est qu'il y a eu un problème :o
echo'<h2>Cette action est impossible</h2>';
} //Fin du switch
?>
<?php
switch($action)
{
case "repondre": //Premier cas on souhaite répondre
?>
<h1>Poster une réponse</h1>
<form method="post" action="postok.php?action=repondre&amp;t=<?php echo $topic ?>" name="formulaire">
<fieldset><legend>Mise en forme</legend>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
<input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[i]', '[/i]');return(false)" />
<input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('[s]', '[/s]');return(false)" />
<input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
<br><br>
<img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" onClick="javascript:smilies(' :D ');return(false)" />
<img src="./images/smileys/lol.gif" title="lol" alt="lol" onClick="javascript:smilies(' :lol: ');return(false)" />
<img src="./images/smileys/triste.gif" title="triste" alt="triste" onClick="javascript:smilies(' :triste: ');return(false)" />
<img src="./images/smileys/cool.gif" title="cool" alt="cool" onClick="javascript:smilies(' :frime: ');return(false)" />
<img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies(' XD ');return(false)" />
<img src="./images/smileys/confus.gif" title="confus" alt="confus" onClick="javascript:smilies(' :s ');return(false)" />
<img src="./images/smileys/choc.gif" title="choc" alt="choc" onClick="javascript:smilies(' :o ');return(false)" />
<img src="./images/smileys/question.gif" title="?" alt="?" onClick="javascript:smilies(' :interrogation: ');return(false)" />
<img src="./images/smileys/exclamation.gif" title="!" alt="!" onClick="javascript:smilies(' :exclamation: ');return(false)" />
</fieldset>
<fieldset><legend>Message</legend><textarea cols="80" rows="8" id="message" name="message"></textarea></fieldset>
<input type="submit" name="submit" value="Envoyer" />
<input type="reset" name = "Effacer" value = "Effacer"/>
</p></form>
<?php
break;
case "nouveautopic":
?>
<h1>Nouveau topic</h1>
<form method="post" action="postok.php?action=nouveautopic&amp;f=<?php echo $forum ?>" name="formulaire">
<fieldset><legend>Titre</legend>
<input type="text" size="80" id="titre" name="titre" /></fieldset>
<fieldset><legend>Mise en forme</legend>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
<input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[i]', '[/i]');return(false)" />
<input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('[s]', '[/s]');return(false)" />
<input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
<br><br>
<img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" onClick="javascript:smilies(':D');return(false)" />
<img src="./images/smileys/lol.gif" title="lol" alt="lol" onClick="javascript:smilies(':lol:');return(false)" />
<img src="./images/smileys/triste.gif" title="triste" alt="triste" onClick="javascript:smilies(':triste:');return(false)" />
<img src="./images/smileys/cool.gif" title="cool" alt="cool" onClick="javascript:smilies(':frime:');return(false)" />
<img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies('XD');return(false)" />
<img src="./images/smileys/confus.gif" title="confus" alt="confus" onClick="javascript:smilies(':s');return(false)" />
<img src="./images/smileys/choc.gif" title="choc" alt="choc" onClick="javascript:smilies(':O');return(false)" />
<img src="./images/smileys/question.gif" title="?" alt="?" onClick="javascript:smilies(':interrogation:');return(false)" />
<img src="./images/smileys/exclamation.gif" title="!" alt="!" onClick="javascript:smilies(':exclamation:');return(false)" /></fieldset>
<fieldset><legend>Message</legend>
<textarea cols="80" rows="8" id="message" name="message"></textarea>
<label><input type="radio" name="mess" value="Annonce" />Annonce</label>
<label><input type="radio" name="mess" value="Message" checked="checked" />Topic</label>
</fieldset>
<p>
<input type="submit" name="submit" value="Envoyer" />
<input type="reset" name = "Effacer" value = "Effacer" /></p>
</form>
<?php
break;
//D'autres cas viendront s'ajouter ici par la suite
?>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
<?php
default: //Si jamais c'est aucun de ceux là c'est qu'il y a eu un problème :o
echo'<p>Cette action est impossible</p>';
} //Fin du switch
?>
</div>
</html>

View File

@@ -0,0 +1,202 @@
<?php
include_once('./modele/membre/profil.php');
$titre="Profil";
//On récupère la valeur de nos variables passées par URL
$action = isset($_GET['action'])?htmlspecialchars($_GET['action']):'consulter';
$membre = isset($_GET['m'])?(int) $_GET['m']:'';
switch($action)
{
case "consulter":
//On affiche les infos sur le membre
$data = get_MemberInfo();
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Profil de <?php echo stripslashes(htmlspecialchars($data['pseudo'])); ?></h2><br>
<img src=".<?php echo $data['imageclient']; ?>" alt="Acun avatar" /><br>
<p class="text-2" ><strong>Adresse E-Mail : </strong>
<a class=link2 href="mailto:<?php echo stripslashes($data['adressemail']); ?>"> <?php echo stripslashes(htmlspecialchars($data['adressemail'])); ?></a><br/><br>
Ce membre est inscrit depuis le <strong><?php echo date('d-m-Y', strtotime(str_replace('/','-',$data['dateenregistre']))); ?></strong><br/><br/>
<strong>Localisation : </strong> <?php echo stripslashes(htmlspecialchars($data['adresse'])); ?>
</p>
</div>
</section>
</div>
<?php
break;
case "modifier":
if (empty($_POST['sent'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
{
//On commence par s'assurer que le membre est connecté
//if ($id==0) erreur(ERR_IS_NOT_CO);
//Les infos du membre
$data = get_MemberInfoId();
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<form method="post" action="profil.php?action=modifier" enctype="multipart/form-data">
<h2>Edition du profil de <?php echo stripslashes(htmlspecialchars($data['pseudo']));?></h2><br>
<fieldset>
<label class="labelI" for="password">*Mot de passe<br>Nouveau mot de passe</label><br>
<input type="password" name="password" id="password" /><br>
<label class="labelI" for="confirm">*Confirmation du mot de passe</label><br>
<input type="password" name="confirm" id="confirm" /><br>
</fieldset><br>
<fieldset><legend class=colorbold marg3 pad1>Contacts</legend>
<label class="labelI" for="email">Adresse email</label><br>
<input type="text" name="email" id="email" value="<?php echo stripslashes($data['adressemail']); ?>" /><br>
</fieldset><br>
<fieldset><legend class=colorbold marg3 pad1>Informations supplémentaires</legend>
<label class="labelI" for="localisation">Localisation</label><br>
<input type="text" name="localisation" id="localisation" value="<?php echo stripslashes($data['adresse']); ?>" />
</fieldset><br>
<fieldset><legend class=colorbold marg3 pad1>Profil sur le forum</legend>
Avatar actuel <img src=".<?php echo $data['imageclient'];?>" alt="pas d avatar" /><br><br>
<label class="labelI" for="avatar">Changer mon avatar</label><br>
<input type="file" name="avatar" id="avatar" /><br>(Taille max : 200Ko)<br><br>
<label><input type="checkbox" name="delete" value="Delete" /> Supprimer mon avatar</label>
</fieldset><br>
<p>
<input type="submit" value="Modifier mon profil" class="button-3"/><br>
<input type="hidden" id="sent" name="sent" value="1" />
</p><br>
<p>Les champs avec une * sont obligatoires</p><br>
</form>
</div>
</section>
</div>
<?php
}
else //Sinon on est dans la page de traitement
{
//On déclare les variables
$mdp_erreur = NULL;
$email_erreur1 = NULL;
$email_erreur2 = NULL;
$avatar_erreur = NULL;
$avatar_erreur1 = NULL;
$avatar_erreur2 = NULL;
$avatar_erreur3 = NULL;
//Encore et toujours notre belle variable $i :p
$i = 0;
$temps = time();
$email = $_POST['email'];
$localisation = $_POST['localisation'];
$pass = /*md5*/($_POST['password']);
$confirm = /*md5*/($_POST['confirm']);
//Vérification des champs du formulaire
if ($pass != $confirm || empty($confirm) || empty($pass))
{
$mdp_erreur = "Votre mot de passe et votre confirmation sont different ou sont vides";
$i++;
}
$data = get_checkMail();
if (strtolower($data['adressemail']) != strtolower($email))
{
$mail_free = get_checkCopyMail();
if(!$mail_free)
{
$email_erreur1 = "Votre adresse email est déjà utilisé par un membre";
$i++;
}
if (!preg_match("#^[a-z0-9A-Z._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
{
$email_erreur2 = "Votre nouvelle adresse E-Mail n'a pas un format valide";
$i++;
}
}
if (!empty($_FILES['avatar']['size']))
{
$maxsize = 200024; //Poid de l'image
$maxwidth = 1000; //Largeur de l'image
$maxheight = 1000; //Longueur de l'image
//Liste des extensions valides
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' );
if ($_FILES['avatar']['error'] > 0)
{
$avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
}
if ($_FILES['avatar']['size'] > $maxsize)
{
$i++;
$avatar_erreur1 = "Le fichier est trop gros :
(<strong>".$_FILES['avatar']['size']." Octets</strong>
contre <strong>".$maxsize." Octets</strong>)";
}
$image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
{
$i++;
$avatar_erreur2 = "Image trop large ou trop longue :
(<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre
<strong>".$maxwidth."x".$maxheight."</strong>)";
}
$extension_upload = strtolower(substr( strrchr($_FILES['avatar']['name'], '.') ,1));
if (!in_array($extension_upload,$extensions_valides) )
{
$i++;
$avatar_erreur3 = "Extension de l'avatar incorrecte";
}
}
if ($i == 0) // Si $i est vide, il n'y a pas d'erreur sur l'avatar
{
if (!empty($_FILES['avatar']['size']))
{
post_UpdateAvatar();
}
if (isset($_POST['delete']))
{
post_RemoveAvatar();
}
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Modification de profil terminée</h2><br>
<p>Votre profil a été modifié avec succès !</p>
<p>Cliquez <a href="./profil.php?action=modifier">ici</a>
pour revenir à ton profil</p>
</div>
</section>
</div>
<?php
//On modifie la table
post_UpdateMember();
}
else
{
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Modification de profil interrompue</h2><br>
<h5><?php echo $i; ?> erreurs se sont produites lors de votre modification</h5>
<ul>
<?php
echo'<p>' .$email_erreur1. '' .$email_erreur2. '</p>
<p>' .$avatar_erreur. '' .$avatar_erreur1. '</p>
<p>' .$avatar_erreur2. '' .$avatar_erreur3. '</p>
<p>' .$mdp_erreur. '</p>';
?>
</ul>
<p> Cliquez <a href="./profil.php?action=modifier">ici</a> pour recommencer</p>
</div>
</section>
</div>
<?php
}
}
break;
default; //Si jamais c'est aucun de ceux là c'est qu'il y a eu un problème :o
echo'<p>Cette action est impossible</p>';
}
include_once('./vue/membre/profil.php');

80
css/style.css Normal file
View File

@@ -0,0 +1,80 @@
.bg1 {
background:#f7f5e2;
}
header {
background-image:url("../images/autres/footer.jpg");
}
footer {
background-image:url("../images/autres/footer.jpg");
margin: 0 auto;
overflow:hidden;
}
.container-fluid{
margin:0 !important;
padding:0 !important;
}
.numbox{
background-image:url("../images/autres/calendrier.png");
width:72px;
height:78px;
overflow:hidden;
float:left;
margin: 0 19px 0px 10px;
}
.numbox span {
font:18px/22px 'IM Fell French Canon', sans-serif;
color:#fff;
font-style:italic;
text-align:center;
margin-top:4px;
display:block;
}
.numbox strong {
font:30px/36px Georgia, "Times New Roman", Times, serif;
color:#f6a82d;
font-weight:bold;
text-align:center;
margin-top:-1px;
display:block;
}
.img-thumbnailShop{
display: block;
}
.img-thumbnailEvent{
display: block;
}
.img-thumbnailEventCat{
display: block;
}
.clear {
clear:both;
line-height:0;
font-size:0;
}
.map-responsive {
overflow:hidden;
padding-bottom:56.25%;
position:relative;
}
.map-responsive iframe {
left:0;
top:0;
position:absolute;
}
.carousel {
height: 60%;
}
.carousel-indicators li {
background-color: gray!important;
}
.carousel-indicators .active {
background-color: black!important;
}
.carousel-control-next-icon{
background-color: gray!important;
}
.carousel-control-prev-icon{
background-color: gray!important;
}

23
deconnexion.php Normal file
View File

@@ -0,0 +1,23 @@
<?php
session_start();
session_destroy();
$titre="Déconnexion";
include("./vue/header.html");
if ($id==0) erreur(ERR_IS_NOT_CO);
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Déconnexion réussie!</h2><br>
<h4>A Bientôt</h4><br>
<p>Vous êtes à présent déconnecté <br/>
<!--Cliquez <a href="'.htmlspecialchars($_SERVER['HTTP_REFERER']).'">ici</a> pour revenir à la page précédente.<br>-->
Cliquez <a href="./espace_membre.php">ici</a> pour revenir à la page principale</p><br>
</div>
</div>
</section>
</div>
<?php
include("./vue/footer.html");
?>

9
espace_membre.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/espace/index.php');
}
include_once('./vue/footer.html');

5
home.php Normal file
View File

@@ -0,0 +1,5 @@
<?php
include_once('./vue/header.html');
include_once('./vue/home/index.html');
include_once('./vue/footer.html');
?>

BIN
images/autres/CARIA.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
images/autres/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
images/autres/footer.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
images/autres/header.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

BIN
images/autres/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
images/avatars/img_user.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

5
index.php Normal file
View File

@@ -0,0 +1,5 @@
<?php
include_once('./vue/header.html');
include_once('./vue/home/index.html');
include_once('./vue/footer.html');
?>

9
inscription.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/inscription/index.php');
}
include_once('./vue/footer.html');

11
modele/connexion_sql.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
// Connexion <20> la base de donn<6E>es
try
{
$bdd = new PDO('mysql:host=localhost:3307;dbname=CARIA', 'USER', 'MDP',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

View File

@@ -0,0 +1,10 @@
<?php
function check_Password()
{
global $bdd;
$req = $bdd->prepare('SELECT mdp, idclient, privilege, pseudo FROM Client WHERE pseudo = :pseudo');
$req->bindValue(':pseudo',$_POST['pseudo'], PDO::PARAM_STR);
$req->execute();
$data = $req->fetch();
return $data;
}

15
modele/membre/espace.php Normal file
View File

@@ -0,0 +1,15 @@
<?php
function get_MemberCount()
{
global $bdd;
$TotalDesMembres = $bdd->query('SELECT COUNT(*) FROM Client')->fetchColumn();
return $TotalDesMembres;
}
function get_LastMember()
{
global $bdd;
$req = $bdd->query('SELECT pseudo, idclient FROM Client ORDER BY idclient DESC LIMIT 0, 1');
$data = $req->fetch();
return $data;
}

View File

@@ -0,0 +1,40 @@
<?php
function get_checkPseudo()
{
global $bdd;
$pseudo=$_POST['pseudo'];
$req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Client WHERE pseudo =:pseudo');
$req->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
$req->execute();
$pseudo_free=($req->fetchColumn()==0)?1:0;
$req->CloseCursor();
return $pseudo_free;
}
function get_checkMail()
{
global $bdd;
$email = $_POST['email'];
$req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Client WHERE adressemail =:mail');
$req->bindValue(':mail',$email, PDO::PARAM_STR);
$req->execute();
$mail_free=($req->fetchColumn()==0)?1:0;
$req->CloseCursor();
return $mail_free;
}
function post_Registre()
{
global $bdd;
$pseudo=$_POST['pseudo'];
$pass = /*md5*/($_POST['password']);
$email = $_POST['email'];
$nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):'';
$localisation = $_POST['localisation'];
$req = $bdd->prepare('INSERT INTO Client (pseudo, mdp, adressemail, imageclient, adresse, dateenregistre)
VALUES (:pseudo, :pass, :email, :nomavatar, :localisation, NOW())');
$req->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
$req->bindValue(':pass', $pass, PDO::PARAM_INT);
$req->bindValue(':email', $email, PDO::PARAM_STR);
$req->bindValue(':nomavatar', $nomavatar, PDO::PARAM_STR);
$req->bindValue(':localisation', $localisation, PDO::PARAM_STR);
$req->execute();
}

81
modele/membre/profil.php Normal file
View File

@@ -0,0 +1,81 @@
<?php
function get_MemberInfo()
{
global $bdd;
$membre = isset($_GET['m'])?(int) $_GET['m']:'';
//On récupère les infos du membre
$req = $bdd->prepare('SELECT pseudo, imageclient, adressemail, dateenregistre, adresse FROM Client WHERE idclient=:membre');
$req->bindValue(':membre',$membre, PDO::PARAM_INT);
$req->execute();
$data = $req->fetch();
return $data;
}
function get_MemberInfoId()
{
global $bdd;
$id=(isset($_SESSION['idclient']))?(int) $_SESSION['idclient']:0;
//On prend les infos du membre
$req = $bdd->prepare('SELECT pseudo, adressemail,adresse,imageclient FROM Client WHERE idclient=:id');
$req->bindValue(':id',$id,PDO::PARAM_INT);
$req->execute();
$data = $req->fetch();
return $data;
}
function get_checkMail()
{
global $bdd;
$id=(isset($_SESSION['idclient']))?(int) $_SESSION['idclient']:0;
//On commence donc par récupérer le mail
$req = $bdd->prepare('SELECT adressemail FROM Client WHERE idclient =:id');
$req->bindValue(':id',$id,PDO::PARAM_INT);
$req->execute();
$data = $req->fetch();
return $data;
}
function get_checkCopyMail()
{
global $bdd;
$email = $_POST['email'];
//Il faut que l'adresse email n'ait jamais été utilisée
$req = $bdd->prepare('SELECT COUNT(*) AS nbr FROM Client WHERE adressemail =:mail');
$req->bindValue(':mail',$email,PDO::PARAM_STR);
$req->execute();
$mail_free = ($req->fetchColumn()==0)?1:0;
$req->CloseCursor();
return $mail_free;
}
function post_UpdateAvatar()
{
global $bdd;
$id=(isset($_SESSION['idclient']))?(int) $_SESSION['idclient']:0;
$nomavatar=move_avatar($_FILES['avatar']);
$req = $bdd->prepare('UPDATE Client SET imageclient = '/images/avatars/' :avatar WHERE idclient = :id');
$req->bindValue(':avatar',$nomavatar,PDO::PARAM_STR);
$req->bindValue(':id',$id,PDO::PARAM_INT);
$req->execute();
$req->CloseCursor();
}
function post_RemoveAvatar()
{
global $bdd;
$id=(isset($_SESSION['idclient']))?(int) $_SESSION['idclient']:0;
$req = $bdd->prepare('UPDATE Client SET imageclient=0 WHERE idclient = :id');
$req->bindValue(':id',$id,PDO::PARAM_INT);
$req->execute();
$req->CloseCursor();
}
function post_UpdateMember()
{
global $bdd;
$id=(isset($_SESSION['idclient']))?(int) $_SESSION['idclient']:0;
$pass = /*md5*/($_POST['password']);
$email = $_POST['email'];
$localisation = $_POST['localisation'];
$req = $bdd->prepare('UPDATE Client SET mdp = :mdp, adressemail=:mail, adresse=:loc WHERE idclient=:id');
$req->bindValue(':mdp',$pass,PDO::PARAM_INT);
$req->bindValue(':mail',$email,PDO::PARAM_STR);
$req->bindValue(':loc',$localisation,PDO::PARAM_STR);
$req->bindValue(':id',$id,PDO::PARAM_INT);
$req->execute();
$req->CloseCursor();
}

5
policy.php Normal file
View File

@@ -0,0 +1,5 @@
<?php
include_once('./vue/header.html');
include_once('./vue/policy/index.html');
include_once('./vue/footer.html');
?>

9
profil.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/profil/index.php');
}
include_once('./vue/footer.html');

17
vue/footer.html Normal file
View File

@@ -0,0 +1,17 @@
</div>
</div>
</div>
<!--MapsBootsrap-->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<footer>
<div class="container pt-4">
<ul class="pagination">
<li class="page-item m-1"><h5> CARIA Project | Cunat-Brulé © 2023-2024 <a href="policy.php">Tous droits réservés</a></h5></li>
</ul>
</div>
</footer>
</div>
</body>
</html>

56
vue/header.html Normal file
View File

@@ -0,0 +1,56 @@
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>CARIA Project</title>
<link rel="shortcut icon" type="image/png" href="./images/autres/favicon.png">
<link rel="stylesheet" type="text/css" media="screen" href="./css/style.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<?php
//Attribution des variables de session
include("./controleur/membre/functions.php");
include("./controleur/membre/constants.php");
$lvl=(isset($_SESSION['privilege']))?(int) $_SESSION['privilege']:1;
$id=(isset($_SESSION['ideleve']))?(int) $_SESSION['ideleve']:0;
$pseudo=(isset($_SESSION['pseudo']))?$_SESSION['pseudo']:'';
if(session_id() == '') { session_start(); }
?>
</head>
<body>
<div class="container-fluid bg1">
<header>
<div class="container">
<div class="text-center"><a href="home.php"><img src="./images/autres/logo.png"></a></div>
<nav class="navbar navbar-expand-lg navbar-dark bg-transparent">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="dropdown-item" href="contact.php">Nos Coordonnées</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownCompte" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Compte</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="./espace_membre.php">Espace membre</a>
<div class="dropdown-divider"></div>
<?php if(isset($_SESSION['pseudo'])) { ?>
<a class="dropdown-item">Connecter en tant que <?php echo ' '.htmlentities($_SESSION['pseudo'], ENT_QUOTES, 'UTF-8'); ?></a>
<a class="dropdown-item" href="./profil.php?action=modifier">Modifier mes informations</a>
<a class="dropdown-item" href="./deconnexion.php">Déconnexion</a>
<?php } else { ?>
<a class="dropdown-item" href="./inscription.php">Inscription</a>
<a class="dropdown-item" href="./connexion.php">Connexion</a>
<?php } ?>
</div>
</li>
</ul>
</div>
</nav>
</div>
</header>
<div class="container">
<div class="col">
<div class="row">

4
vue/home/index.html Normal file
View File

@@ -0,0 +1,4 @@
<section id="content" class="page-content">
<div>
</div><hr>
</section>

View File

@@ -0,0 +1,5 @@
<section id="content" class="page-content">
<div>
<br><h2 class="text-center">Trouvez nous</h2><hr>
</div>
</section>

1
vue/membre/connexion.php Normal file
View File

@@ -0,0 +1 @@
<!-- A ameliorer -->

1
vue/membre/espace.php Normal file
View File

@@ -0,0 +1 @@
<!-- A ameliorer -->

View File

@@ -0,0 +1 @@
<!-- A ameliorer -->

1
vue/membre/profil.php Normal file
View File

@@ -0,0 +1 @@
<!-- A ameliorer -->

34
vue/policy/index.html Normal file
View File

@@ -0,0 +1,34 @@
<section id="content" class="page-content">
<br><h2 class="text-center">Politique de confidentialité</h2><hr>
<h6>Collecte des renseignements personnels</h6>
<p>Les renseignements personnels que nous collectons sont recueillis au travers de formulaires et grâce à l'interactivité établie entre vous et notre site Web.<br>
Nous utilisons également, comme indiqué dans la section suivante, des fichiers témoins et/ou journaux pour réunir des informations vous concernant. </p>
<h6>Formulaires et interactivité:</h6>
<p>Vos renseignements personnels sont collectés par le biais de formulaire, à savoir :<br>
- Formulaire d'inscription au site Web<br>
Nous utilisons les renseignements ainsi collectés pour les finalités suivantes :<br>
- Contact</p>
<h6>Droit d'opposition et de retrait</h6>
<p>Nous nous engageons à vous offrir un droit d'opposition et de retrait quant à vos renseignementspersonnels.<br>
Le droit d'opposition s'entend comme étant la possibilité offerte aux internautes de refuser que leurs renseignements personnels soient utilisés à certaines fins mentionnées lors de la collecte.<br>
Le droit de retrait s'entend comme étant la possibilité offerte aux internautes de demander à ce que leurs renseignements personnels ne figurent plus, par exemple, dans une liste de diffusion.</p>
<h6>Droit d'accès</h6>
<p>Nous nous engageons à reconnaître un droit d'accès et de rectification aux personnes concernées désireuses de consulter, modifier, voire radier les informations les concernant.</p>
<h6>Sécurité</h6>
<p>Les renseignements personnels que nous collectons sont conservés dans un environnement sécurisé.<br>
Les personnes travaillant pour nous sont tenues de respecter la confidentialité de vos informations.<br>
Pour assurer la sécurité de vos renseignements personnels, nous avons recours aux mesures suivantes :<br>
- Gestion des accès - personne autorisée<br>
- Gestion des accès - personne concernée<br>
- Logiciel de surveillance du réseau<br>
- Sauvegarde informatique<br>
- Développement de certificat numérique<br>
- Identifiant / mot de passe<br>
- Pare-feu (Firewalls)<br>
Nous nous engageons à maintenir un haut degré de confidentialité en intégrant les dernières innovations technologiques permettant d'assurer la confidentialité de vos transactions.<br>
Toutefois,comme aucun mécanisme n'offre une sécurité maximale, une part de risque est toujours présente lorsque l'on utilise Internet pour transmettre des renseignements personnels.</p>
<h6>Législation</h6>
<p>Nous nous engageons à respecter les dispositions législatives françaises</p>
<h6>E-mail: <a href="mailto:info@security.org">info@security.org</a></h6>
<hr>
</section>