[AJAX] Connexion php

reaverlost Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   -  
 newbie -
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.

3 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention   21
 
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   Statut Membre Dernière intervention   1 011
 
OK.
Alors dans ce cas, tu remplaces le
return [...]
par
window.location.reload()
.

Xavier
0
reaverlost Messages postés 150 Date d'inscription   Statut Membre Dernière intervention   21
 
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   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention   21
 
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
newbie
 
salut!

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

merci.
0