IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Le quote dans le succes callback


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Novembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 36
    Par défaut [AJAX] Le quote dans le succes callback
    Salut,

    J'ai un problème qui me fait tout loupé, à 1 jours de la fin de mon stage (comme par hasard). C'est donc très urgent !
    Jusqu'à ce midi, tout allait bien, mon fichier javascript avec les appels aja onctionnait parfaitement bien.

    Le problème survient alors que je voulait faire des tests, et après avoir modifié 2-3 trucs. Prenons 2 projet pour exemple :

    - Le projet d'authentification sécurisé (sur PHP 5.4 car CentOS7, donc pas d'API de cryptage)

    Tout fonctionnait ce matin. les réponse s'envoyait correctement. Seulement, j'ai maintenant un ' qui s'envoit evant le JSON que j'envois dans le success callback, sans raison puisque j'ai juste un json_encode et tout est bien formaté.

    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
    <?php
    	session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    	<title>Nagios</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	<meta http-equiv="Content-Language" content="en" />
    	<meta name="robots" content="noindex, nofollow" />
    	<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    	<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" />	
    	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
    <script src="/authentif/js/function.js"></script>
    </head>
    	<body style="background-color: #eee;">
    		<?php
    		if(!isset($_SESSION['User']) && isset($_COOKIE['id'])){ //Si une session n'est pas démarré mais qu'il existe un cookie
    			echo "<script>authByCookie('".$_COOKIE['id']."');</script>";
    		}else{
    			if(isset($_SESSION['User'])){ //Si une session a été démarrée
    		?>
    			<p id="userInfo">Vous êtes connecté en tant que <?=$_SESSION['User']?></p>
    			<button onclick="disconnect()" class="btn btn-primary">Se déconnecter</button>
    		<?php	
    			}else{
    		?>
    			<div class="container">
     
    			  <div id="login-form" class="form-signin" style="width:300px; margin : auto;">
    				<h2 class="form-signin-heading">NagiosPlus Login</h2>
    				<label for="pseudo" class="sr-only">Pseudo</label>
    				<input type="text" id="pseudo" class="form-control" placeholder="Pseudo" required="" autofocus="">
    				<label for="pass" class="sr-only">Password</label>
    				<input type="password" id="pass" class="form-control" placeholder="Password" required="">
    				<div class="checkbox">
    				  <label>
    					<input id="remember" type="checkbox" value="remember-me"> Remember me
    				  </label>
    				</div>
    				<button  id="submit" onclick="tryConnect()" class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
    				<div id="resultat"></div>
    			  </div>
    			</div>
    		<?php
    			}
    		?>
    	</body>
    	<script>
    		$("input").keydown(function(event){
    			if(event.keyCode == 13){
    				$('#submit').click();
    			}
    		});	
    	</script>
    </html>
    <?php } ?>

    Code Javascript : 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
    function tryConnect(){
    	var save = 0;
    	if($('#remember').is(':checked')){ 
    		save = 1;
    	}
    	$.ajax({
    		type: 'POST',
    		url: '/authentif/auth.php',
    		data: {"pseudo" : $('#pseudo').val(),
    			"pass" : $('#pass').val(),
    			"save" : save
    		},
    		dataType:'JSON',
    		success: function(data) {
    			console.log(data);
    			if(data != false){ //si le mot de passe est bon
    				var arr = $.map(data, function(el) { return el; });
    				if(arr[0] == true){ //si le mot de passe est à changer
    					console.log(arr);
    					$('#login-form').remove();
    					$('.container').append(' <div id="mdpChange" class="form-signin" style="width:300px; margin : auto;"></div>');
    					$('#mdpChange').append('<h2 class="form-signin-heading">Password Change</h2>')
    					$('#mdpChange').append('<input type="hidden" id="id" value="'+arr[1]+'" />')
    					$('#mdpChange').append('<label for="pass1" class="sr-only">New password</label>')
    					$('#mdpChange').append('<input type="password" id="pass1" class="form-control" placeholder="New password" required="" autofocus="">')
    					$('#mdpChange').append('<label for="pass2" class="sr-only">Password Confirmation</label>')
    					$('#mdpChange').append('<input type="password" id="pass2" class="form-control" placeholder="Retype the password" required="">')
    					$('#mdpChange').append('<button  id="submit" onclick="changePassword()" class="btn btn-lg btn-primary btn-block" type="submit">Change it</button>')
    					$('#mdpChange').append('<div id="resultat"></div>')
    				}else{
    					$("#resultat").empty();
    					window.location.reload();
    				}						
    			}else{ // si le mot de passe est à changer
    				$("#resultat").empty();
    				if (data == false){
    					$("#resultat").append("<p style='color: red;'>Erreur : Le mot de passe ou le pseudo est faux</p>");
    				}else{
    					$("#resultat").empty();
    					window.location.reload();
    				}
    			}
    		}
    	});
    }

    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    function auth($pseudo, $pass, $save){
    	try{
    		$bdd = new PDO('mysql:host='.DB_HOST.';port='.DB_PORT.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PASS);
    	}catch (Exception $e){
    		die('Erreur : ' . $e->getMessage());
    	} 
    	$exist = $bdd->query('SELECT COUNT(*) as nb from User where pseudo = "'.$pseudo.'"'); //Existence d'un utilisateur
    	if($exist->fetchColumn() > 0){
    		$result = $bdd->query('SELECT id, passHashed, isAdmin, authChang, nagiosCFG, massack, dashtool from User where pseudo ="'.$pseudo.'"');
    		$data = $result->fetch();
    		if($data['passHashed'] === crypt($_POST["pass"], $data['passHashed'])){
    			//Si le cookie a expiré, l'utilisateur n'a rien demandé, donc l'info est toujours en base. Le supprimer
    			if(!isset($_COOKIE['id'])){
    				cleaningBase($data ['id']);
    			}
    			if($data["authChang"] == 1){ //Si le mot de passe a eu l'autorisation d'être changé
    				$datasent = array('passChange' => true, 'id' => $data['id']);
    				echo json_encode($datasent);
    				exit();
    			} 
    			//Enregistrement de l'authentifié à sa demande et enregistrement
    			if($save == 1){
    				$cookid = generateCookieId();
    				$insertCookie = $bdd->prepare("INSERT INTO Cookie_Link value('".$cookid."',".$data['id'].")");
    				$insertCookie->bindParam(1, $cookid);
    				$insertCookie->bindParam(2, $data['id']);
    				$insertCookie->execute();
    				setcookie('id', $cookid, time() + 365*24*3600, null, null, false, true);
    			}
    			//Variable de session
    			$_SESSION["User"]=$pseudo;
    			$_SESSION["id"]=$data['id'];
    			$_SESSION["is_Admin"]=isAdmin($data['isAdmin']);
    			$_SESSION["nagiosCFG"]=$data['nagiosCFG'];
    			$_SESSION["massack"]=$data['massack'];
    			$_SESSION["dashtool"]=$data['dashtool'];
    			//Enregistrement Log si spécifié
    			if(LOG_ALL_AUTH == true){
    				logConnect($data['id'], 1);
    			}
    			$data = array('User' => $pseudo, 'admin' => isAdmin($data['isAdmin']), 'id' => $data['id']);
    			echo json_encode($data); // si le mot de passe correspond
    			exit();
    		}else {
    			echo json_encode(false); // si le mot de passe ne correspond pas
    			exit();
    		}
    	}else{
    		echo json_encode(false); //si l'utilisateur n'existe pas
    		exit();
    	}
    }
    function authByCookie($id){
    	try{
    		$bdd = new PDO('mysql:host='.DB_HOST.';port='.DB_PORT.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PASS);
    	}catch (Exception $e){
    		die('Erreur : ' . $e->getMessage());
    	} 
    	$exist = $bdd->query('SELECT COUNT(*) as nb from Cookie_Link where id = "'.$id.'"'); //Existence d'une entrée avec ce cookie
    	if($exist->fetchColumn() > 0){ //S'il y en a une, on peut valider
    		$get = $bdd->query('SELECT User.id, User.pseudo, User.isAdmin, User.nagiosCFG, User.massack, User.dashtool from User join Cookie_Link on (User.id = Cookie_Link.idUser) where Cookie_Link.id = "'.$id.'"');
    		$data = $get->fetch();
    		$_SESSION["User"]=$data['pseudo'];
    		$_SESSION["id"]=$data['id'];
    		$_SESSION["is_Admin"]=isAdmin($data['isAdmin']);
    		$_SESSION["nagiosCFG"]=$data['nagiosCFG'];
    		$_SESSION["massack"]=$data['massack'];
    		$_SESSION["dashtool"]=$data['dashtool'];
    		if(LOG_ALL_AUTH == true){
    			logConnect($data['id'], 0);
    		}
    		exit();
    	}else{ //Sinon, on peut supprimer le cookie puisqu'il est faux
    		setcookie('id', null, time()-1, null, null, false, true);
    		if(LOG_ALL_AUTH == true){
    			logDisconnect($data['id'], 0);
    		}
    		exit();
    	}
    }
    function generateCookieId(){//Nettoyage en cas d'expiration de cookie sans déconnection
    	$characts = 'abcdefghijklmnopqrstuvwxyz'; 
    	$characts .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';	
    	$characts .= '1234567890'; 
    	$flag = false;
    	try{
    		$bdd = new PDO('mysql:host='.DB_HOST.';port='.DB_PORT.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PASS);
    	}catch (Exception $e){
    		die('Erreur : ' . $e->getMessage());
    	} 
    	while($flag == false){
    		$code_aleatoire = ''; 
    		for($i=0;$i < 16;$i++) { 
    			$code_aleatoire .= $characts[ rand() % strlen($characts) ]; 
    		} 
    		$isGood = $bdd->query('SELECT COUNT(*) as id from Cookie_Link where id = "'.$code_aleatoire.'"');
    		if($isGood->fetchColumn() > 0){ // Si (même si c'est pratiquement impossible) il existe déjà, on refait
    			$flag = false;
    		}else{
    			$flag = true;
    		}
    	}
    	return $code_aleatoire;
    }

    Tout marche normalement, ça s'actualise et affiche le message adéquate quand il le faut. Maintenant, il faut actualisé à cause de ce '

    - La création de dashboard dans un projet de dashboard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $.ajax({
    	type: 'POST',
    	url: 'addDashboard.php',
    	data: {"nom" : $("#nomDash").val(), "id" : $("#user_id").val()},
    	dataType:'JSON',
    	success : function(id){
    		flushAll();
    		chargeDashboard(id);
    		$.growlUI('Succés', 'Dashboard Ajouté');
    	}
    });
    Içi, tout fonctionne et tout s'est mis à jour

    Merci d'avance de votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Novembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 36
    Par défaut
    Problème résolu : j'avais ajouté par erreur le ' dans le fichier de configuration me servant à définir les constante. Quand je l'appelait, il affichait à chaque fois le quote, et ça faisait planter le success callback.

    Je vais laisser ce post quand même, pour ceux qui auraient un jour le même genre de problème : TOUJOURS vérifier ses configurations.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/08/2010, 23h12
  2. Quote dans une requete...
    Par Isildur dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/06/2006, 10h57
  3. Placer des quote dans un champs
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 21/04/2005, 10h36
  4. Quotes dans TFilenameEdit (RXLib)
    Par AnnSo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2003, 20h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo