Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/09/2011, 14h29   #1
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Par défaut Mysql injection Erreur 302

Bonjour,
j'ai installé le module Injectme dans Firefox et j'ai donc testé mon site, il trouve plusieurs erreurs comme celles-ci :
Code :
1
2
3
4
5
6
7
8
9
10
11
SQL Injection String Test Results
unnamed field
Submitted Form State:
 
    * pseudo:
    * password:
    * Submit: Connexion
 
Results:
Server Status Code: 302 Found
Tested value: 1 OR 1=1
Pourtant j'utilise bien "mysql_real_escape_string" :
Code :
1
2
3
4
require ("configuration.php"); //accès à la base de données
$sql = connect_sql(); //On se connecte à MySQL
$pseudo_connect = mysql_real_escape_string($_POST['pseudo']); //On recupère le pseudo et le pass
$pass = mysql_real_escape_string($_POST['password']);
Avez-vous une idée ?
Merci d'avance.
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 14h55   #2
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Pourquoi tu n'essayes pas les requêtes préparées? C'est un bonne solution pour justement éviter les injections sql

Code :
1
2
3
4
 
$test = $sql->prepare('SELECT tes champs FROM ta table WHERE ton champ id = ? AND ton mot de passe = ?');
$test->execute(array($_POST['pseudo'], $_POST['password']));
$test = $ligne->fetchAll(PDO::FETCH_OBJ);
Après, il suffit que tu testes $ligne pour savoir si ton tableau est vide ou pas. S'il est vide, ça veux dire que ton client n'a pas inscrit le bon mot de passe avec le bon password

Ps : j'espère qu'il n'y a pas trop d'erreur de syntaxe, je travaille avec bloc note
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 08h57   #3
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
@ ledisciple,
je n'utilise pas pour le moment PDO, car cela m'obligerait à réécrire toutes mes requêtes de mon site et comme je débute, je préfère déjà comprendre le PHp classique avant de m'attaquer à PDO...

il n'y a pas un autre moyen ?
Merci.
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 11h48   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
Citation:
Submitted Form State:

* pseudo:
* password:
* Submit: Connexion
Est-ce que par hasard ça ne serait pas le cas où tu soumets un formulaire vide ? As-tu prévu le cas et rendu les champs obligatoires ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 11h54   #5
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
es ce que tu as une redirection par header?

Il faudrait que l'on voit ton script qui reçoit ton formulaire
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 12h01   #6
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Voici mon formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<form method="post" action="rechercher_simple.php">
<fieldset>
<legend> &nbsp; Recherche dans l&rsquo;agenda par type </legend>
<?php
// début de la première requête sur le type d'événement
echo '<label>'.'Type d&rsquo; &eacute;v&eacute;nement &nbsp; : &nbsp; '.'</label>';
echo '<br />';
echo '<select name="evenement1" class="jj" tabindex="2" onfocus="this.className=\'jj_focus\';" onblur="this.className=\'jj\';">';
// connexion à la base
require("configuration.php");
$sql = connect_sql();
 
$affich_form = "SELECT * FROM type_ev" ;
$resultat = mysql_query($affich_form) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($resultat);
//On vérifie que la table contient quelque chose
if
(mysql_num_rows($resultat) == 0)
{
echo '<option name="evenement1"  value="Aucun">'.'</option>';
} // fin si rien dans la liste de type d'événement
else
{
while ( $list = mysql_fetch_array( $resultat ) )
{
echo '<option name="evenement1" value="'.$list['Type_evenement'].'">'.$list['Type_evenement'].'</option>';
} // fin du while
} // fin du else
echo '</select>';
// fin de la première requête sur le type d'événement
 
echo '<br />';
 
// début de la troixième requête sur les jours
echo '<label>'.'Du &nbsp; : &nbsp; '.'</label>';
echo '<br />';
echo '<select name="date1" class="jj" tabindex="2" onfocus="this.className=\'jj_focus\';" onblur="this.className=\'jj\';">';
 
// affiche le jour actuel
$jour_vue=date('d');
echo '<option selected value="'.$jour_vue.'">'.$jour_vue.'</option>';
 
$affich_form3 = "SELECT * FROM jours" ;
$resultat3 = mysql_query($affich_form3) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($resultat3);
//On vérifie que la table contient quelque chose
if (mysql_num_rows($resultat3) == 0)
{
echo '<option>Aucun</option>';
} // fin si rien dans la liste
else
{
while ( $list = mysql_fetch_array( $resultat3 ) )
{
echo '<option value="'.$list['jour'].'">'.$list['jour'].'</option>';
} // fin du while
} // fin du else
echo '</select>';
// fin de la troixième requête sur les jours
 
