hellofacteurV1/ctrl/post_ajout_tests.php

168 lines
5.7 KiB
PHP
Raw Normal View History

2021-11-02 11:23:49 +01:00
<?php
/**
* Script testant les données envoyées lors de la soumission d'une actualité par un internaute connecté ou non.
* Ce script peut être appelé en ajax ou directement en php si JS désactivé
*
**/
$form["hub"]=trim(strip_tags($_POST["hub"]));
$form["insee"]=trim(strip_tags($_POST["insee"]));
$form["ancre"]=trim(strip_tags($_POST["ancre"]));
$form["url"]=trim(strip_tags($_POST["url"]));
$form["annonce"]=trim(strip_tags($_POST["annonce"]));
$form["time_diffusion"]=trim(strip_tags($_POST["time_diffusion"]));
$ajax_on=false;
if(!empty($_POST["ajax"]))
{
$ajax_on=true;
require_once("../modele/FclFlux_post.php");
$user=new FclFlux_utilisateur();
$user->test_session(false);// besoin de savoir si utilisateur est connecté ou pas...
if(empty($user->connexion_ok))//j'ai pu me faire sauvagement déconnecté précédement...
{
$auteur["pseudo"]=strip_tags(trim($_POST["pseudo"]));
$auteur["email"]=strip_tags(trim($_POST["email"]));
}
header('Content-Type: text/html; charset=utf-8');
}
$msg_form=array();$ajout_message="";
if(empty($user->connexion_ok))//internaute non connecté
{
if((empty($_POST["test"]))||(empty($auteur["email"]))||(empty($auteur["pseudo"]))||(empty($form["hub"]))||(empty($form["insee"]))||(empty($form["ancre"]))||(empty($form["url"])&&(empty($form["annonce"]))))
$msg_form[]=ERREUR_UTILISA_CHAMPS_ABSENTS;
else
{
if((empty($_SESSION["mot"]))||(empty($_SESSION["lettre"]))||((time()-intval($_SESSION["timeS"]))<FORM_MIN_DUREE))
$msg_form[]=ERREUR_IMPREVUE;
else
{
$mot=$_SESSION["mot"];
$nb_lettre=$_SESSION["lettre"]-1;//puisque index débute à 0...
if((strtolower(trim($_POST["test"])))!=($mot[$nb_lettre]))
$msg_form[]=ERREUR_UTILISA_ANTISPAM.$mot[$nb_lettre];
if(empty($_POST["cgu_ok"]))
$msg_form[]=ERREUR_UTILISA_CGU;
}
}
}
elseif((empty($form["hub"]))||(empty($form["insee"]))||(empty($form["ancre"]))||(empty($form["url"])&&(empty($form["annonce"]))))
$msg_form[]=ERREUR_UTILISA_CHAMPS_ABSENTS;
if(empty($msg_form))
{
//recherche du hub pour la ville et le type d'actualité choisis.
if(empty($Bd))
require("../modele/connexion-bd.php");
$ville=get_villes($form["insee"],"insee");
if((empty($ville))||(empty($ville[0]["cp"])))
$msg_form[]=ERREUR_IMPREVUE;
else
{
$cp_ville=$ville[0]["cp"];
switch ($form["hub"])
{
case "agenda":
$hub_nom="Agenda $cp_ville";
break;
case "annonce":
$hub_nom="Annonces $cp_ville";
break;
case "cp":
$hub_nom="Actualités $cp_ville";
break;
default;
$msg_form[]=ERREUR_IMPREVUE;
break;
}
if(!empty($hub_nom))
{
$hub_infos=FclFlux_hub::recherche($hub_nom,"nom","id_hub");
if(empty($hub_infos))
{
$ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_SQL_RECHERCHE." >> ".htmlentities($hub_nom,ENT_QUOTES)));
$msg_form[]=ERREUR_IMPREVUE;
}
else
{
$hub=new FclFlux_hub($hub_infos);
$form["hub"]=$hub;
unset($hub);
}
}
}
if(empty($msg_form))
{
// enregistrement de l'annonce
$form["limites"]["ancre_long_min"]=POST_MIN_ANCRE;
$form["limites"]["ancre_long_max"]=POST_MAX_ANCRE;
$form["limites"]["url_long_max"]=POST_MAX_URL;
$form["limites"]["annonce_long_min"]=POST_MIN_ANNONCE;
$form["limites"]["annonce_long_max"]=POST_MAX_ANNONCE;
if(empty($user->connexion_ok))
{
// je commence par vérifier que l'email fourni ne correspond pas à un utilisateur n'ayant pas validé son compte
$infos_test=FclFlux_utilisateur::recherche($auteur["email"],"email","time_validation");
if((!empty($infos_test))&&(empty($infos_test["time_validation"])))
$msg_form[]="<strong>Vous devez d'abord valider votre compte avant de pouvoir proposer une actualité.</strong><br>Pour ce faire cliquez sur le lien de validation que vous avez reçu sur votre adresse : <strong>".htmlspecialchars($auteur["email"])."</strong>.<br>Si vous ne trouvez pas ce message (même après avoir vérifié le dossier \"spam\" de votre messagerie) ou encore que vous vous êtes trompé lors de la saisie de votre email, <a href='".PAGE_CONTACT."'>contactez-nous</a> pour obtenir de l'aide.";
else
{
$annonce=new FclFlux_post($form);
if(!empty($annonce->erreurs))
$msg_form=array_merge($annonce->erreurs,$msg_form);
else
{
$ajout=$annonce->ajout($auteur);//créé le compte en même temps que l'annonce.
if(!empty($annonce->erreurs))
$msg_form=array_merge($annonce->erreurs,$msg_form);
// cookie utile pour abonner l'utilisateur à la bonne ville lorsqu'il valide son compte.
$date_expire_cookie=time()+(3600*24)*COMPTE_VALIDATION_MAX_DUREE;
setcookie("insee_post",$form["insee"],$date_expire_cookie,"/",SITE_COOKIES_DOMAINE);
}
}
}
else
{
$form["auteur"]=$user;//utilisateur connecté
$annonce=new FclFlux_post($form);
if(!empty($annonce->erreurs))
$msg_form=array_merge($annonce->erreurs,$msg_form);
else
{
$ajout=$annonce->ajout();
if(!empty($annonce->erreurs))
$msg_form=array_merge($annonce->erreurs,$msg_form);
}
}
$Bd=null;
if(empty($msg_form))
{
if((isset($ajout))&&($ajout===false))
$msg_form[]=ERREUR_IMPREVUE;
elseif(empty($user->connexion_ok))
$msg_form[]=MSG_UTILISA_ENVOI_POST_VALID_CREA_COMPTE;
elseif(!empty($form["annonce"]))
$id_post=$annonce->id_post;
else
$msg_form[]=MSG_UTILISA_ENVOI_POST_VALID;
}
}
}
if(!empty($id_post))
{
if($ajax_on)
{
echo $id_post;
exit();
}
else
{
header("location:".PAGE_AJOUT_POST_ILLUSTRATION.$annonce->id_post);
exit();
}
}
elseif((!empty($msg_form))&&($ajax_on))
{
if(($msg_form[0]==MSG_UTILISA_ENVOI_POST_VALID_CREA_COMPTE)||($msg_form[0]==MSG_UTILISA_ENVOI_POST_VALID))
echo str_replace("\"","'",$msg_form[0]);//mise en forme via JS
else
echo get_html_alerte_msg($msg_form);
}