public function __construct($nom, $prenom, $mdp) { $this->nom = $nom; $this->prenom = $prenom; $this->mdp = $mdp; $this->bdd = bdd(); }
/** * Traitement du formulaire de connexion * contrôle les identifiants de l'utilisateur pour lui attribuer une session * @param $email email de l'utilisateur (nom de compte) * @param $mdp mot de passe de l'utilisateur */ function connexion($email, $mdp) { $bdd = bdd(); // encodage du mot de passe $mdp = md5($mdp); $email = strtolower($email); // connexion à la BD pour tester si l'utilisateur existe et que les données correspondent $sql = "SELECT COUNT(*) AS nb_users, user_id, user_nom, user_prenom, user_pseudo, user_etat, user_admin, user_banni FROM users WHERE user_email = :email AND user_password = :mdp"; $req = $bdd->prepare($sql); $req->bindParam(":email", $email); $req->bindParam(":mdp", $mdp); $req->execute(); $data = $req->fetch(); if ($data['nb_users'] == 1) { if ($data['user_banni'] == 1) { return "<p id=\"message\">Votre compte a été bloqué. Vous ne pouvez plus accéder à nos services.</p>"; } $_SESSION = array('nom' => strtoupper($data['user_nom']), 'prenom' => ucfirst($data['user_prenom']), 'pseudo' => $data['user_pseudo'], 'id' => $data['user_id'], 'actif' => $data['user_etat'], 'estAdmin' => $data['user_admin']); // redirection sur le menu principal si connexion bien éffectuée header("location:index.php"); return "Connexion réussie, bienvenue " . $_SESSION['prenom'] . " " . $_SESSION['nom'] . ". Si vous n'êtes pas redirigé automatiquement, veuillez cliquer <a href=\"index.php\">ici</a> pour poursuivre la navigation."; } else { return "<p id=\"message\">Le mot de passe ou l'adresse électronique sont incorrects.</p>"; } }
/** @return 0 si authorisé, 1 sinon **/ function estAutoVoirPrivee($idUserCible) { $idUserVoyeur = $_SESSION['id']; if ($idUserCible == $idUserVoyeur) { return 0; } // else include_once "bd/bdd.php"; $bdd = bdd(); $req = $bdd->prepare("SELECT prop_id FROM proposition WHERE prop_user = :id"); $req->bindParam(":id", $idUserVoyeur); $req->execute(); while ($data = $req->fetch()) { if ($data['prop_id'] != null) { $req2 = $bdd->prepare("SELECT contrat_auteur FROM contrat WHERE contrat_id = :id"); $req2->bindParam(":id", $data['prop_id']); $req2->execute(); while ($data2 = $req2->fetch()) { if ($data2['contrat_auteur'] == $idUserCible) { return 0; } } } } return 1; }
/** * Récupère les données du contrat (titre, email du créateur) * @param $idContrat identifiant du contrat * @reurn $tabInfosContrat titre et email du créateur */ function recupInfosContrat($idContrat) { $bdd = bdd(); $req = $bdd->prepare("SELECT contrat_titre, user_email FROM contrat JOIN users ON user_id = contrat_auteur WHERE contrat_id = :idc"); $req->bindParam(":idc", $idContrat); $req->execute(); while ($data = $req->fetch()) { $tabInfosContrat = array($data["contrat_titre"], $data["user_email"]); } return $tabInfosContrat; }
/** * Ajoute le message dans la BD */ function ecrireMessage($message, $contrat, $destinataire) { require_once "inc/bd/bdd.php"; $bdd = bdd(); $message = htmlspecialchars($message); $req = $bdd->prepare("INSERT INTO messagerie(message_user1, message_user2, message_contrat, message_contenu)\n VALUES (:auteur, :dest, :contrat, :message)"); $req->bindParam(":auteur", $_SESSION['id']); $req->bindParam(":dest", $destinataire); $req->bindParam(":contrat", $contrat); $req->bindParam(":message", $message); $req->execute(); }
/** * Fonction qui récupère les données relatives candidatures d'un contrat * @return un tableau[][] avec les candidatures pour chaque contrats et leurs informations (nom, prenom etc) */ function recupCandidatures() { require "inc/bd/bdd.php"; $bdd = bdd(); $candids = array(); $req = $bdd->prepare("SELECT proposition.*, user_nom, user_prenom, contrat_titre, contrat_id, contrat_auteur FROM proposition JOIN contrat ON contrat_id = prop_contrat JOIN users ON user_id = prop_user WHERE contrat_auteur = :id AND prop_etat = 0"); $req->bindParam(":id", $_SESSION['id']); $req->execute(); $i = 0; while ($data = $req->fetch()) { $candids[$i] = array($data['prop_id'], $data['prop_contrat'], $data['prop_user'], $data['user_nom'], $data['user_prenom'], $data['contrat_titre'], $data['contrat_id']); $i++; } return $candids; }
/** * Ajoute un contrat dans la base de données * @param $tab tableau contenant les valeurs du contrat à ajouter */ function ajouterContrat($tab) { require "bd/bdd.php"; $bdd = bdd(); $req = $bdd->prepare("INSERT INTO contrat (contrat_auteur, contrat_titre, contrat_theme, contrat_etat, contrat_description, contrat_montant, contrat_competences,contrat_debut_prevue, contrat_fin_prevue, contrat_publication) VALUES (:auteur, :titre, :theme, 0, :description, :montant, :competences, :datedeb, :datefin, :publication)"); $req->bindParam(":auteur", $_SESSION['id']); $req->bindParam(":titre", $tab['titre']); $req->bindParam(":theme", $tab['theme']); $req->bindParam(":description", $tab['desc']); $req->bindParam(":montant", $tab['remuneration']); $req->bindParam(":competences", $tab['competences']); $req->bindParam(":datedeb", $tab['date_deb']); $req->bindParam(":datefin", $tab['date_fin']); $publication = date("Y-m-d"); $req->bindParam(":publication", $publication); $req->execute(); }
/** * Génère un nouveau mot de passe pour le compte * @param $email string L'email du compte dont on change le mot de passe * @return string Un message indiquant si tout s'est bien passé. */ function mdpOublie($email) { require "bd/bdd.php"; $bdd = bdd(); // on teste si l'email est au bon format if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return "L'email n'est pas valide, veuillez vérifiez la syntaxe."; } // on vérifie qu'un utilisateur existe avec cet email $req = $bdd->prepare("SELECT COUNT(*) AS nbu FROM users WHERE user_email = :email"); $req->bindParam(":email", $email); $req->execute(); $data = $req->fetch(); if ($data['nbu'] == 0) { return "Aucun utilisateur ne possède cet email, veuillez vérifier votre email."; } // on génère le nouveau mot de passe de 8 caractères $mdp = substr(md5(microtime() * 10000), 1, 8); $mdpCrypt = md5($mdp); // On enregistre le nouveau mot de passe dans la BDD $req = $bdd->prepare("UPDATE users SET user_password = :mdp WHERE user_email = :email"); $req->bindParam(":mdp", $mdpCrypt); $req->bindParam(":email", $email); $req->execute(); // On envoie le mail avec le nouveau mot de passe à l'utilisateur $destinataire = $email; $sujet = "[Freelancerz] : Mot de passe oublié"; $entete = "From: noreply@freelancerZ.com"; $contenu = 'Oubli de mot de passe, Voici votre nouveau mot de passe, ne le communiquez à personne, un administrateur ou modérateur ne vous demandera jamais votre mot de passe. ' . $mdp . ' Freelancerz. --------------- Ceci est un mail automatique, Merci de ne pas y répondre.'; // envoi du mail @mail($destinataire, $sujet, $contenu, $entete); // Envoi du mail return "Un email a été envoyé à " . $email . " contenant le nouveau mot de passe."; }
function archiverConversation($cid) { require_once "inc/bd/bdd.php"; $bdd = bdd(); // On récupère les messages de la conversation $req = $bdd->prepare("SELECT * FROM messagerie WHERE message_contrat = :contrat"); $req->bindParam(":contrat", $cid); $req->execute(); while ($message = $req->fetch()) { // On ajoute les messages dans les archives $rqt = $bdd->prepare("INSERT INTO histo_messagerie(message_user1, message_user2, message_contrat, message_contenu, message_date) VALUES (:u1, :u2, :cid, :content, :date)"); $rqt->bindParam(":u1", $message['message_user1']); $rqt->bindParam(":u2", $message['message_user2']); $rqt->bindParam(":cid", $cid); $rqt->bindParam(":content", $message['message_contenu']); $rqt->bindParam(":date", $message['message_date']); $rqt->execute(); } // On supprime les messages originaux $req = $bdd->prepare("DELETE FROM messagerie WHERE message_contrat = :cid"); $req->bindParam(":cid", $cid); $req->execute(); }
/** * Modifie le mail de l'utilisateur dans la base de données * @param $userEmail email de l'utilisateur */ function editerEmail($userEmail) { include_once "bd/bdd.php"; // connexion à la BDD $bdd = bdd(); // enregistrement des modifications dans users $sql = "UPDATE users SET user_email = :mail WHERE user_id = :id"; $req = $bdd->prepare($sql); $req->bindParam(':mail', $userEmail); $req->bindParam('id', $_SESSION['id']); $req->execute(); // enregistrement des modifications dans users_privee $sql = "UPDATE users_privee SET user_email = :mail WHERE user_id = :id"; $req = $bdd->prepare($sql); $req->bindParam(':mail', $userEmail); $req->bindParam('id', $_SESSION['id']); $req->execute(); return "<p id=\"message_ok\">Le mail a bien été modifié.</p>"; }
public function __construct($IdPersonne) { $this->IdPersonne = $IdPersonne; $this->bdd = bdd(); }
/** * Récupère tous les informations d'un certain contrat, fermé * @param int idContrat - l'identifiant du contrat * @return array Un tableau [] contenant les informations nécessaires à l'affichage */ function recupDetailContratFerme() { $tabcontrats = array(); require "bd/bdd.php"; $bdd = bdd(); $req = $bdd->prepare("SELECT historique_contrat.*, users.user_pseudo AS pseudo_dem, users_privee.user_pseudo AS pseudo_prest\n\t\t\t\t\t\t FROM historique_contrat LEFT JOIN users ON user_id = histo_demandeur LEFT JOIN users_privee ON privee_id = histo_prestataire\n\t\t\t\t\t\t WHERE histo_contrat = :id"); $req->bindParam(":id", $_GET["c"]); $req->execute(); $tabcontrats = null; while ($data = $req->fetch()) { $tabcontrats = array($data['histo_contrat'], $data['histo_titre'], $data['pseudo_dem'], $data['pseudo_prest'], $data['histo_desc'], $data['histo_demandeur'], $data['histo_prestataire'], $data['histo_date_deb'], $data['histo_date_fin'], $data['histo_theme'], $data['histo_montant'], $data['histo_competences']); } if ($tabcontrats == null) { return -1; } return $tabcontrats; }
/** * Inscrit un utilisateur au site si toutes les informations sont renseignées et valides * @param array $infos Contient toutes les informations * @return String Message de retour de l'inscription */ function inscrire($infos) { $message = "<p id=\"message\">Une erreur est survenue lors de l'inscription : </p><br>"; // Message de retour de la fonction $erreur = 0; // compteur d'erreurs // On vérifie que toutes les infos sont renseignées foreach ($infos as $elem) { if (empty($elem)) { return "<p id=\"message\">Toutes les informations ne sont pas renseignées</p>"; } } extract($infos); // On vérifie si les CGU sont accéptées if (!isset($cgu)) { return "<p id=\"message\">Vous devez accepter les CGU pour vous inscrire.</p>"; } // On teste si le pseudo ou l'email existe déjà require_once "inc/bd/bdd.php"; $bdd = bdd(); $req = $bdd->prepare("SELECT COUNT(*) AS nb FROM users WHERE user_email = :email OR user_pseudo = :pseudo"); $req->bindParam(":email", $email); $req->bindParam(":pseudo", $pseudo); $req->execute(); if ($req->fetch()["nb"] != 0) { return "<p id='message'>Ce pseudonyme ou cette adresse mail est déjà utilisée.</p>"; } // On teste si la date est valide if (!(is_numeric($jour) && is_numeric($mois) && is_numeric($an)) || !checkdate($mois, $jour, $an)) { $message = $message . "<p id=\"message\">La date de naissance n'est pas valide</p><br>"; $erreur++; } if (strtolower($email) != strtolower($emailConf)) { $message = $message . "<p id=\"message\">Les adresses électroniques ne correspondent pas</p><br>"; $erreur++; } if ($mdp != $mdpConf) { $message = $message . "<p id=\"message\">Les mots de passe ne correspondent pas</p><br>"; $erreur++; } $naissance = $an . '-' . $mois . '-' . $jour; // on convertit la date en format correct pour la BD if ($erreur != 0) { return $message; } /* *** Si tout est ok, on contacte la BD et on enregistre le nouvel user *** */ $bdd = bdd(); $mdp = md5($mdp); // Génération d'une clé pour le lien de validation $cle = md5(microtime(TRUE) * 100000); // Insertion dans users $req = $bdd->prepare("INSERT INTO users(user_nom, user_prenom, user_pseudo, user_password, user_email, user_naissance, user_inscription, user_etat, user_cle, user_admin, user_banni) VALUES(:nom,:prenom,:pseudo,:mdp,:email,:naissance,:inscription,0,:cle, 0, 0)"); $req->bindParam(":nom", $infos["nom"]); $req->bindParam(":prenom", $infos["prenom"]); $req->bindParam(":pseudo", $infos["pseudo"]); $req->bindParam(":mdp", $mdp); $req->bindParam(":email", $infos["email"]); $req->bindParam(":naissance", $infos["naissance"]); $req->bindParam(":inscription", $infos["inscription"]); $req->bindParam(":cle", $cle); $req->execute(); // Insertion dans users_privee $req = $bdd->prepare("INSERT INTO users_privee(user_nom, user_prenom, user_pseudo, user_password, user_email, user_naissance, user_inscription, user_etat, user_cle, user_admin, user_banni) VALUES(:nom,:prenom,:pseudo,:mdp,:email,:naissance,:inscription,0,:cle, 0, 0)"); $req->bindParam(":nom", $infos["nom"]); $req->bindParam(":prenom", $infos["prenom"]); $req->bindParam(":pseudo", $infos["pseudo"]); $req->bindParam(":mdp", $mdp); $req->bindParam(":email", $infos["email"]); $req->bindParam(":naissance", $infos["naissance"]); $req->bindParam(":inscription", $infos["inscription"]); $req->bindParam(":cle", $cle); $req->execute(); $message = "<p id=\"message_ok\">Votre inscription est en cours, veuillez valider votre compte via l'email envoyé à cette adresse : " . $email . "</p>"; // Préparation du mail contenant le lien d'activation $destinataire = $email; $sujet = "[Freelancerz] : Activer votre compte"; $entete = "From: noreply@freelancerZ.com"; $contenu = 'Bienvenue sur Freelancerz, Pour activer votre compte, veuillez cliquer sur le lien ci dessous ou copier/coller dans votre navigateur internet. http://freelancerz.pe.hu/inc/validation.php?email=' . urldecode($email) . '&cle=' . urlencode($cle) . ' --------------- Ceci est un mail automatique, Merci de ne pas y répondre.'; @mail($destinataire, $sujet, $contenu, $entete); // Envoi du mail return $message; }
/** * Recherche et affiche les valeurs de la base de données qui corresponde à la periode entrée par l'utilisateur * @param $fin date de fin * @return $resultats Un tableau [][] contenant les informations nécessaires à l'affichage */ function rechercheFin($fin) { // Connexion à la base de données require "bd/bdd.php"; $bdd = bdd(); // La requête SQL $req = $bdd->prepare("SELECT * FROM v_recherche_periode WHERE contrat_fin_prevue <= :fin"); $req->bindParam(":fin", $fin); $req->execute(); $i = 0; $resultats = null; while ($data = $req->fetch()) { $resultats[$i] = array($data['contrat_id'], $data['user_nom'], $data['user_prenom'], $data['contrat_titre'], $data['contrat_theme'], $data['contrat_montant'], $data['contrat_competences']); $i++; } if ($resultats == null) { return -1; } else { return $resultats; } }
} echo '</select>'; echo '<select id="parroquia" name="parroquia">'; echo '<option value="">Seleccione:</option>'; foreach ($provincias_cantones_parroquias[$Prov]['cantones'][$Cant]['parroquias'] as $codParr => $parroquia) { echo '<option value="' . $codParr . '"'; if ($codParr == $Parr) { echo 'selected="selected"'; $Parroquia = $parroquia; } echo '>' . $parroquia . '</option>'; } echo '</select>'; echo '<button id="enviar" name="enviar">Enviar</button>'; if (empty($Parr) == false) { bdd($Prov, $Provincia, $Cant, $Canton, $Parr, $Parroquia); } echo '</body>'; echo '</html>'; function bdd($Prov, $provincia, $Cant, $canton, $Parr, $parroquia) { $conn = new mysqli('localhost', 'root', '', 's5e3'); if ($conn->connect_error) { die($conn->connect_error); } $query = "INSERT INTO datos\n (codProv, provincia, codCant, canton, codParr, parroquia)\n VALUES('{$Prov}','{$provincia}','{$Cant}','{$canton}','{$Parr}', '{$parroquia}')"; $result = $conn->query($query); if ($result) { echo "\nConexión con la Base de Datos realizada correctamente. "; } else { die($conn->error);
<?php // Gestion de la validation du compte et afichage d'un messsage d'informations require "bd/bdd.php"; if (!isset($_GET['cle']) || !isset($_GET['email'])) { header('location:connexion.php'); } // else $cle = $_GET['cle']; $email = $_GET['email']; $bdd = bdd(); $req = $bdd->prepare("SELECT user_etat, user_cle FROM users WHERE user_email = :email"); $req->bindParam(":email", $email); $req->execute(); $data = $req->fetch(); if ($data['user_etat'] == 1) { echo "Le compte est déjà activé. <a href=\"../connexion.php\">Connectez vous</a> pour profiter de votre compte"; } else { if ($cle == $data['user_cle']) { echo "Votre compte est bien activé. <a href=\"../connexion.php\">Connectez vous</a> pour profiter de votre compte"; $req2 = $bdd->prepare("UPDATE users SET user_etat = 1 WHERE user_email LIKE :email"); $req2->bindParam(":email", $email); $req2->execute(); } else { echo "Erreur, ce compte ne peut pas être activé. <a href=\"../connexion.php\">Connectez vous</a> pour profiter de votre compte"; } }
function avertir($idUser, $raison) { include_once "bd/bdd.php"; // connexion à la BDD $bdd = bdd(); // récupération du destinataire $sql2 = "SELECT user_email, user_admin FROM users WHERE user_id = :id"; $req2 = $bdd->prepare($sql2); $req2->bindParam(':id', $idUser); $req2->execute(); $data = $req2->fetch(); $destinataire = $data['user_email']; echo "<script>window.alert('L\\'avertissement a été envoyé');</script>"; // envoi du mail $sujet = "[Freelancerz] : Avertissement !"; $entete = "From: noreply@freelancerZ.com"; $contenu = 'Bonjour, Un administrateur du site vous a envoyé un avertissement : ' . $raison . ' Cordialement, l\'équipe d\'administration. --------------- Ceci est un mail automatique, Merci de ne pas y répondre.'; mail($destinataire, $sujet, $contenu, $entete); // Envoi du mail }