// début de la quatrième requête sur les mois
mysql_query("SET NAMES utf8");
echo '<label>'.'</label>';
echo '<br />';
echo '<select name="date2" class="mm" tabindex="3" onfocus="this.className=\'mm_focus\';" onblur="this.className=\'mm\';">';
// DEBUT extraction du mois et de l'année du jour au format date MySQL  année  mois jour
$mois_jour=date('n');
$annee_jour=date('Y');
// on cherche dans la base des mois le numéro
$affich_form_mois = "SELECT Nb FROM mois2 WHERE num_mois='$mois_jour' AND annee='$annee_jour'" ;
$resultat_mois = mysql_query($affich_form_mois) or die ('Erreur : '.mysql_error() );
$list_mois = mysql_fetch_array( $resultat_mois );
$numero_mois = $list_mois['Nb']-1;
$affich_form4 = "SELECT * FROM mois2 LIMIT $numero_mois,7" ;
// FIN extraction du mois et de l'année du jour au format date MySQL  année  mois jour
 
$resultat4 = mysql_query($affich_form4) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($resultat4);
//On vérifie que la table contient quelque chose
if
(mysql_num_rows($resultat4) == 0)
{
echo '<option>Aucun</option>';
} // fin si rien dans la liste
else
{
while ( $list = mysql_fetch_array( $resultat4 ) )
{
echo '<option value="'.$list['Nb'].'">'.$list['mois'].'</option>';
} // fin du while
} // fin du else
echo '</select>';
// fin de la quatrième requête sur les mois
echo '<br />';
echo '<br />';
 
// début de la cinquième requête sur les jours
echo '<label>'.'Au &nbsp; : &nbsp; '.'</label>';
echo '<br />';
echo '<select name="date3" class="jj" tabindex="4" onfocus="this.className=\'jj_focus\';" onblur="this.className=\'jj\';">';
 
// date du jour + 1 
$jour_vue_2=date('d')+1;
echo '<option selected value="'.$jour_vue_2.'">'.$jour_vue_2.'</option>';
 
$affich_form5 = "SELECT * FROM jours" ;
$resultat5 = mysql_query($affich_form5) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($resultat5);
//On vérifie que la table contient quelque chose
if
(mysql_num_rows($resultat5) == 0)
{
echo '<option>Aucun</option>';
} // fin si rien dans la liste
else
{
while ( $list = mysql_fetch_array( $resultat5 ) )
{
echo '<option value="'.$list['jour'].'">'.$list['jour'].'</option>';
} // fin du while
} // fin du else
echo '</select>';
// fin de la cinquième requête sur les jours
 
// début de la sixième requête sur les mois
echo '<label>'.'</label>';
echo '<br />';
echo '<select name="date4" class="mm" tabindex="5" onfocus="this.className=\'mm_focus\';" onblur="this.className=\'mm\';">';
 
// DEBUT extraction du mois et de l'année du jour au format date MySQL  année  mois jour
$mois_jour=date('n');
$annee_jour=date('Y');
// on cherche dans la base des mois le numéro
$affich_form_mois2 = "SELECT Nb FROM mois2 WHERE num_mois='$mois_jour' AND annee='$annee_jour'" ;
$resultat_mois2 = mysql_query($affich_form_mois2) or die ('Erreur : '.mysql_error() );
$list_mois2 = mysql_fetch_array( $resultat_mois2 );
$numero_mois2 = $list_mois2['Nb']-1;
$affich_form6 = "SELECT * FROM mois2 LIMIT $numero_mois2,7" ;
// FIN extraction du mois et de l'année du jour au format date MySQL  année  mois jour
 
