[AJAX] Connexion php

Fermé
reaverlost Messages postés 150 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 14 mai 2018 - 23 janv. 2014 à 10:48
 newbie - 4 févr. 2016 à 20:24
Bonjour,

Voila, j'aimerai faire une connexion en temps réel, donc sans rechargement de ma page accueil. Quand je clique sur le bouton connexion, une session est crée sans rechargement, mais je suis obligé d'appuyer sur F5 pour voir "Bonjour $_SESSION", et j'aimerai qu'il s'affiche instantanément. Est-ce possible?

j'ai un fichier accueil.php qui contient ce code :


If (isset ($_SESSION && !empty ($_SESSION["pseudo"]))
{
// Afficher Bonjour Session
}
else
{
// Code html des formulaires de connexion et d'inscription
}

J'ai un fichier identification.php qui contient la vérification pour la connexion, si les identifiants sont corrects, le php renvoie 'OK'.

Et j'ai un fichier ajax.js qui contient le ce code ajax :



function maj ()
{
var objxhr = xhr_connect ();

objxhr.onreadystatechange = function ()
{
if (objxhr.readyState == 4)
{
if (objxhr.status == 200)
{
return (objxhr.responseText);
}
}
}

var login = document.getElementById("pseudo_con").value;
var pass = document.getElementById("pass_con").value;

objxhr.open ('POST', 'identification.php', true);
objxhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
objxhr.send ('login='+login+'&pass='+pass);
}

Voila, merci d'avance.

A voir également:

3 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
23 janv. 2014 à 11:21
Bonjour,

Ce qui me gène dans votre code est cette ligne :
return (objxhr.responseText);
. À mon avis, il faudrait plutôt faire un
document.getElementById('zone_d_affichage').innerHtml = objxhr.responseText;
, ou placer cette valeur dans une variable globale. Parce que la valeur de retour d'un callback XHR n'est pas récupérable, me semble-t-il.

Xavier
0
reaverlost Messages postés 150 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 14 mai 2018 21
Modifié par reaverlost le 23/01/2014 à 11:29
Merci de la réponse,

J'avoue que je ne savais pas quoi mettre à la place de mon "return (objxhr.responseText);".

Le soucis c'est que justement je n'ai pas de zone d'affichage, étant donné que ma page accueil.php vérifie déjà en PHP s'il existe une session ou pas. Ce que je veux c'est qu'en cliquant sur le bouton, cette même page se met à jour et affiche "Bonjour $_SESSION['pseudo']", sans mettre dans mon javascript les document.getElementById() machin...

Est-ce possible de cette manière?

Si je m'exprime mal, je tenterai de mieux m'exprimer =)

Merci encore.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
23 janv. 2014 à 12:29
OK.
Alors dans ce cas, tu remplaces le
return [...]
par
window.location.reload()
.

Xavier
0
reaverlost Messages postés 150 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 14 mai 2018 21
23 janv. 2014 à 13:16
Je suis donc obligé de recharger ma page si je veux faire ce que je veux?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
25 janv. 2014 à 09:43
Tout est dans le « ce que je veux ». Et j'avoue ne pas l'avoir compris.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
25 janv. 2014 à 09:46
objxhr.responseText
contient quoi ?
S'il contient le texte que tu veux afficher, alors j'en reviens à ma première réponse :
document.getElementById('zone_d_affichage').innerHtml = objxhr.responseText;

Ou alors, tu veux un alert() ?

Parce que ce que tu me dis :
« affiche "Bonjour $_SESSION['pseudo']", sans mettre dans mon javascript les document.getElementById() machin »
me laisse perplexe. Tu veux afficher quelque chose, mais sans lui dire où l'afficher, et sans recharger ta page ?
0
reaverlost Messages postés 150 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 14 mai 2018 21
26 janv. 2014 à 23:06
Dans ma page accueil.php, j'ai une condition PHP qui vérifie si je suis connecté ou pas:

If (isset ($_SESSION && !empty ($_SESSION["pseudo"]))
{
// Afficher le div contenant Bonjour Session
}
else
{
// Code html des formulaires de connexion et d'inscription
}

objxhr.responseText contient 'OK' si la connexion s'est effectuée (j'ai mis ça pour tester), or je ne veux pas mettre ok mais juste qu'il "retourne" sur ma page accueil.php, mais sans recharger...

C'est possible ou pas?

J'espère que c'est plus clair.
0
salut!

je déterre un peu le topic, mais tu pourrais publier ton code, qu'on voit ce que ça donne? :-/

merci.
0