PEEL Shopping
Open source ecommerce : PEEL Shopping
enregistrement.php
Go to the documentation of this file.
1 <?php
2 // This file should be in UTF8 without BOM - Accents examples: éèê
3 // +----------------------------------------------------------------------+
4 // | Copyright (c) 2004-2015 Advisto SAS, service PEEL - contact@peel.fr |
5 // +----------------------------------------------------------------------+
6 // | This file is part of PEEL Shopping 8.0.0, which is subject to an |
7 // | opensource GPL license: you are allowed to customize the code |
8 // | for your own needs, but must keep your changes under GPL |
9 // | More information: https://www.peel.fr/lire/licence-gpl-70.html |
10 // +----------------------------------------------------------------------+
11 // | Author: Advisto SAS, RCS 479 205 452, France, https://www.peel.fr/ |
12 // +----------------------------------------------------------------------+
13 // $Id: enregistrement.php 46935 2015-09-18 08:49:48Z gboussin $
14 include("../configuration.inc.php");
15 include("../lib/fonctions/display_user_forms.php");
16 
17 define('IN_REGISTER', true);
18 $GLOBALS['allow_fineuploader_on_page'] = true;
19 if (est_identifie()) {
20  if (!empty($_GET['devis']) && !empty($GLOBALS['site_parameters']['create_user_when_ask_for_quote']) && check_if_module_active('devis')) {
21  // Création d'une commande de devis en base de données pour un utilisateur loggué n'ayant pas le droit de voir les prix
22  $output = Devis::create_devis_order($frm);
23  include($GLOBALS['repertoire_modele'] . "/haut.php");
24  echo $output;
25  include($GLOBALS['repertoire_modele'] . "/bas.php");
26  die();
27  } else {
28  redirect_and_die(get_url("/utilisateurs/change_params.php"));
29  }
30 }
31 
32 $GLOBALS['page_name'] = 'enregistrement';
33 $GLOBALS['DOC_TITLE'] = $GLOBALS["STR_OPEN_ACCOUNT"];
34 
35 // initialisation des variables
36 $frm = $_POST;
37 if(isset($frm['email'])) {
38  $frm['email'] = trim($frm['email']);
39 }
41 // Dans un premier temps on stocke dans $mandatory_fields les champs obligatoires indiqués dans $GLOBALS['site_parameters']['user_mandatory_fields'].
43 if(isset($GLOBALS['site_parameters']['user_mandatory_fields'])) {
44  $mandatory_fields = $GLOBALS['site_parameters']['user_mandatory_fields'];
45 }
46 // Dans un second temps on ajoute à cette variable les champs obligatoires qui doivent être vérifiés dans tous les cas, ou si des modules ou variables de configurations sont présents.
47 $mandatory_fields['mot_passe'] = sprintf($GLOBALS['STR_ERR_PASSWORD'], vn($GLOBALS['site_parameters']['password_length_required'], 8));
48 $mandatory_fields['email'] = 'STR_ERR_EMAIL';
49 if(!empty($GLOBALS['site_parameters']['add_b2b_form_inputs'])) {
50  $mandatory_fields['societe'] = 'STR_ERR_SOCIETY';
51  $mandatory_fields['type'] = 'STR_ERR_YOU_ARE';
52  $mandatory_fields['activity'] = 'STR_ERR_ACTIVITY';
53  $mandatory_fields['siret'] = 'STR_ERR_SIREN';
54 }
55 if(check_if_module_active('annonces')) {
56  if(vb($GLOBALS['site_parameters']['type_affichage_user_favorite_id_categories']) == 'checkbox') {
57  $mandatory_fields['id_categories'] = 'STR_ERR_FIRST_CHOICE';
58  } elseif (vb($GLOBALS['site_parameters']['type_affichage_user_favorite_id_categories']) == 'select') {
59  $mandatory_fields['id_cat_1'] = 'STR_ERR_FIRST_CHOICE';
60  }
61  $mandatory_fields['cgv_confirm'] = 'STR_ERR_CGV';
62  $mandatory_fields['mot_passe_confirm'] = 'STR_ERR_PASS_CONFIRM';
63 }
64 if(check_if_module_active('captcha')) {
65  $mandatory_fields['code'] = 'STR_EMPTY_FIELD';
66 }
67 if(empty($GLOBALS['site_parameters']['pseudo_is_not_used']) && empty($GLOBALS['site_parameters']['pseudo_is_optionnal'])) {
68  $mandatory_fields['pseudo'] = 'STR_EMPTY_FIELD';
69 }
70 
71 foreach($mandatory_fields as $key => $value) {
72  // Transformation des valeurs du tableau avec les variables de langue du même nom
73  if (!empty($GLOBALS[$value])) {
74  $mandatory_fields[$key] = $GLOBALS[$value];
75  }
76 }
77 if (check_if_module_active('socolissimo')) {
78  // Securité SO Colissimo pour bien s'assurer que le process de commande sera cohérent
79  unset($_SESSION['session_commande']);
80 }
81 if (!empty($frm)) {
82  // D'abord on génère une erreur pour tous les champs obligatoires qui sont vides
83  $form_error_object->valide_form($frm, $mandatory_fields, array('mot_passe' => vn($GLOBALS['site_parameters']['password_length_required'], 8)), array('mot_passe' => 'check_password_format'));
84 
85  // On traite ensuite les champs avec des règles plus compliquées
86  if (!empty($frm['siret']) && vb($frm['pays']) == 1 && !preg_match("#([0-9]){9,14}#", str_replace(array(' ', '.'), '', $frm['siret']))) {
87  // Si nous sommes en France, nous avons renseigné le numéro $GLOBALS['STR_SIREN'], cela nécessite un contrôle de la valeur rentrée par l'utilisateur
88  $form_error_object->add('siret', $GLOBALS['STR_ERR_SIREN']);
89  }
90  if (!empty($frm['mot_passe_confirm']) && vb($frm['mot_passe_confirm']) != vb($frm['mot_passe'])) {
91  $form_error_object->add('mot_passe_confirm', $GLOBALS['STR_ERR_PASS_CONFIRM']);
92  }
93  if(!empty($mandatory_fields['pseudo']) && !empty($frm['pseudo'])) {
94  $add_pseudo_error = (String::strpos($frm['pseudo'], '@') !== false);
95  if (function_exists('searchKeywordFiltersInLogin')) {
96  $add_pseudo_error = ($add_pseudo_error || searchKeywordFiltersInLogin($frm['pseudo'])) ;
97  }
98  if ($add_pseudo_error) {
99  $form_error_object->add('pseudo', $GLOBALS['STR_ERR_PSEUDO']);
100  } elseif ((num_rows(query("SELECT 1
101  FROM peel_utilisateurs
102  WHERE pseudo = '" . nohtml_real_escape_string($frm['pseudo']) . "' AND " . get_filter_site_cond('utilisateurs') . "")) > 0)) {
103  $form_error_object->add('pseudo', $GLOBALS['STR_ERR_NICKNAME_STILL']);
104  }
105  }
106  if(!empty($frm['email'])) {
107  if (function_exists('searchKeywordFiltersInMail')) {
108  $add_mail_error = searchKeywordFiltersInMail($frm['email']);
109  if ($add_mail_error) {
110  $form_error_object->add('email', $GLOBALS['STR_ERR_EMAIL']);
111  }
112  }
113  if (!$form_error_object->has_error('email')) {
114  if (!EmailOK($frm['email'])) {
115  $form_error_object->add('email', $GLOBALS['STR_ERR_EMAIL_BAD']);
116  } elseif ((num_rows(query("SELECT 1
117  FROM peel_utilisateurs
118  WHERE email = '" . nohtml_real_escape_string($frm['email']) . "' AND priv NOT IN ('" . implode("','", $GLOBALS['disable_login_by_privilege']) . "') AND " . get_filter_site_cond('utilisateurs'))) > 0)) {
119  // Test de l'unicité de l'email, sauf pour les utilisateurs n'étant pas inscrit via le téléchargement.
120  $form_error_object->add('email', $GLOBALS['STR_ERR_EMAIL_STILL']);
121  }
122  }
123  }
124  if (!empty($frm['code']) && check_if_module_active('captcha')) {
125  if (!check_captcha($frm['code'], $frm['code_id'])) {
126  $form_error_object->add('code', $GLOBALS['STR_CODE_INVALID']);
127  // Code mal déchiffré par l'utilisateur, on en donne un autre
128  delete_captcha(vb($frm['code_id']));
129  unset($frm['code']);
130  }
131  }
132  if(!empty($frm['token'])) {
133  if (!verify_token('get_user_register_form', 120, false)) {
134  $form_error_object->add('token', $GLOBALS['STR_INVALID_TOKEN']);
135  }
136  }
137  if(!empty($frm['email_confirm']) && $frm['email_confirm'] != vb($frm['email'])) {
138  // On envoie une demande de confirmation d'email
139  $form_error_object->add('email_confirm', $GLOBALS['STR_ERR_MISMATCH_EMAIL']);
140  }
141  if (!empty($GLOBALS['site_parameters']['user_tva_intracom_validation_on_registration_page']) && check_if_module_active('vatlayer') && !empty($frm['intracom_for_billing']) && !vatlayer_check_vat($frm['intracom_for_billing'])) {
142  $form_error_object->add('intracom_for_billing', $GLOBALS['STR_MODULE_VATLAYER_ERR_INTRACOM']);
143  }
144  if (!$form_error_object->count()) {
145  $frm['logo'] = upload('logo', false, 'any', $GLOBALS['site_parameters']['image_max_width'], $GLOBALS['site_parameters']['image_max_height'], null, null, vb($frm['logo']));
146  // Le formulaire envoyé est apparemment OK, on le traite
147  if (check_if_module_active('captcha')) {
148  // Code OK on peut effacer le code
149  delete_captcha($frm['code_id']);
150  }
151  if(is_user_bot()) {
152  // Protection du formulaire contre les robots
153  die();
154  }
155  $user_id = insere_utilisateur($frm, false, true, true);
156  $utilisateur = user_login_now($frm['email'], $frm['mot_passe']);
157 
158  if(!empty($_GET['devis']) && !empty($GLOBALS['site_parameters']['create_user_when_ask_for_quote']) && check_if_module_active('devis')) {
159  $output = Devis::create_devis_order($frm);
160  } else {
161  $output = get_user_register_success($frm);
162  }
163  if (!empty($GLOBALS['site_parameters']['redirect_user_after_register_by_priv'][$utilisateur['priv']])) {
164  // Redirection vers une url administrable après la connexion réussie d'un utilisateur.
165  redirect_and_die($GLOBALS['site_parameters']['redirect_user_after_register_by_priv'][$utilisateur['priv']]);
166  } elseif ($_SESSION['session_caddie']->count_products() > 0) {
167  if (empty($_SESSION['session_caddie']->zoneId) || empty($_SESSION['session_caddie']->typeId)) {
168  include($GLOBALS['repertoire_modele'] . "/haut.php");
169  echo $output;
170  include($GLOBALS['repertoire_modele'] . "/bas.php");
171  } else {
172  if (check_if_module_active('socolissimo')) {
173  // Pour SO Colissimo, si on s'inscrit "en cours de commande", on force le passage vers le caddie de nouveau, sinon le passage par l'interface de SO Colissimo serait zappée ---> Commande incomplète en BDD.
174  redirect_and_die(get_url('caddie_affichage'));
175  } else {
176  redirect_and_die(get_url('achat_maintenant'));
177  }
178  }
179  } else {
180  include($GLOBALS['repertoire_modele'] . "/haut.php");
181  echo $output;
182  include($GLOBALS['repertoire_modele'] . "/bas.php");
183  }
184  die();
185  }
186 }
187 
188 // Si on a tenté sans succès de se connecter via un site extérieur et que la connexion a réussi
189 // alors on préremplit les champs d'inscription avec les données du site extérieur
190 $hook_result = call_module_hook('account_create', $frm, 'array');
191 
192 include($GLOBALS['repertoire_modele'] . "/haut.php");
193 
194 if ($form_error_object->count()) {
195  echo $GLOBALS['tplEngine']->createTemplate('global_error.tpl', array('message' => $GLOBALS['STR_ERR_FORM']))->fetch();
196 }
197 if (!empty($noticemsg)) {
198  echo $noticemsg;
199 }
200 if ($form_error_object->has_error('token')) {
201  echo $form_error_object->text('token');
202 }
203 
204 echo get_user_register_form($frm, $form_error_object, !empty($_GET['devis']) && !empty($GLOBALS['site_parameters']['create_user_when_ask_for_quote']) && check_if_module_active('devis'), false, null, $mandatory_fields);
205 
206 include($GLOBALS['repertoire_modele'] . "/bas.php");
207 
if(isset($frm['email'])) $form_error_object
static strpos($haystack, $needle, $offset=0)
Returns the numeric position of the first occurrence of needle in the haystack string.
Definition: String.php:54
upload($field_name, $rename_file=true, $file_kind=null, $image_max_width=null, $image_max_height=null, $path=null, $new_file_name_without_extension=null, $default_return_value=null)
Fonction d'upload de fichiers.
Definition: fonctions.php:3302
insere_utilisateur(&$frm, $password_already_encoded=false, $send_user_confirmation=false, $warn_admin_if_template_active=true, $skip_existing_account_tests=false)
Ajout d'un utilisateur.
Definition: user.php:134
if(!empty($GLOBALS['site_parameters']['add_b2b_form_inputs'])) if(check_if_module_active('annonces')) if(check_if_module_active('captcha')) if(empty($GLOBALS['site_parameters']['pseudo_is_not_used'])&&empty($GLOBALS['site_parameters']['pseudo_is_optionnal'])) foreach($mandatory_fields as $key=> $value) if(check_if_module_active('socolissimo')) if(!empty($frm)) $hook_result
check_captcha($code, $id)
Definition: fonctions.php:138
redirect_and_die($url, $permanent_redirection=false, $avoid_loop=false)
Redirige vers l'URL demandée et arrête le programme.
Definition: fonctions.php:1551
$mandatory_fields
delete_captcha($form_object_id)
Definition: fonctions.php:154
nohtml_real_escape_string($value, $allowed_tags=null)
Protège les données pour insertion dans MySQL ET supprime les tags HTML pour protéger de toute sorte ...
Definition: database.php:400
if(!function_exists('ipGet')) if(!function_exists('isPublicIP')) is_user_bot($ip=null, $user_agent=null)
Renvoie si le visiteur est un robot ou non.
Definition: fonctions.php:3083
get_filter_site_cond($table_technical_code, $table_alias=null, $use_strict_rights_if_in_admin=false, $specific_site_id=null, $exclude_public_items=false, $admin_force_multisite_if_allowed=false)
Retourne la condition SQL permettant de filtrer les données pour une table.
Definition: fonctions.php:4643
query($query, $die_if_error=false, $database_object=null, $silent_if_error=false, $security_sql_filter=true)
The query() function is meant to be called anywhere you want to make a query.
Definition: database.php:158
if(!defined('IN_PEEL')) est_identifie()
Retourne true si l'utilisateur est identifié
Definition: user.php:23
vb(&$var, $default=null)
Variable blanche if $var n'est pas défini, retourne $default, sinon retourne $var.
Definition: format.php:97
if(strlen($date2)== '10') if($type== 'users-by-age'&&a_priv('admin_users', true)) elseif($type== 'forums-count'&&a_priv('admin_content', true)) elseif($type== 'forums-categories'&&a_priv('admin_content', true)) elseif($type== 'users-count'&&a_priv('admin_users', true)) elseif($type== 'product-categories'&&a_priv('admin_products', true)) elseif($type== 'users-by-sex'&&a_priv('admin_users', true)) elseif($type== 'users-by-country'&&a_priv('admin_users', true)) elseif($type== 'sales'&&a_priv('admin_sales', true))
Definition: chart-data.php:160
num_rows($query_result)
num_rows()
Definition: database.php:321
EmailOK($email)
Vérification du format d'adresse email trouvée sur http://www.phpinfo.net/?p=trucs&rub=astuces.
Definition: emails.php:282
$GLOBALS['allow_fineuploader_on_page']
call_module_hook($hook, $params, $mode= 'boolean')
Appelle la fonction correspondant au $hook pour chaque module installé La fonction doit s'appeler : [...
$noticemsg
vn(&$var, $default=0)
Variable nulle if $var n'est pas défini, retourne $default, sinon retourne $var.
Definition: format.php:110
verify_token($name= 'general', $delay_in_minutes=60, $check_referer_if_set_by_server=true, $cancel_token=true, $minimum_wait_in_seconds_before_use=0)
Vérification de la validité d'un token Par défaut, un token est valide 1h, et utilisable 1 seule fois...
Definition: fonctions.php:118
user_login_now($email_or_pseudo, $mot_passe, $check_password=true, $password_given_as_first_password_hash=false, $password_length_if_given_as_first_password_hash=null)
user_login_now()
Definition: user.php:694
check_if_module_active($module_name, $specific_file_name=null)
Renvoie si un module est présent et activé ou non - Peut être appelé avant ou après le chargement d'u...
if(defined('IN_PEEL_ADMIN')||IN_INSTALLATION) $_SESSION['session_langue']

This documentation for Open ecommerce PEEL Shopping and PEEL.fr has been generated by Doxygen on Thu Oct 15 2015 14:41:39 - Peel ecommerce is a product of Agence web Advisto SAS. All rights reserved.