예제 #1
0
 public function __construct($nom, $prenom, $mdp)
 {
     $this->nom = $nom;
     $this->prenom = $prenom;
     $this->mdp = $mdp;
     $this->bdd = bdd();
 }
예제 #2
0
/**
 * 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>";
    }
}
예제 #3
0
/** @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;
}
예제 #4
0
/**
 * 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;
}
예제 #5
0
/**
 * 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();
}
예제 #6
0
/**
 * 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;
}
예제 #7
0
/**
 * 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();
}
예제 #8
0
/**
 * 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.";
}
예제 #9
0
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();
}
예제 #10
0
/**
 * 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>";
}
예제 #11
0
 public function __construct($IdPersonne)
 {
     $this->IdPersonne = $IdPersonne;
     $this->bdd = bdd();
 }
예제 #12
0
/**
 * 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;
}
예제 #13
0
/**
 * 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;
}
예제 #14
0
/**
 * 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);
예제 #16
0
<?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";
    }
}
예제 #17
0
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
}