Bonjour,
j'ai récupéré une application qui est vraiment trop bizarre, ou du moins, je n'avais jamais vu ce fonctionnement auparavant : quasiment tout le code de l'application est dans le JavaScript. Prenons par exemple la page d'accueil, qui est composée d'une frame, dont la source est un fichier HTML, qui contient uniquement 2 lignes :Enfin, dans Init.js, j'ai ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <script type="text/javascript" src="/Javascript/Global.js"></script> <script type="text/javascript" src="/Init.js"></script>Voici le code des différentes fonctions utilisées ci-dessus :
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 //Demande d'habilitation si l'utilisateur n'est pas identifié if (F_Get("ID") != "" && F_Get("MP") != "") { if (F_Get("HA") != "") { var Requete = "SELECT "; Requete += "Code, Entite "; Requete += "FROM Habilitations "; Requete += "WHERE "; Requete += "Code = '" + F_Get("Code") + "' AND "; Requete += "Identifiant = '" + F_Get("ID") + "' AND "; Requete += "MotDePasse = '" + F_Get("MP") + "' "; var IdentifiantXml = F_Sjax(Requete); if (IdentifiantXml.getElementsByTagName("Data")[0].firstChild != null) { parent.Session.Identifiant.value = F_Get("ID"); parent.Session.Entite.value = IdentifiantXml.getElementsByTagName("Entite")[0].firstChild.data; F_PageCharger("FO-SI-002",F_Get("Code")); }else{ parent.Menu.window.location = "/Html/Menu.html"; }//end if }else{ var Requete = "SELECT "; Requete += "Code, Entite "; Requete += "FROM Habilitations "; Requete += "WHERE "; Requete += "Identifiant = '" + F_Get("ID") + "' AND "; Requete += "MotDePasse = '" + F_Get("MP") + "' "; var IdentifiantXml = F_Sjax(Requete); if (IdentifiantXml.getElementsByTagName("Data")[0].firstChild != null) { parent.Session.Identifiant.value = F_Get("ID"); parent.Session.Entite.value = IdentifiantXml.getElementsByTagName("Entite")[0].firstChild.data; parent.Menu.window.location = "/Html/Menu.html"; }else{ parent.Menu.window.location = "/Html/Menu.html"; }//end if }//end if }else{ parent.Menu.window.location = "/Html/Menu.html"; }//end ifLe fichier Ajax.php, qui permet de construire un XML à partir des résultats d'une requête SQL :
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 function F_Get(Parametre) { // Suppression du point d'interrogation var ListeParametres = window.location.search.slice(1,window.location.search.length); // Séparation des parametres var Parametres = ListeParametres.split("&"); var Valeur = ""; for(i=0;i<Parametres.length;i++){ if (Parametres[i].split("=")[0] == Parametre) Valeur = Parametres[i].substr(Parametres[i].search(/=/)+1); }//end for return(Valeur); }//end function function F_Sjax(Requete,Domaine) { if (typeof Domaine == "undefined") var Domaine = document.domain; if (Domaine == "localhost") var Domaine = F_Ini("localhost"); if (Domaine == "Production") var Domaine = F_Ini("Production"); if (Domaine == "PreProduction") var Domaine = F_Ini("PreProduction"); var BoucleRequête = true; //Boucle pour absorber les erreurs 500 while (BoucleRequête) { var xhr = new ActiveXObject("Microsoft.XMLHTTP"); xhr.open("POST","http://" + Domaine + "/Php/Ajax.php",false); xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.send("Requete=" + Requete); if (xhr.responseText.indexOf("Network Error (tcp_error)") > 0) { xhr.close; }else{ BoucleRequête = false; }//end if }//end while return(xhr.responseXML); }//end function function F_PageCharger(Page,Parametre) { if (Page == null) { parent.Page.window.location = "/Html/Blanc.html"; }else{ switch (Page.substr(0,2)) { case "F_": F_Fonction(Page,Parametre);break; case "FO": F_Formulaire(Page,Parametre);break; case "ET": F_Etat(Page,Parametre);break; case "LI": F_Liste(Page,Parametre);break; case "PL": F_Planning(Page,Parametre);break; case "GR": F_Graphe(Page,Parametre);break; default : F_Script(Page,Parametre);break; }//end switch }//end if }//end functionDonc quasiment toutes les requêtes SQL sont exécutées dans le code JavaScript
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 header ('Content-type: text/xml'); include_once ($_SERVER["DOCUMENT_ROOT"]."/Classes/ClasseMappingSGBD.php"); $Requete = html_entity_decode(utf8_decode(stripslashes($_POST["Requete"]))); $Bdd = new MappingSGBD(); $Bdd->Connexion(); $Resultat = $Bdd->TableauDonnees($Requete); //************* CREATION DU FICHIER XML echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"; if ($Resultat == "1") { echo "<ResultatOk></ResultatOk>\n"; }else{ if ($Bdd->Erreur()) { echo "<Erreur>".$Bdd->Erreur()."</Erreur>\n"; }else{ echo "<Data>\n"; foreach ($Resultat as $Enregistrement) { echo "<Item>\n"; for($i=0 ; $i < $Enregistrement->NombreLignes() ; $i++){ $Code = $Enregistrement->GetNomChamp($i); if ($Enregistrement->GetDonnee($Code) != null) { $Valeur = "<![CDATA[".$Enregistrement->GetDonnee($Code)."]]>"; }else{ $Valeur = ""; }//end if // echo "<".htmlspecialchars($Code).">".htmlspecialchars($Valeur)."</".$Code.">"; //$logger->info($Valeur); echo "<".$Code.">".$Valeur."</".$Code.">"; }//end for echo "</Item>\n"; }//end foreach echo "</Data>\n"; }//end if }//end if...Ce n'est pas normal non ? Qu'est-ce que vous en pensez ?
Partager