$resultat6 = mysql_query($affich_form6) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($resultat6);
//On vérifie que la table contient quelque chose
if
(mysql_num_rows($resultat6) == 0)
{
echo '<option>Aucun</option>';
} // fin si rien dans la liste
else
{
while ( $list = mysql_fetch_array( $resultat6 ) )
{
echo '<option value="'.$list['Nb'].'">'.$list['mois'].'</option>';
} // fin du while
} // fin du else
echo '</select>';
// fin de la sixième requête sur les mois
echo '<br />';
echo '<br />';
?>
<br></br>
<p>
<input type="submit" value="Rechercher" class="ev" tabindex="6" onfocus="this.className='ev_focus';" onblur="this.className='ev';valide(this, 'err_mdp');" class="ev" />
<input type="reset" value="Effacer" class="ev" tabindex="7" onfocus="this.className='ev_focus';" onblur="this.className='ev';valide(this, 'err_mdp');" class="ev" />
</p>
</fieldset>
</form>
traitement du formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php session_start();
require ("configuration.php"); //accès à la base de données
$sql = connect_sql();
$pseudo_membre = mysql_real_escape_string($_SESSION['pseudo']);
$requete = mysql_query("SELECT * FROM pdf_membre WHERE `pseudo`='$pseudo_membre'"); 
$result = mysql_fetch_array ($requete);
$id = $result['id'];
$pseudo = $result['pseudo'];
$mail = $result['mail'];
// si l'utilisateur est connecté, c'est le bandeau membre sinon c'est le bandeau classique...
if (!isset($_SESSION['pseudo']) || $_SESSION['pseudo']=='')
{	// bandeau classique si pas connecté
	$bandeau = 'bandeau.php';	}
