[AJAX] Formulaire de connexion à phpBB
14 messages
• Page 1 sur 1
-

WebRankInfo - Administrateur du site

- Messages: 19415
- Inscription: 19 Avr 2002
[AJAX] Formulaire de connexion à phpBB
Bonjour,
Je cherche à améliorer WRI en créant un formulaire de connexion au forum phpBB en AJAX. L'intérêt ne serait pas directement pour le forum (!) mais plutôt sur d'autres rubriques du site qui ne sont accessibles qu'aux membres.
Par exemple sur une page d'inscription à l'annuaire, au lieu de dire "allez d'abord vous connecter au forum et débrouillez-vous pour revenir ici", j'aurai un formulaire de connexion qui, une fois validé, laissera l'utilisateur remplir le formulaire d'inscription.
J'espère que j'ai été clair et surtout que quelqu'un pourra me donner une idée sur la façon la plus simple de faire ceci !
Olivier
Je cherche à améliorer WRI en créant un formulaire de connexion au forum phpBB en AJAX. L'intérêt ne serait pas directement pour le forum (!) mais plutôt sur d'autres rubriques du site qui ne sont accessibles qu'aux membres.
Par exemple sur une page d'inscription à l'annuaire, au lieu de dire "allez d'abord vous connecter au forum et débrouillez-vous pour revenir ici", j'aurai un formulaire de connexion qui, une fois validé, laissera l'utilisateur remplir le formulaire d'inscription.
J'espère que j'ai été clair et surtout que quelqu'un pourra me donner une idée sur la façon la plus simple de faire ceci !
Olivier
-

Pouzy - WRInaute passionné

- Messages: 1327
- Inscription: 1 Sep 2004
Plop !
Alors voilà, sur Aido j'avais réussi un temps mais j'ai eu des problèmes sur le site, j'ai du réenvoyer une ancienne sauvegarde et je me souviens plus trop comment j'avais fait, mais regarde : -www.aidoforum.com, tu as le formulaire de connexion sur chaque page, avec en hidden le chemin de la page, et tu peux l'utiliser pour dire à forum/login.php où redigier la personne via ce tuto : http://www.aidoforum.com/tutoriaux-340- ... exion.html
Tu me dis si tu y arrives, et je te dis si j'y re-arrive
Alors voilà, sur Aido j'avais réussi un temps mais j'ai eu des problèmes sur le site, j'ai du réenvoyer une ancienne sauvegarde et je me souviens plus trop comment j'avais fait, mais regarde : -www.aidoforum.com, tu as le formulaire de connexion sur chaque page, avec en hidden le chemin de la page, et tu peux l'utiliser pour dire à forum/login.php où redigier la personne via ce tuto : http://www.aidoforum.com/tutoriaux-340- ... exion.html
Tu me dis si tu y arrives, et je te dis si j'y re-arrive
-

WebRankInfo - Administrateur du site

- Messages: 19415
- Inscription: 19 Avr 2002
Ok merci je vais regarder. D'autres idées ?
-

NxtGen - WRInaute impliqué

- Messages: 762
- Inscription: 24 Oct 2006
La ou tu veux afficher le formulaire d'identification :
Et dans login.php, tu fait un petit morceau du style :
- Code: Tout sélectionner
<script type="text/javascript">
function submithis(form) {
var login = form.login.value;
var password = form.password.value;
var xhr_object = null;
if ( window.XMLHttpRequest )
xhr_object = new XMLHttpRequest();
else if ( window.ActiveXObject )
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else {
document.location = "login.php";
}
if ( xhr_object != null ) {
xhr_object.open("POST", "/login.php", true);
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var vars = "post=ajax&login="+login+"&password="+password;
xhr_object.send(vars);
xhr_object.onreadystatechange = function() {
if ( xhr_object.readyState == 4 ) {
var result = xhr_object.responseText;
if ( result == 1 ) {
document.getElementById("formulaire").innerHTML = "code html de ton formulaire";
}
else {
document.getElementById("formulaire").innerHTML = "erreur de login ou password";
}
}
}
}
return false;
}
</script>
<div id="formulaire">
<form action="login.php" method="post" onsubmit="return submithis(this)">
<input type="text" name="login" />
<input type="password" name="password" />
<input type="submit" value="Envoyer" />
</form>
</div>
Et dans login.php, tu fait un petit morceau du style :
- Code: Tout sélectionner
<?
if ( $_POST["post"] == "ajax" ) {
Et là, tu gère l'authentification en fonction des variables
$_POST["login"] et $_POST["password"],
si c'est ok, tu retourne 1, sinon 0
}
?>
-

