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

Langage PHP Discussion :

Impossible d'ouvrir une session sous IE et Safari


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Emyleen
    Femme Profil pro
    Webmaster
    Inscrit en
    Mars 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 151
    Par défaut Impossible d'ouvrir une session sous IE et Safari
    Bonjour,

    Je viens poster ici car je me trouve face à un cas assez spécial (et bizarre je trouve).

    J'ai créé un site auquel on accède via un code qui contient les données de connexion.

    Lorsque j'ouvre le site sous Firefox 11, Google Chrome 17, Opéra 11, la connexion s'effectue et fonctionne bien (pas de souci de login, les données sont ok).

    Mais lorsque j'effectue la même manipulation sous IE 9 ou Safari 5... Il redirige vers la page de login en indiquant qu'aucune session n'est ouverte ce qui n'est pas logique puisque justement le code entré permet d'ouvrir la session...

    J'avoue que là je ne comprend pas, je vais essayer de vider le cache et tout mais franchement c'est un cas très bizarre....
    Quelqu'un aurait une idée du pourquoi du comment?

    Merci ^^

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Un petit bout de code serait-il le bienvenue ?

  3. #3
    Membre éprouvé
    Avatar de Emyleen
    Femme Profil pro
    Webmaster
    Inscrit en
    Mars 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 151
    Par défaut
    Voici ma fonction d'ouverture de session

    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
    function ouvertureSession($login,$password){
    		//Si les champs ont été remplis
    		if($login && $password) {
    			$login = strip_tags($login);
    		    $password = strip_tags($password);
    			$loginSession = explode('.',$login);
    			//Récupération du nom de la BD spécifique
    			$sql = "SELECT NomBd FROM Bases WHERE Code = :code
    					OR NomBd = :nomBd";
    			$instance = Connection::GetInstance(); 	//Connexion BD Routeur
    			$stmt = $instance->prepare($sql);
     
    			$stmt->bindParam(':code', $loginSession[0]);
    			$stmt->bindParam(':nomBd', $loginSession[0]);
    			$stmt->execute();
     
    			$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
     
    			//Utilisateur trouvé dans la BD Routeur
    			if(count($result) > 0) {
    				$bd = $result[0]['NomBd'];
    				$login = $loginSession[1];
    				//Si le login ET le mot de passe existent en BD
    				//Vérification si le login et le mot de passe existent en BD
    				$sql = "SELECT *
    						FROM Utilisateurs
    						WHERE Login = :login AND Password = :password";
    				//Exécution de la requête
    				$instance = Connection::GetInstance($bd);
    				$stmt = $instance->prepare($sql); 	// Préparation de ton statement
     
    				$stmt->bindParam(':login', $login);
    				$stmt->bindParam(':password', $password);
    				$stmt->execute();
    				$utilisateur = $stmt->fetchAll(PDO::FETCH_ASSOC);
     
    				//Utilisateur non trouvé dans la BD spécifique
    				if(count($utilisateur) == 0 || $utilisateur[0]['Droits'] == 0) {
    					header("Location: /login.php?error=noRights");
    				}
     
    				//Création d'une nouvelle session
    				$this->idSession = $this->getLastID($bd)+1;
     
    				//On sauve les données de session du client
    				$_SESSION['Session']['ip_client'] = $_SERVER['REMOTE_ADDR']; 
    				$_SESSION['Session']['Droits'] = $utilisateur[0]['Droits'];
    				$_SESSION['Session']['idSession'] = $this->idSession;
    				$_SESSION['Session']['Nom'] = $utilisateur[0]['Nom'];
    				$_SESSION['Session']['Prenom'] = $utilisateur[0]['Prenom'];
    				$_SESSION['db']['bdname'] = $bd;
     
     
    				//Sauvegarde de la session
    				date_default_timezone_set('Europe/Paris');
    				$date = date("Y-m-d H:i:s");
    				$this->save($login,$date, $_SERVER['REMOTE_ADDR']);
     
    				//Renvoi sur l'index
    				if(strcmp($login,'SPICloud') != 0){
    					header("Location: /catalogue/index.php");
    				}
    				else if(isset($_POST['codeSPICloud'])){
    					header("location: /cloud/index.php?code=".$_POST['codeSPICloud']);
    				}
    				else if(isset($_GET['code'])){
    					//header("location: /cloud/index.php?code=".$_GET['code']);
    				}
    			}
    			else {
    				//Utilisateur inconnu
    				//Renvoi sur la page de login avec une erreur
    				header("Location: /login.php?error=loginError");
    			}
    		}
    		else {
    			//Champs vides
    			//Renvoi sur la page de login avec une erreur
    			header("Location: /login.php?error=emptyFields");
    		}
    	}

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    Ca fonctionne peut-être comme ca mais pour tester l'existance d'une variable tu devrais plutot utiliser isset() ou !empty() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($login) && isset($password)) { ... } else { ... }
    Je suis étonné de voir aussi que la fonction header te retourne pas un warning vu que normalement cette fonction doit se trouver en tout début de page (redirection js à la place ?).

    Après dans ces cas là, je mettrais des ptit debugs à des endroits .. genre juste quand tu entres dans ta conditions IF (voir si tu y rentres bien ...) et en sortie de ta requête SQL (peut-être foireuse ?).

    M'enfin IE est toujours plus stricte que les autres ...

  5. #5
    Membre éprouvé
    Avatar de Emyleen
    Femme Profil pro
    Webmaster
    Inscrit en
    Mars 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 151
    Par défaut
    Merci je vais tester tout ça, je vais essayer de mettre des echos un peu partout.

    Ce qui m'étonne c'est surtout que ça ne plante que sur ie...ça n'a peut être aucun rapport mais sur mon serveur distant, lorsque j'accède à mon site, il apparait en mode Quirks sous IE, alors qu'en local il apparait bien en compatibilité IE9.
    J'ai lu que c'était une question d’entête HTML, voici la mienne :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!--[if lte IE 9]>
      <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    Pensez-vous que cela ai un lien avec mon ouverture de session? Apparemment il ne me créerai même pas la variable $_SESSION...

    Edit : Après test il s'avère que sous IE il me vide la variable session lorsque je fais mon header.... Comment pallier à cela? Existe-t-il un autre moyen de faire des redirections en php?

    Edit 2 : En rajoutant ce bout de code après mon session_start(), ça me permet de corriger le bug pour IE, mais pas pour Safari
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
    Une autre idée?

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    Surement parce que un header doit se trouver en tout début et IE est peut-être plus strict que les autres sur cela.

    Tu peux faire une redirection en js aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo"<SCRIPT LANGUAGE=\"JavaScript\">document.location.href=\"path_page\" </SCRIPT>";
    ?>
    Ensuite, tu mets un doctype html5 (enfin tu veux html5 ?)
    Et en suivant tu mets une ligne xhtml

    Pour HTML 5:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <!DOCTYPE html>
    <HTML>
     <HEAD>
    	<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>	
    </HEAD>
    <BODY>
    </BODY>
    </HTML>

Discussions similaires

  1. impossible d'ouvrir une session sous XP
    Par roland pageon dans le forum Windows XP
    Réponses: 1
    Dernier message: 16/12/2008, 14h27
  2. impossible d'ouvrir une session sous vista
    Par zanskar dans le forum Windows Vista
    Réponses: 11
    Dernier message: 29/02/2008, 15h23
  3. Réponses: 2
    Dernier message: 08/11/2007, 22h12
  4. [SQLSERV 2005] Impossible d'ouvrir une session
    Par slim dans le forum MS SQL Server
    Réponses: 15
    Dernier message: 20/02/2007, 15h42
  5. [Sécurité] Impossible d'ouvrir une session
    Par clementphp dans le forum Langage
    Réponses: 7
    Dernier message: 11/05/2006, 00h35

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