else
{	// bandeau membre si connecté
	$bandeau = 'bandeau_membres.php';	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php include($bandeau); ?> <!-- insère le bandeau principal en haut en fonction de la connexion -->
<div id="mainContent">
<?php
// DEBUT on récupère l'année et le mois du formulaire de début
$num_mois_form_2=mysql_real_escape_string($_POST['date2']);
$affich_form_mois_2 = "SELECT num_mois FROM mois2 WHERE Nb='$num_mois_form_2'" ;
$resultat_mois_2 = mysql_query($affich_form_mois_2) or die ('Erreur : '.mysql_error() );
$list_mois_2 = mysql_fetch_array( $resultat_mois_2 );
$numero_mois_form_2 = mysql_real_escape_string($list_mois_2['num_mois']);
$affich_form_annee_2 = "SELECT annee FROM mois2 WHERE Nb='$num_mois_form_2'" ;
$resultat_annee_2 = mysql_query($affich_form_annee_2) or die ('Erreur : '.mysql_error() );
$list_annee_2 = mysql_fetch_array( $resultat_annee_2 );
$numero_annee_form_2 = mysql_real_escape_string($list_annee_2['annee']);
// FIN on récupère l'année et le mois du formulaire de début
 
// DEBUT on récupère l'année et le mois du formulaire de fin
$num_mois_form_4=mysql_real_escape_string($_POST['date4']);
$affich_form_mois_4 = "SELECT num_mois FROM mois2 WHERE Nb='$num_mois_form_4'" ;
$resultat_mois_4 = mysql_query($affich_form_mois_4) or die ('Erreur : '.mysql_error() );
$list_mois_4 = mysql_fetch_array( $resultat_mois_4 );
$numero_mois_form_4 = $list_mois_4['num_mois'];
$affich_form_annee_4 = "SELECT annee FROM mois2 WHERE Nb='$num_mois_form_4'" ;
$resultat_annee_4 = mysql_query($affich_form_annee_4) or die ('Erreur : '.mysql_error() );
$list_annee_4 = mysql_fetch_array( $resultat_annee_4 );
$numero_annee_form_4 = $list_annee_4['annee'];
// FIN on récupère l'année et le mois du formulaire de fin
 
// création de la date de départ au format date MySQL
$date_depart=$numero_annee_form_2.'-'.$numero_mois_form_2.'-'.mysql_real_escape_string($_POST['date1']);
// création de la date de fin au format date MySQL
$date_fin=$numero_annee_form_4.'-'.$numero_mois_form_4.'-'.mysql_real_escape_string($_POST['date3']);
//On remet les dates au format français
setlocale (LC_TIME, 'fr_FR.UTF8');
$date_vue_depart = strftime("%A %d %B %Y",strtotime("$date_depart"));
$date_vue_fin = strftime("%A %d %B %Y",strtotime("$date_fin"));
 
// Affichage de la date de départ et de fin en français et du type d'événement
echo '<p />';
echo '<br>'.'</br>';
echo '<b>'.mysql_real_escape_string($_POST['evenement1']).'</b>';
echo '<br>'.'</br>';
echo 'Du :  '.'<b>'.ucwords(strtolower($date_vue_depart)).'&nbsp;'.'&nbsp;'.'&nbsp;'.'</b>';
echo 'Au : '.'<b>'.ucwords(strtolower($date_vue_fin)).'</b>';
echo '<br>'.'</br>';
// connexion à la base
// require("configuration.php"); déjà connecté plus haut
$sql = connect_sql();
// on écrit la requête
mysql_query("SET NAMES utf8");
$select2 = "SELECT * FROM evenement WHERE date_ev BETWEEN '$date_depart' AND '$date_fin' AND type_evenement='".mysql_real_escape_string($_POST['evenement1'])."' ORDER BY date_ev ASC";
$result = mysql_query($select2) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
//On vérifie que la table contient quelque chose
if
(mysql_num_rows($result) == 0)
{
echo '<p>'.'<b>'.'Aucun &eacute;v&eacute;nement ! '.'</b>'.'</p>'.'<br>'.'</br>';
echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
}
//Si il y a des entrées	  
else
{
//On fait une boucle pour sortir toutes les entrées
while($affiche = mysql_fetch_array($result))
 {
//On remet la date au format français
setlocale (LC_TIME, 'fr_FR.UTF8');
$date_affiche = $affiche["date_ev"];
$date_vue = strftime("%A %d %B",strtotime("$date_affiche"));
 //On affiche les entrées sauf le type d'événement
echo '<br />';
echo "     ".$affiche["type_etab"]."   ";
echo '<b>'."     ".$date_vue."   ".'</b>';
echo "     ".$affiche["secteur"]."   ";
echo "Début à : ".$affiche["heure"]."   ";
echo "  Tarif : ".$affiche["tarif"]."   ";
echo " ".$affiche["montant"]."   ";
echo " où ? ".$affiche["lieu"]."   ";echo '<br />';
echo '<br />';
echo '<div class="autre">';
echo '<span style="color:#8E236B;">';
echo '<strong>';
echo $affiche["nom"];
echo '</strong>';
echo '</span>';
echo '<br />';
echo '<div class="cache">';
echo '<strong>';
echo $affiche["description"];
echo '<br/>';
echo  !empty($affiche["site_infos"]) ? '<a href="'.$affiche["site_infos"].'">Informations</a>' : ' ';
echo '<br/>';
echo " mis en ligne par  ".$affiche["pseudo_ev"]."   ";
echo '</strong>';
echo '</div>';
echo '</div>';
echo '<br />';
echo '</p>';
}	//On ferme la boucle while
 echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
}	//on ferme le else
// Fermeture de la connexion à la base de données
mysql_close();		
?>
</div>
<?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
</body>
</html>
Merci encore !
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 18h59   #7
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Citation:
Envoyé par Celira Voir le message
Est-ce que par hasard ça ne serait pas le cas où tu soumets un formulaire vide ? As-tu prévu le cas et rendu les champs obligatoires ?
+1

Tu ne vérifies pas si tes champs sont vides ou pas ...
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 09h26   #8
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
j'ai rajouté ceci dans le traitement :
Code :
1
2
3
// on verifie que la saisie est effectuee
if(!empty($_POST['date1']) && !empty($_POST['date2']) && !empty($_POST['date3']) && !empty($_POST['date4']) && !empty($_POST['evenement1']))
 {
mais j'ai toujours des erreurs "302" :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
date1
Submitted Form State:
    * unnamed field: undefined
    * evenement1: Concert
    * date2: 9
    * date3: 17
    * date4: 9
    * unnamed field: Rechercher
    * unnamed field: Effacer
 
Results:
Server Status Code: 302 Found
Tested value: &#49&#39&#32&#79&#82&#32&#39&#49&#39&#61&#39&#49
Server Status Code: 302 Found
Tested value: 1'1
Server Status Code: 302 Found
Tested value: 1 AND 1=1
This field passed 14617 tests. To see all the passed results, go to Tools->SQL Inject Me->Options and click 'Show passed results in final report' and rerun this test.
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 11h32   #9
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Citation:
Envoyé par fazpedro Voir le message
@ ledisciple,
je n'utilise pas pour le moment PDO, car cela m'obligerait à réécrire toutes mes requêtes de mon site et comme je débute, je préfère déjà comprendre le PHp classique avant de m'attaquer à PDO...

il n'y a pas un autre moyen ?
Merci.
Il suffit de s'y mettre ... . ce n'est pas très compliqué. Si j'y arrive tu devrais y arriver aussi ...
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h49.


 
 
 
 
Partenaires

Hébergement Web