[AJAX] Formulaire de connexion à phpBB


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 19415
Inscription: 19 Avr 2002

[AJAX] Formulaire de connexion à phpBB

Message le Ven Fév 16, 2007 14:23

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


Pouzy
WRInaute passionné
WRInaute passionné
 
Messages: 1327
Inscription: 1 Sep 2004

Message le Ven Fév 16, 2007 15:16

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 :)


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 19415
Inscription: 19 Avr 2002

Message le Ven Fév 16, 2007 18:20

Ok merci je vais regarder. D'autres idées ?


NxtGen
WRInaute impliqué
WRInaute impliqué
 
Messages: 762
Inscription: 24 Oct 2006

Message le Ven Fév 16, 2007 22:48

La ou tu veux afficher le formulaire d'identification :

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
   }
?>


Kwaelbi
WRInaute impliqué
WRInaute impliqué
 
Messages: 880
Inscription: 13 Nov 2004

Message le Ven Fév 16, 2007 23:08

Merci ça pourrait m'intéresser à moi aussi ;)


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 19415
Inscription: 19 Avr 2002

Message le Sam Fév 17, 2007 11:15

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 !

NextGeneration
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 428
Inscription: 27 Sep 2006

Message le Sam Fév 17, 2007 11:18

AMHA une analyse en bonne et due forme de la fonction qui gere les sessions phpBB et c'est réglé


NxtGen
WRInaute impliqué
WRInaute impliqué
 
Messages: 762
Inscription: 24 Oct 2006

Message le Sam Fév 17, 2007 12:50

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
Administrateur du site
 
Messages: 19415
Inscription: 19 Avr 2002

Message le Sam Fév 17, 2007 18:19

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
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é
WRInaute impliqué
 
Messages: 762
Inscription: 24 Oct 2006

Message le Dim Fév 18, 2007 23:43

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é :)


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 19415
Inscription: 19 Avr 2002

Message le Lun Fév 19, 2007 16:27

ça m'a l'air d'être de la "bidouille" mais c'est à tester. Merci !


NxtGen
WRInaute impliqué
WRInaute impliqué
 
Messages: 762
Inscription: 24 Oct 2006

Message le Lun Fév 19, 2007 17:09

Bah je suis trés bidouilleur ^^
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
Modérateur
 
Messages: 15617
Inscription: 23 Déc 2003

Message le Mer Fév 21, 2007 8:27



WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 19415
Inscription: 19 Avr 2002

Message le Mer Fév 21, 2007 16:28

merci je vais aller lire ces articles


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité