Bonjour à tous,
Voilà je suis toujours sur mon site d'aviation qui comprend le site, un forum et 2 autre site.
Chaque élément nécessite à la base une inscription individuel, le truc bien chiant quoi. Donc je suis en train de faire un formulaire unique qui fera tout.
Donc ma première question est sur ma logique:
Je vérifie via ajax et java, ce qui est rentré dans les champs, avec java je fais du match pour vérifié que ce qui est rentré est cohérent et ajax pour bloquer les double compte. Par contre j'ai un doute que cette partie du formulaire ne soit pas à l’abri d'injection.
Ensuite il y aura un traitement en php dans un autre fichiers ou il y aura une seconde vérification avec des pregmatchs, des str replace, magic quote... au cas ou quelqu'un ne passerai pas par la page formulaire
suis je bien partis?
seconde question,
j'ai un champs commentaire, ou la personnes doit expliquer pourquoi il vient, et la je cherche une expression réguliére qui couvre un teste de base avec les accent, ponctuation de base, et retour à la ligne...
Quelqu'un aurai t'il une expression régulière java qui correspondrait sous la main, car je suis vraiment pas à l'aise avec ça.
troisième question
Hormis que c'est le bordel dans ce code, et que c'est optimisation à mort, voyez vous de grosse aberrations, surtout au point de vue sécurité.
Je sais que mon formulaire n'a pas les balises forms et c'est volontaire, pour le moment, c'est pour éviter des fausse manip.
page formulaire.
<div class="container">
<div class="row">
<div class="col-lg-2"></div>
<div class="col-lg-8">
<label for="username">Nom d’utilisateur:</label><span>La longueur doit être comprise entre 5 et 20 caractères.</span><br>
<input type="text" tabindex="3" name="username" id="username" class="username" size="25" value=""><span class="check_username"></span><br>
<label for="email">Adresse e-mail:</label><br>
<input type="text" tabindex="4" name="email" id="email" class="email" size="25" maxlength="100" value="" title="Adresse e-mail" autocomplete="off"><span class="check_email"></span><br>
<label for="email_confirm">Confirmation de l’adresse e-mail:</label><br>
<input type="text" tabindex="5" name="email_confirm" id="email_confirm" class="email_confirm" size="25" maxlength="100" value="" title="Confirmation de l’adresse e-mail" autocomplete="off"><span class="re_checkemail"></span><br>
<label for="tz">Fuseau horaire:</label><span>[UTC] Europe de l’Ouest, Méridien de Greenwich par défaut</span><br>
<select name="tz" id="tz" tabindex="7" class="autowidth">
<option title="[UTC - 12] Île Baker" value="-12">[UTC - 12] Île Baker</option>
<option title="[UTC - 11] Niue, Samoa" value="-11">[UTC - 11] Niue, Samoa</option>
<option title="[UTC - 10] Hawaii-Aleutian, Île Cook" value="-10">[UTC - 10] Hawaii-Aleutian, Île Cook</option>
<option title="[UTC - 9:30] Îles Marquises" value="-9.5">[UTC - 9:30] Îles Marquises</option>
<option title="[UTC - 9] Alaska, Île Gambier" value="-9">[UTC - 9] Alaska, Île Gambier</option>
<option title="[UTC - 8] Pacifique" value="-8">[UTC - 8] Pacifique</option>
<option title="[UTC - 7] Montagnes Rocheuses" value="-7">[UTC - 7] Montagnes Rocheuses</option>
<option title="[UTC - 6] Centre" value="-6">[UTC - 6] Centre</option>
<option title="[UTC - 5] Est" value="-5">[UTC - 5] Est</option>
<option title="[UTC - 4:30] Venezuela" value="-4.5">[UTC - 4:30] Venezuela</option>
<option title="[UTC - 4] Atlantique" value="-4">[UTC - 4] Atlantique</option>
<option title="[UTC - 3:30] Terre-Neuve" value="-3.5">[UTC - 3:30] Terre-Neuve</option>
<option title="[UTC - 3] Amazonie, Groenland Central" value="-3">[UTC - 3] Amazonie, Groenland Central</option>
<option title="[UTC - 2] Fernando de Noronha, Géorgie du Sud & les Îles Sandwich du Sud" value="-2">[UTC - 2] Fernando de Noronha, Géorgie du Sud & les Îles Sandwich du Sud</option>
<option title="[UTC - 1] Açores, Cap-Vert, Groenland de l’Est" value="-1">[UTC - 1] Açores, Cap-Vert, Groenland de l’Est</option>
<option title="[UTC] Europe de l’Ouest, Méridien de Greenwich" value="0" selected="selected">[UTC] Europe de l’Ouest, Méridien de Greenwich</option>
<option title="[UTC + 1] Europe Centrale, Afrique de l’Ouest" value="1">[UTC + 1] Europe Centrale, Afrique de l’Ouest</option>
<option title="[UTC + 2] Europe de l’Est, Afrique Centrale" value="2">[UTC + 2] Europe de l’Est, Afrique Centrale</option>
<option title="[UTC + 3] Moscou, Afrique de l’Est" value="3">[UTC + 3] Moscou, Afrique de l’Est</option>
<option title="[UTC + 3:30] Iran" value="3.5">[UTC + 3:30] Iran</option>
<option title="[UTC + 4] Gulf, Samara" value="4">[UTC + 4] Gulf, Samara</option>
<option title="[UTC + 4:30] Afghanistan" value="4.5">[UTC + 4:30] Afghanistan</option>
<option title="[UTC + 5] Pakistan, Iekaterinbourg" value="5">[UTC + 5] Pakistan, Iekaterinbourg</option>
<option title="[UTC + 5:30] Inde, Sri Lanka" value="5.5">[UTC + 5:30] Inde, Sri Lanka</option>
<option title="[UTC + 5:45] Népal" value="5.75">[UTC + 5:45] Népal</option>
<option title="[UTC + 6] Bangladesh, Bhoutan, Novosibirsk" value="6">[UTC + 6] Bangladesh, Bhoutan, Novosibirsk</option>
<option title="[UTC + 6:30] Îles Cocos, Myanmar" value="6.5">[UTC + 6:30] Îles Cocos, Myanmar</option>
<option title="[UTC + 7] Indochine, Krasnoyarsk" value="7">[UTC + 7] Indochine, Krasnoyarsk</option>
<option title="[UTC + 8] Chine, Australie de l’Ouest, Irkutsk" value="8">[UTC + 8] Chine, Australie de l’Ouest, Irkutsk</option>
<option title="[UTC + 8:45] Australie du Sud-Est" value="8.75">[UTC + 8:45] Australie du Sud-Est</option>
<option title="[UTC + 9] Japon, Corée, Chita" value="9">[UTC + 9] Japon, Corée, Chita</option>
<option title="[UTC + 9:30] Australie Centrale" value="9.5">[UTC + 9:30] Australie Centrale</option>
<option title="[UTC + 10] Australie de l’Est, Vladivostok" value="10">[UTC + 10] Australie de l’Est, Vladivostok</option>
<option title="[UTC + 10:30] Lord Howe" value="10.5">[UTC + 10:30] Lord Howe</option>
<option title="[UTC + 11] Île Solomon, Magadan" value="11">[UTC + 11] Île Solomon, Magadan</option>
<option title="[UTC + 11:30] Île Norfolk" value="11.5">[UTC + 11:30] Île Norfolk</option>
<option title="[UTC + 12] Nouvelle Zélande, Fiji, Kamchatka" value="12">[UTC + 12] Nouvelle Zélande, Fiji, Kamchatka</option>
<option title="[UTC + 12:45] Îles Chatham" value="12.75">[UTC + 12:45] Îles Chatham</option>
<option title="[UTC + 13] Tongo, Îles Phoenix" value="13">[UTC + 13] Tongo, Îles Phoenix</option>
<option title="[UTC + 14] Île de Wight" value="14">[UTC + 14] Île de Wight</option>
</select><br>
<label for="pseudo">Quel est votre pseudo FSX:</label><br>
<input type="text" tabindex="6" name="pseudo" id="pseudo" class="pseudo" size="25" maxlength="100" value="" title="Pseudo sous FSX" autocomplete="off"><span class="check_pseudo"></span><br>
<label for="airport">Quel est l'aéroport ou aérodrome le plus proche de chez vous:</label><br>
<input type="text" tabindex="7" name="airport" id="airport" class="airport" size="25" maxlength="100" value="" title="airport" autocomplete="off"><span class="check_airport"></span><br>
<label for="new_password">Mot de passe:</label><br><span>Le mot de passe doit avoir une longueur comprise entre 6 et 100 caractères.</span><br>
<input type="password" tabindex="8" name="password1" id="password1" size="25" value="" class="password1" title="Nouveau mot de passe" autocomplete="off"><span class="check_password"></span><br>
<label for="password_confirm">Confirmation du mot de passe:</label><br>
<input type="password" tabindex="9" name="password_confirm" class="password_confirm" id="password_confirm" size="25" value="" title="Confirmation du mot de passe" autocomplete="off"><span class="check_password_confirm"></span><br>
<label for="raison">Afin de mieux comprendre le but de votre inscription, merci de nous dire pourquoi venez vous chez nous.</label><br>
<textarea name="raison" tabindex="10" name="raison" cols="75" rows="5"></textarea><span class="raison"></span><br>
<input type="hidden" name="lang" id="lang" value="fr"><!--champs masqué -->
<script type="text/javascript">
var email;
var email_confirm;
var password;
var password_confirm;
$(function()
{
$('.username').keyup(function()
{
username=$(this).val();
username=remove_whitespaces(username);
//alert('username='+username);
if (username.match(/^\.\\]\wæøå-]{5,30}$/))
{
$('.check_username').fadeIn(400).html('<img src="./site/public/register/ajax-loading.gif" /> ');
var String = 'pseudo='+ username;
$.ajax({
type: "POST",
url: "./site/public/register/test_pseudo.php",
data: String,
cache: false,
success: function(result)
{
var result=remove_whitespaces(result);
if(result=="")
{
$('.check_username').html('<img src="./site/public/register/accept.png" /> Pseudo correct et disponible');
}
else
{
$('.check_username').html('<img src="./site/public/register/error.png" /> Pseudo correct mais indisponible');
}
}
});
}
else
{
$('.check_username').html('<img src="./site/public/register/error.png" /> Pseudo incorrect');
}
});
$('.email').keyup(function()
{
//alert('email='+email);
email=$(this).val();
email=remove_whitespaces(email);
if (email.match(/^\w+\w-\.]*\@\w+((-\w+)|(\w*))\.[a-zA-Z]{2,3}$/))
{
$('.check_email').fadeIn(400).html('<img src="./site/public/register/ajax-loading.gif" /> ');
var String = 'mail='+ email;
$.ajax({
type: "POST",
url: "./site/public/register/test_mail.php",
data: String,
cache: false,
success: function(result2)
{
var result2=remove_whitespaces(result2);
if(result2=="")
{
$('.check_email').html('<img src="./site/public/register/accept.png" /> Email correct et disponible');
}
else
{
$('.check_email').html('<img src="./site/public/register/error.png" /> Email correct mais indisponible');
}
}
});
}
else
{
$('.check_email').html('<img src="./site/public/register/error.png" /> Email incorrect');
}
});
$('.email_confirm').keyup(function()
{
//alert('email='+email);
email_confirm=$(this).val();
email_confirm=remove_whitespaces(email_confirm);
$('.re_checkemail').html('');
if (email==email_confirm)
{
$('.re_checkemail').html('<img src="./site/public/register/accept.png" /> Confirmation Email correct');
}
else
{
$('.re_checkemail').html('<img src="./site/public/register/error.png" /> Confirmation Email incorrect');
}
});
$('.pseudo').keyup(function()
{
pseudo=$(this).val();
pseudo=remove_whitespaces(pseudo);
//alert('pseudo='+pseudo);
if (pseudo.match(/^\.\\]\wæøå-]{5,30}$/))
{
$('.check_pseudo').html('<img src="./site/public/register/accept.png" /> Pseudo FSX correct');
}
else
{
$('.check_pseudo').html('<img src="./site/public/register/error.png" /> Pseudo FSX incorrect');
}
});
$('.airport').keyup(function()
{
airport=$(this).val();
airport=remove_whitespaces(airport);
//alert('airport='+airport);
if (airport.match(/^[a-zA-Z0-9]{3,4}$/))
{
$('.check_airport').fadeIn(400).html('<img src="./site/public/register/ajax-loading.gif" /> ');
var String = 'airport='+ airport;
$.ajax({
type: "POST",
url: "./site/public/register/search_airport.php",
data: String,
cache: false,
success: function(result2)
{
var result2=remove_whitespaces(result2);
if(result2=="")
{
$('.check_airport').html('<img src="./site/public/register/error.png" />');
}
else
{
$('.check_airport').html('<img src="./site/public/register/accept.png" />' +result2);
}
}
});
}
else
{
$('.check_airport').html('<img src="./site/public/register/error.png" /> Aéroport incorrect');
}
});
$('.password1').keyup(function()
{
password1=$(this).val();
password1=remove_whitespaces(password1);
//alert('password1='+password1);
if (password1.match(/^\.\\]\wæøå-]{5,30}$/))
{
$('.check_password').html('<img src="./site/public/register/accept.png" /> Mot de passe correct');
}
else
{
$('.check_password').html('<img src="./site/public/register/error.png" /> Mot de passe incorrect');
}
});
$('.password_confirm').keyup(function()
{
//alert('password_confirm='+password_confirm);
password_confirm=$(this).val();
password_confirm=remove_whitespaces(password_confirm);
$('.password_confirm').html('');
if (password1==password_confirm)
{
$('.check_password_confirm').html('<img src="./site/public/register/accept.png" /> Confirmation Mot de passe correct');
}
else
{
$('.check_password_confirm').html('<img src="./site/public/register/error.png" /> Confirmation Mot de passe incorrect');
}
});
});
function remove_whitespaces(str)
{
var str=str.replace(/^\s+|\s+$/,'');
return str;
}
</script>
</div>
</div>
</div>
</div>
et l'un des test ajax
<?php
/////vérifiaction de la protection active page appelante/////
//if(!defined('PROTECTIONINCLUDE')){die('Interdit');}
/////activation protection page appelé/////
define('PROTECTIONINCLUDE', TRUE);
/////insertion des base de donnée/////
include ($_SERVER"DOCUMENT_ROOT"].'/site/config/bdall.php');
if(isset($_POST'mail']) && !empty($_POST'mail']))
{
//$pseudo="pignouf";
$mail=$_POST'mail'];
try
{
$DBPDO = new PDO($dbdns1,$dbuser1 , $dbpass1,
array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$DBPDO-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
try{
$sql = "SELECT * FROM `phpbb_users` WHERE `user_email` LIKE '$mail'";
$req = $DBPDO ->query($sql);
while($test_pseudo=$req->fetch(PDO::FETCH_OBJ))
{
echo $HTML="une correspondance existe";
}
}
catch (PDOException $e){erreur_req ($e);}
}
catch (PDOException $e){erreur_req ($e);}
}
?>
Merci d'avance de votre aide
Flo