Bonjour à tous !
Voilà je boss sur une application faite en HTML5 + Jquery Mobile. Mon problème se porte uniquement sur le Jquery.
Cette application démarre en demandant de se connecter. Donc on a un côté client et un serveur (fait en PHP et relié à une BDD MySQL).
Donc j'arrive sur la page, j'entre login + mot de passe et je "submit". Là via de l'AJAX, j'envoie la requête de connexion à mon serveur qui me répond avec du JSON success si la connexion est valide. Jusqu'ici tout fonctionne.
Seulement, une fois la connexion validée par le serveur, cela m'amène sur une seconde page dont le but est d'afficher une liste de groupes provenant de la BDD MySql. Donc pour cela je fais une nouvelle requête AJAX pour demander l'affichage de cette liste (le serveur répond ok+la liste ou NotConnected).
Côté serveur PHP j'ai fait en sorte que pour cette requête, le client DOIT être connecté (ce qui est fait page précédente).
Mais en fait je reçois toujours NotConnected, comme ci entre la première et la seconde requête je "perdais la connexion".
Je pense qu'il s'agit en fait d'un problème de sessions non ? Si tel est le cas, je ne connais pas bien le système de sessions et j'ai peut être mal fait les choses...
Voilà donc mon problème. Je vous met ci-dessous le code pour plus de précisions.
Le code Client (Jquery) : avec la première requête de connexion (qui fonctionne), puis la requête pour SelectGroupe qui me répond NotConnected
Le code côté serveur (PHP) gérant les requêtes et les sessions (normalement :s mais ca doit pas bien fonctionner) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 $(document).on('pageinit', '#loggin', function(){ $(document).on('click', '#submit', function() { // catch the form's submit event if($('#login').val().length > 0 && $('#mdp').val().length > 0){ // Send data to server through the Ajax call // action is functionality we want to call and outputJSON is our data $.ajax({url: 'http://localhost:8888/Apeiron/server/data.php', data: {'action' : 'Connexion', 'login': $('#login').val(), 'mdp':$('#mdp').val()}, type: 'get', async: 'true', dataType: 'json', // beforeSend: function() { // // This callback function will trigger before data is sent // $.mobile.loading('show', {theme:"a", text:"Please wait...", textonly:true, textVisible: true}); // This will show ajax spinner // }, // complete: function() { // // This callback function will trigger on data sent/received complete // $.mobile.loading('hide'); // This will hide ajax spinner // }, success: function (result) { if(result.success) { alert(result.success); $.mobile.changePage("#second"); } else { alert('Logon unsuccessful! ' + result.status); } }, error: function (request,error) { // This callback function will trigger on unsuccessful action alert('error Connexion : ' + error + ' request Connexion : ' + request); } }); } else { alert('Please fill all necessary fields!'); } return false; // cancel original event to prevent form submitting //makeCorsRequest(); }); }); $(document).on('pagebeforeshow', '#second', function(){ $.mobile.activePage.find('.ui-content').html('Welcome ' + $('#login').val()); $.ajax({url: 'http://localhost:8888/Apeiron/server/data.php', data: {'action' : 'SelectGroupes'}, type: 'get', async: 'true', dataType: 'json', beforeSend: function() { // This callback function will trigger before data is sent $.mobile.loading('show', {theme:"a", text:"Please wait...", textonly:true, textVisible: true}); // This will show ajax spinner }, complete: function() { // This callback function will trigger on data sent/received complete $.mobile.loading('hide'); // This will hide ajax spinner }, success: function (result) { if(result.success) { alert(result.success); $.mobile.changePage("#second"); } else { alert('Logon unsuccessful! ' + result.status); } }, error: function (request,error) { // This callback function will trigger on unsuccessful action alert('error SelectGroupe : ' + error + ' request SelectGroupe : ' + request); } }); });
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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 include "config.php"; // Permet de charger les classes utilisées automatiquement function chargerClasse($classe) { require "classes/" . $classe . '.class.php'; } // Indication à PHP que la fonction 'chargerClasse' // doit être utiliser pour charger une classe non déclarée spl_autoload_register('chargerClasse'); session_start(); // Si la connexion n'est pas encore faite avec la bdd if (!isset($_SESSION['connexion'])) { $connexion = new ConnexionBDD($BDD_host, $BDD_base, $BDD_user, $BDD_password); $_SESSION['connexion'] = $connexion; } // Si elle est déjà faite else $connexion = $_SESSION['connexion']; $bdd = $connexion->pdo(); // Création des managers $UsersManager = new UsersManager($bdd); $GroupesManager = new GroupesManager($bdd); $HTTPRequest = new HTTPRequest($bdd); if(isset($_GET['action']) && $_GET['action'] != "") $action = $_GET['action']; else $action = ""; // Si la session perso existe, on restaure l'objet. if (isset($_SESSION['user'])) { $user = $_SESSION['user']; } // Si la session groupes existe, on restaure l'objet. if (isset($_SESSION['groupes'])) { $groupes = $_SESSION['groupes']; } else $groupes = array(); // Si l'utilisateur n'est pas connecté if(!$HTTPRequest->IsConnected()) { if($action == "Connexion" && isset($_GET['login']) && isset($_GET['mdp']) && $_GET['login']!="" && $_GET['mdp']!="") { $user = $UsersManager->Connexion(new Users(null, $_GET['login'], $_GET['mdp'], null, null, null)); } else if($action == "Inscription") { if(isset($_GET['login']) && isset($_GET['mdp']) && isset($_GET['mail']) && $_GET['login']!="" && $_GET['mdp']!="" && $_GET['mail']!="") { $user = new Users(null, $_GET['login'], $_GET['mdp'], $_GET['mail'], null, null); $UsersManager->add($user); } else { $HTTPRequest->Wrong("wrongData"); } } else { $HTTPRequest->Wrong("NotConnected"); } } // Si l'utilisateur est connecté else { switch($action) { case "SelectGroupes" : $groupes = $GroupesManager->SelectGroupes($user); break; case... default : $HTTPRequest->Wrong("WrongAction"); break; } } // Si on a créé un user, on le stocke dans une variable session if (isset($user)) { $_SESSION['user'] = $user; }
Voilà j'espère que vous m'avez compris, n'hésitez pas s'il vous manque des infos ou des précisions et d'avance merci à ceux qui prendront le temps de m'aider.
Bonne soirée![]()
Partager