WebRankInfo - Administrateur du site

- Messages: 19415
- Inscription: 19 Avr 2002
Merci NxtGen j'avance mais pour l'instant je butte sur le contenu de login.php
En effet il faut faire plus qu'une simple vérification login/password dans la base de données puisqu'il faut démarrer une nouvelle session "compatible phpBB".
Peut-être faut-il fouiller dans le code de login de phpBB ou bien il y a une façon simple de faire.
Si quelqu'un a des idées je suis preneur !
En effet il faut faire plus qu'une simple vérification login/password dans la base de données puisqu'il faut démarrer une nouvelle session "compatible phpBB".
Peut-être faut-il fouiller dans le code de login de phpBB ou bien il y a une façon simple de faire.
Si quelqu'un a des idées je suis preneur !
- NextGeneration
- WRInaute occasionnel

- Messages: 428
- Inscription: 27 Sep 2006
AMHA une analyse en bonne et due forme de la fonction qui gere les sessions phpBB et c'est réglé
-

NxtGen - WRInaute impliqué

- Messages: 762
- Inscription: 24 Oct 2006
WebRankInfo a écrit:Merci NxtGen j'avance mais pour l'instant je butte sur le contenu de login.php
En effet il faut faire plus qu'une simple vérification login/password dans la base de données puisqu'il faut démarrer une nouvelle session "compatible phpBB".
Peut-être faut-il fouiller dans le code de login de phpBB ou bien il y a une façon simple de faire.
Si quelqu'un a des idées je suis preneur !
Je n'ai pas le fichier login.php de PhpBB sous la main, mais tu devrais essayer un truc comme ca :
Dans login.php tu cherches les lignes où il vérifie le login et le mot de passe.
A mon avis, ca marche à coups de If ( blablabl ) { ... } else { blablab }
il faut que tu rajoutes, dans chacun des cas (login ok ou non) :
Dans la partie où normalement phpBB retourne une page de confirmation :
- Code: Tout sélectionner
<?
// Authentification via Ajax
if ( $_POST["post"] == "ajax" ) {
echo "1"; // Renvoi simplement "1" au script ajax, le formulaire sera donc affiché.
exit;
}
?>
Et dans la partie ou phpBB te dis login ou mot de passe incorrect :
- Code: Tout sélectionner
<?
// Authentification via Ajax
if ( $_POST["post"] == "ajax" ) {
echo "0"; // Renvoi simplement "0" au script ajax, le message d'erreur appaitra.
exit;
}
?>
Je ne pense pas qu'il soit nécessaire de modifier autre chose dans login.php, avec ces 2 lignes, au lieux de rediriger vers une page du forum, le script php retournera juste 0 ou 1, mais l'authentification, la mise en route des sessions, etc, devrais se faire normalement.
-

WebRankInfo - Administrateur du site

