[AJAX] Formulaire de connexion à phpBB

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par WebRankInfo, 16 Février 2007.

  1. WebRankInfo
    WebRankInfo Admin
    Membre du personnel
    Inscrit:
    19 Avril 2002
    Messages:
    20 757
    J'aime reçus:
    800
    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
     
  2. Pouzy
    Pouzy WRInaute passionné
    Inscrit:
    1 Septembre 2004
    Messages:
    1 041
    J'aime reçus:
    0
    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 :)
     
  3. WebRankInfo
    WebRankInfo Admin
    Membre du personnel
    Inscrit:
    19 Avril 2002
    Messages:
    20 757
    J'aime reçus:
    800
    Ok merci je vais regarder. D'autres idées ?
     
  4. NxtGen
    NxtGen WRInaute impliqué
    Inscrit:
    24 Octobre 2006
    Messages:
    563
    J'aime reçus:
    0
    La ou tu veux afficher le formulaire d'identification :

    Code:
    <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:
    <?
    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
    	}
    ?>
     
  5. Kwaelbi
    Kwaelbi WRInaute impliqué
    Inscrit:
    13 Novembre 2004
    Messages:
    654
    J'aime reçus:
    0
    Merci ça pourrait m'intéresser à moi aussi ;)
     
  6. WebRankInfo
    WebRankInfo Admin
    Membre du personnel
    Inscrit:
    19 Avril 2002
    Messages:
    20 757
    J'aime reçus:
    800
    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 !
     
  7. NextGeneration
    NextGeneration WRInaute occasionnel
    Inscrit:
    27 Septembre 2006
    Messages:
    300
    J'aime reçus:
    0
    AMHA une analyse en bonne et due forme de la fonction qui gere les sessions phpBB et c'est réglé
     
  8. NxtGen
    NxtGen WRInaute impliqué
    Inscrit:
    24 Octobre 2006
    Messages:
    563
    J'aime reçus:
    0
    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:
    <?
    // 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:
    <?
    // 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.
     
  9. WebRankInfo
    WebRankInfo Admin
    Membre du personnel
    Inscrit:
    19 Avril 2002
    Messages:
    20 757
    J'aime reçus:
    800
    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:
    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é)
     
  10. NxtGen
    NxtGen WRInaute impliqué
    Inscrit:
    24 Octobre 2006
    Messages:
    563
    J'aime reçus:
    0
    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é :)
     
  11. WebRankInfo
    WebRankInfo Admin
    Membre du personnel
    Inscrit:
    19 Avril 2002
    Messages:
    20 757
    J'aime reçus:
    800
    ça m'a l'air d'être de la "bidouille" mais c'est à tester. Merci !
     
  12. NxtGen
    NxtGen WRInaute impliqué
    Inscrit:
    24 Octobre 2006
    Messages:
    563
    J'aime reçus:
    0
    Bah je suis trés bidouilleur ^^
    sinon tu peux mettre dans le fichier php

    Code:
    <?
    if ($page == "ajax" ) {
    $texte = "ton code";
    exit
    }
    ?>
    et dans le login tu fais un

    Code:
    <?
    $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 ^^
     
  13. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
  14. WebRankInfo
    WebRankInfo Admin
    Membre du personnel
    Inscrit:
    19 Avril 2002
    Messages:
    20 757
    J'aime reçus:
    800
    merci je vais aller lire ces articles
     
Chargement...
Similar Threads - [AJAX] connexion phpBB Forum Date
[Ajax] Appel fichier externe et sessions Développement d'un site Web ou d'une appli mobile 17 Juillet 2012
[AJAX] tester la présence d'un fichier distant Développement d'un site Web ou d'une appli mobile 17 Août 2011
[AJAX] Validation de form en ajax : captcha non reconnu Développement d'un site Web ou d'une appli mobile 21 Juin 2011
[Ajax] modifier un lien image Développement d'un site Web ou d'une appli mobile 26 Novembre 2008
[ajax] Empêcher l'arrivée de données plus anciennes Développement d'un site Web ou d'une appli mobile 16 Septembre 2008
[AJAX] Menu accordéon 3 niveaux ! Développement d'un site Web ou d'une appli mobile 26 Août 2008
[Ajax] script post ou get ? précision Développement d'un site Web ou d'une appli mobile 11 Juin 2008
[Ajax] Formulaire et envoie $_POST Développement d'un site Web ou d'une appli mobile 5 Juin 2008
[AJAX] Comment gérer les header('location: '); Développement d'un site Web ou d'une appli mobile 2 Juillet 2007
[AJAX] Descendre la scroll d'une pseudo frame Développement d'un site Web ou d'une appli mobile 17 Avril 2007
Site à référencer [ajax] Débuter en référencement 10 Avril 2007
[AJAX] Rafraichir une page avec un bouton Développement d'un site Web ou d'une appli mobile 23 Mars 2007
[AJAX] ou [PHP & JAVASCRIPT] ? Développement d'un site Web ou d'une appli mobile 16 Septembre 2006
[AJAX] Spotback Développement d'un site Web ou d'une appli mobile 14 Septembre 2006
[RESOLU] [AJAX] réellement assynchrone ? Développement d'un site Web ou d'une appli mobile 10 Mars 2006
[Ajax] probleme de charset Développement d'un site Web ou d'une appli mobile 8 Mars 2006
Prise en compte de GA seulement de la page de connexion Google Analytics 3 Mai 2022
Connexion au compte Google Search Console d'un client Google : l'entreprise, les sites web, les services 28 Avril 2022
Problème serveur connexion simultanée Administration d'un site Web 19 Janvier 2022
Signaler aux crawler de ne pas suivre un lien qui nécessite une connexion Crawl et indexation Google, sitemaps 9 Juin 2021