*
  * mysql_query("SET AUTOCOMMIT=0");
  * 	$req=" BEGIN";
  *  */
 //pour rechercher l'id de l'insertion il faut savoir depuis quand l'insertion s'est faite
 $req = "select now()";
 $date = requete_champ_unique($req);
 $req = creerDiscussion($sujet, $intitule, $idAok, $dest);
 $res = requete($req);
 if (mysql_errno()) {
     $echec = "erreur lors de la création de la discussion.";
 }
 //puisqu'on ne peut garantir qu'il n'y a pas eu d'autre insertion entre les deux (pb LAST_INSERT_ID())
 //on recherche donc la discussion créée avec ces paramètres depuis quelques secondes.
 $req = derniereDiscussion($sujet, $intitule, $idAok, $dest, $date);
 $id_d = requete_champ_unique($req);
 //Rq : il ne faut SURTOUT PAS tenter d'affecter un retour en comparant avec une valeur : $var=fonction()==null ne met pas le résultat de fonction dans var mais rien (pas même false ou true apparemment) !
 if ($id_d == null || trim($id_d) == "") {
     $echec = "erreur : discussion introuvable. Sans doute non créée.";
 }
 if ($echec != "") {
     //erreur d'ajout de la nouvelle discussion
     xmlErreur($echec);
 } else {
     //discussion lancée
     //on peut maintenant enregistrer le nouveau message
     $req = ecrireMessage($auteur, $id_d, $intitule, $texte);
     requete($req);
     if (mysql_errno() == 0) {
         //						if (requete($req)==null) {
         header('Content-Type: application/xml');
//contrôle des données
if (!isset($_GET["titre"]) || !$_GET["titre"] || !isset($_GET["corps"]) || !$_GET["corps"]) {
    xmlErreur("Veuillez remplir tous les champs.");
    exit;
}
if (!isset($_GET["id_mess"]) || !$_GET["id_mess"] || !isset($_GET["id_disc"]) || !$_GET["id_disc"]) {
    xmlErreur("Un souci a eu lieu avec le formulaire d'envoi.");
    exit;
}
$titre = $_GET["titre"];
$corps = $_GET["corps"];
$id_mess = $_GET["id_mess"];
$id_disc = $_GET["id_disc"];
if (!isset($lid)) {
    //retrouver l'id du lapin qui écrit, celui du propriétaire courant
    $req_id = "SELECT id_lapin FROM `{$prefixe}Discussion` d join {$prefixe}lapin l on d.dest=l.id_lapin\n\t\t\tWHERE id_disc='{$id_disc}' and l.id_profil='{$pid}' \n\t\t\tunion\n\t\t\tSELECT id_lapin FROM `{$prefixe}Discussion` d join {$prefixe}lapin l on d.auteur=l.id_lapin\n\t\t\tWHERE id_disc='{$id_disc}' and l.id_profil='{$pid}'";
    $lid = requete_champ_unique($req_id);
    if (!isset($lid)) {
        xmlErreur("Aucun lapin n'est identifié.");
        exit;
    }
}
$req_ins = "insert into `{$prefixe}Message` values ('', '{$titre}','{$corps}',NOW(),'{$id_disc}','{$lid}')";
$res = requete_champ_unique($req_ins);
header('Content-Type: application/xml');
$data = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?> \n<messagerie>";
$data .= "<contexte>ajout</contexte>\n";
$data .= "<retour>ok</retour>\n";
$data .= "</messagerie>";
echo $data;
//echo "insertion : $res ".mysql_error();
<?php

require_once "include/sql.php";
if (connect()) {
    //!!! vérifier que la personne est bien connectée (cookie/session)
    //!!! gérer l'erreur d'absence de paramètres GET
    //!!! gérer la sécurité (ne pas inclure GET directement !)
    $req_mess = "select texte from `{$prefixe}Message` where id_mess='" . $_GET['id_mess'] . "'";
    $corps = requete_champ_unique($req_mess);
    header('Content-Type: application/xml');
    $data = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?> \n<message>";
    $data .= "<corps>{$corps}</corps>";
    $data .= "\n</message>";
    echo $data;
} else {
    //!!! à tester
    echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?> \n<boite>\n</boite>";
}
Beispiel #4
0
//le compte ne se fait qu'en étant connecté
if (isset($_SESSION["identifiant"])) {
    //connecté : afficher les messages en relation avec le membre et la fiche
    //identifier le membre connecté
    $mid = $_SESSION['mid'];
    //connecté à la base ?
    if (!connect()) {
        //gestion de l'erreur
        header("Location: ../../index.php?page=erreur&message=La messagerie n'est pas accessible actuellement.");
        //		echo "<div class='erreur'>\nLa messagerie n'est pas accessible actuellement.</div>\n";
        //		exit;
    }
    //aucun membre identifié (ou un des ses lapins)
    if (!isset($mid) && !isset($_SESSION['lid'])) {
        //gestion de l'erreur
        //Rq : à priori inutile avec la connexion ; conservé pour éviter un appel direct
        header("Location: ../../index.php?page=erreur&message=Vous devez être identifié pour accéder à la messagerie.");
        //	echo "<div class='erreur'>\nVous devez être identifié pour accéder à la messagerie.</div>\n";
        //	exit;
    }
    //rechercher le nombre de nouveaux messages depuis le dernier accès à sa messagerie
    $req_disc = nonLus($mid);
    $nb_disc = requete_champ_unique($req_disc) or 0;
    //envoyer le résultat
    header('Content-Type: application/xml');
    $data = "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<nouveaux>";
    $data .= "<nombre>{$nb_disc}</nombre>";
    $data .= "</nouveaux>";
    echo $data;
}
//non connecté : on ne fait rien
        $message = " \nun probleme s'est produit.";
        //renvoi tout sauf mots de passe, mail, code postal (parametres en GET )
        header('Location: ../index.php?page=inscription&mess=' . urlencode($message) . '&user='******'&nom=' . urlencode($nom) . '&prenom=' . urlencode($prenom));
    } else {
        //c'est bon
        //GESTION DE LA PHOTO
        require_once "upload_photo.inc.php";
        if (isset($_FILES['trombine'])) {
            $fich = enregistrer_photo($_FILES['trombine'], $user);
            if ($fich) {
                //succes upload
                $sql = "UPDATE lapin_proprietaire SET trombine = '" . $fich . "' WHERE identifiant = '" . $user . "';";
                mysql_query($sql);
            }
        }
        //ne pas oublier l'identifiant du profil pour la messagerie et la recherche
        $sql = "SELECT id_profil FROM lapin_proprietaire WHERE identifiant = '" . $user . "'";
        $mid = requete_champ_unique($sql);
        //if( ! isset($_SESSION['identifiant']) ){  // modif dom : dans tous les cas réinitialiser l'identifiant
        $_SESSION['identifiant'] = $user;
        //
        $_SESSION['mid'] = $mid;
        //
        session_regenerate_id(true);
        //}
        //goto profile page
        header('Location: ../index.php?page=profil&user=' . urlencode($user));
    }
    disconnect();
    //deconnexion MySQL
}
                foreach ($lapins as $lapin) {
                    $code .= "<option value='{$lapin->id_lapin}'>{$lapin->nomlap}</option>";
                }
                $code .= "</select>";
                $code .= "<label>Thème : </label><input type='text' name='sujet' value=''>";
                $code .= "<br />Détails<br /><div class='detailsMess'>\n";
                $code .= "<label>Titre : </label><input type='text' name='intitule' value=''>";
                $code .= "<label>Message : </label><textarea name='corps'></textarea>\n</div>";
                //mid est passé par la session
                $code .= "<input type='hidden' name='id_dest' value='" . $_SESSION['fiche'] . "'>";
                $code .= "<input type='submit' name='submit' value='Envoyer' />\n</form>";
                $code .= "</fieldset>\n</div>";
            }
        }
        //clore les conteneurs
        $code .= "</div>\n</article>\n";
        echo $code;
        //mettre à jour l'heure de dernière consultation pour le compte des nouveaux messages
        $req_date = MajConsultation($mid);
        $lapins = requete_champ_unique($req_date);
    } else {
        echo "<i>Aucune discussion trouvée.</i> ";
    }
    //est-ce toujours nécessaire ? La connexion est peut-être encore utile => l'ajouter systématiquement dans un document générique (moteur) ?
    disconnect();
    //ne pas oublier les fonctionnalités de communications avec le serveur pour ouvrir les discussions et les messages.
    ?>
	<script type="text/javascript" language="Javascript" src="scripts/messagerie.js"></script>
<?php 
}
//$pid=$_SESSION['pid'];