- Messages: 19415
- Inscription: 19 Avr 2002
ok maintenant ça marche
il me reste à comprendre la logique habituelle des sites avec de l'ajax pour m'organiser, je m'explique : disons que j'ai une page qui propose des choses accessibles seulement aux membres (loggués).
Grâce au script ci-dessus j'arrive à faire un script de connexion sans quitter la page, mais je ne sais pas bien comment faire une fois que ce formulaire est validé et le membre connecté : il faudrait recharger la page pour que les fonctionnalités accessibles aux membres uniquement s'affichent.
J'ai sans doute raté un truc car je me vois mal mettre toute la partie qui gère les fonctionnalités avancées dans la ligne
(je cherche à faire un système qui puisse s'appliquer à n'importe quelle page du site qui nécessite d'être loggué)
il me reste à comprendre la logique habituelle des sites avec de l'ajax pour m'organiser, je m'explique : disons que j'ai une page qui propose des choses accessibles seulement aux membres (loggués).
Grâce au script ci-dessus j'arrive à faire un script de connexion sans quitter la page, mais je ne sais pas bien comment faire une fois que ce formulaire est validé et le membre connecté : il faudrait recharger la page pour que les fonctionnalités accessibles aux membres uniquement s'affichent.
J'ai sans doute raté un truc car je me vois mal mettre toute la partie qui gère les fonctionnalités avancées dans la ligne
- Code: Tout sélectionner
document.getElementById("formulaire").innerHTML = "code html de ton formulaire"
(je cherche à faire un système qui puisse s'appliquer à n'importe quelle page du site qui nécessite d'être loggué)
-

NxtGen - WRInaute impliqué

- Messages: 762
- Inscription: 24 Oct 2006
voila une idée :
dans la page réservé aux membres, tu mets dans la source php ce que tu veux afficher entre deux lignes bien définies, par exemple
# début membre
texte et code html a afficher une fois identifié
# fin membre
et dans la page login.php, au lieu de faire "echo 1" pour dire au javascript que c'est bon, tu fait un fopen du fichier php et tu places dans une variable le contenu entre ces deux lignes, et tu fais un echo $variable, ainsi tu peux utiliser le meme principe pour toutes les pages que tu veux, et surtout, le code a afficher n'est pas en clair dans le javascript avant d'être loggué
dans la page réservé aux membres, tu mets dans la source php ce que tu veux afficher entre deux lignes bien définies, par exemple
# début membre
texte et code html a afficher une fois identifié
# fin membre
et dans la page login.php, au lieu de faire "echo 1" pour dire au javascript que c'est bon, tu fait un fopen du fichier php et tu places dans une variable le contenu entre ces deux lignes, et tu fais un echo $variable, ainsi tu peux utiliser le meme principe pour toutes les pages que tu veux, et surtout, le code a afficher n'est pas en clair dans le javascript avant d'être loggué
-

WebRankInfo - Administrateur du site

- Messages: 19415
- Inscription: 19 Avr 2002
ça m'a l'air d'être de la "bidouille" mais c'est à tester. Merci !
-

NxtGen - WRInaute impliqué

- Messages: 762
- Inscription: 24 Oct 2006
Bah je suis trés bidouilleur ^^
sinon tu peux mettre dans le fichier php
et dans le login tu fais un
C'est peu etre un peu plus propre...
par contre faut que tu trouves comment indiquer la bonne page dans le include, c'est peut etre fesable avec le referer, mais j'en suis pas sur
Y'a surement une idée bien meilleure, mais j'ai pas encore eu l'illumination ^^
sinon tu peux mettre dans le fichier php
- Code: Tout sélectionner
<?
if ($page == "ajax" ) {
$texte = "ton code";
exit
}
?>
et dans le login tu fais un
- Code: Tout sélectionner
<?
$page = "ajax";
include('page.php');
echo $texte;
exit;
?>
C'est peu etre un peu plus propre...
par contre faut que tu trouves comment indiquer la bonne page dans le include, c'est peut etre fesable avec le referer, mais j'en suis pas sur
Y'a surement une idée bien meilleure, mais j'ai pas encore eu l'illumination ^^
-

e-kiwi - Modérateur

- Messages: 15617
- Inscription: 23 Déc 2003
ouh j'ai raté ce post
http://openweb.eu.org/articles/objet_xmlhttprequest/
ou
http://www.jamesdam.com/ajax_login/login.html#login
t'aident ?
http://openweb.eu.org/articles/objet_xmlhttprequest/
ou
http://www.jamesdam.com/ajax_login/login.html#login
t'aident ?
-

WebRankInfo - Administrateur du site

- Messages: 19415
- Inscription: 19 Avr 2002
merci je vais aller lire ces articles
14 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- ajax dans formulaire
- Formulaire et AJAX et PHP
- Ajax et vérification de formulaire
- Adsense et phpBB à la connexion
- petite aide pour formulaire de connexion coolsmile
- Ajax + formulaire = $_POST vide
- PHP / Ajax : Problème de formulaire
- [Ajax] Formulaire et envoie $_POST
- Connexion PDO : comment sécuriser les champs de formulaire?
- Soumission de formulaire avec AJAX
Consultez la description détaillée des produits ou services de Google suivants : Google Web Toolkit
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

