Kommunauty
Connexion
Inscription

Intégration de page [PHP-JAVASCRIPT]


Kearz Messages : 261

Hello, (ça f'sait longtemps que j'étais pas passé ici moi )

J'ai un petit problème niveau PHP-AJAX-SQL. (J'groupe puisque je sais pas d'où vient le problème)

J'm'explique je suis en train de faire une page d'inscription pour un site en PHP. Pour faire ça, j'ai fait un formulaire en PHP associé à un petit javascript (AJAX -même si c'est pas un appel XML-).

Voilà le formulaire:


<!--Boite d'erreur-->
<div id='ErreurBox'></div>

<form name="formulaire" onSubmit="return verification_inscription(this.pseudo, this.password, this.password2, this.mail)" action="secondaire/enregistrement_inscription.php" method="post">
<!-- TABLEAU D'INSCRIPTION -->

<table>
<tr>
<td>Pseudo:</td><td><input type="text" name="pseudo" maxlength="40"/></td>
</tr><tr>
<td>Mot de passe:</td><td>  <input type="password" maxlength="20" name="password" /></td>
</tr><tr>
<td>Confirmation mot de passe:</td><td>  <input type="password" maxlength="20" name="password2"  /></td>
</tr><tr>
<td>adresse mail:</td><td>  <input type="text" name="mail" maxlength="50" /></td>
</tr><tr><td>
<form>Sexe: </td><td>
<input type="radio" value="homme" name="sexe" onClick="valideRadio()"/> Homme
<input type="radio" value="femme" name="sexe" onClick="valideRadio()"/> Femme
</form></td>
</tr><tr>
<td>Année de naissance:</td>
<td><?php include('secondaire/formulaire_date.php')?></td>
</tr>
</table>
<input type="submit" value="Valider"/>

</form>

Et le javascript: (qui regarde si tout est conforme et si le pseudo n'existe pas)


/* ============================================================*/
/* INSCRIPTION */


/*VERIFICATION QUE LES ZONES SONT REMPLIES*/
var radio=false;


/*Valide le faite que le choix du sexe est fait*/
function valideRadio(){
radio =true;
}
/*Passe une zone en rouge si elle est mal remplit*/
function surligne(champ, erreur){
   if(erreur)
  champ.style.backgroundColor = "#CC3300";
   else
  champ.style.backgroundColor = "";
}

/*Verifie que le formulaire est bien remplit*/
function verification_inscription(pseudo, password, password2, mail){
var erreur = "";

/*VERIFICATION PSEUDO*/
if(pseudo.value.length < 2){
  erreur +="• Pseudo trop court. <br/>";  
  surligne(pseudo, true);
}else if(!(/^[a-zA-Z]+$/.test(pseudo.value))){
erreur +="• Pseudo ne doit être composé que de lettres. <br/>";  
surligne(pseudo, true);
}else{
surligne(pseudo, false);
}

if(!verifPseudo(pseudo.value)){
surligne(pseudo, true);
erreur +="• Pseudo existe déjà. <br/>";  
}

/*VERIFICATION MAIL*/
if(!(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(mail.value))){
erreur +="• L'adresse mail est erronée. <br/>";  
surligne(mail, true);
}else{
surligne(mail, false);
}

if(password.value.length < 2){
  erreur +="• Mot de passe trop court. <br/>";  
  surligne(password, true);
  surligne(password2, true);
}else if(password.value != password2.value){
erreur += "• Les mots de passes sont différents! <br/>";  
surligne(password, true);
surligne(password2, true);
}else{
surligne(password, false);
surligne(password2, false);
}

if(!radio){
erreur += "• Aucun sexe selectionné! <br/>";  
}


var erreur_info = document.getElementById("ErreurBox");
erreur_info.innerHTML = '';
erreur_info.innerHTML +=erreur;
return(erreur=="");
}


/* PSEUDO LIBRE OU NON */

/*HTTPResquest*/

function file(fichier) {
if(window.XMLHttpRequest) // TOUT LES NAVIGATEURS SAUF IE
  xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
  xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
  return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}

function verifPseudo(pseudo){


if(pseudo != ''){

    if(texte = file('secondaire/pseudo_existant.php?pseudo='+escape(pseudo))){

if(texte == 1) return false;
else if(texte == 2) return true;

}
}

}

Surligne est une fonction basique qui change la couleur du cadre.

Bref: ça marche!

Quand je m'inscris via: connexion.php, tout fonction. (la requête SQL est donc correcte)

Mon problème est au niveau de l'intégration de cette page PHP. Je la lies à un bouton de l'index via une fonction javascript:


/* ============================================================*/
/* AJAX */

function show_php(id, url){

  var req = false;
  // For Safari, Firefox, and other non-MS browsers
  if (window.XMLHttpRequest) {
    try {
      req = new XMLHttpRequest();
    } catch (e) {
      req = false;
    }
  } else if (window.ActiveXObject) {
    // For Internet Explorer on Windows
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        req = false;
      }
    }
  }
 var element = document.getElementById(id);
 if (!element) {
  alert("Bad id " + id +
   "passed to clientSideInclude." +
   "You need a div or span element " +
   "with this id in your page.");
  return;
 }
  if (req) {
    // Synchronous request, wait till we have it all
    req.open('GET', url, false);
    req.send(null);
    element.innerHTML = req.responseText;
  } else {
    element.innerHTML =
   "Sorry, your browser does not support " +
      "XMLHTTPRequest objects. This page requires " +
      "Internet Explorer 5 or better for Windows, " +
      "or Firefox for any system, or Safari. Other " +
      "compatible browsers may also exist.";
  }


}

Et là c'est le "drame". A chaque fois, j'ai comme réponse "le pseudo existe déjà". (Même en forçant la page qui vérifie que le pseudo est libre à true.)

J'suis sur que c'est tout con mais j'vois pas d'où vient le problème.

Une idée?

Hors sujet: j'avais un peu perdu l'adresse du forum et j'avais plus trop le temps. Maintenant, j'ai un peu plus de temps c'possible de contacter quelqu'un pour faire un petit changement de pseudo? si oui qui?

samedi 29 septembre 2012

SiMax Messages : 7572

Salut !

J'imagine que tu charges le formulaire dans un petit cadre. Essaye de mettre tout le javascript dans un seul fichier (directement chargé sur toutes les pages où le formulaire peut s'afficher). Histoire de voir si le problème vient du chargement du JS.

Pour plus t'aider, si ça ne vient pas de ça, il faudrait que tu mettes tout ça en ligne pour tester directement

samedi 29 septembre 2012 (Dernière édition samedi 29 septembre 2012)

Kearz Messages : 261

C'est en ligne là: http://cssapocalypse.free.fr/arodia/index/#

C'est pas ça, tout les javascript est déjà dans le même fichier.

samedi 29 septembre 2012

SiMax Messages : 7572

Là ta page connexion contient le même javascript que la page d'accueil, ça peut poser problème.

Et au passage, dans la page d'accueil le script n'est pas dans la partie <head>. Et il y a un problème d'encodage.

dimanche 30 septembre 2012

Kearz Messages : 261

Dans ma page de connexion le JS était en commentaire. (puisque je l'avais fait là avant de tout regrouper dans la page .js)

Par contre ça m'a donné une idée, je testerais ça dans la journée je vais:

- Prendre tout mes fichiers et bien vérifier que y est pas du JS dans les pages

- Créer un fichier style initialisation.php qui fait tout les trucs de base comme la connexion à la BDD. Parce que là c'est sur, sur une page je peux avoir plusieurs connexion à la BDD.

J'tiens au courant si ça marche après ça.

dimanche 30 septembre 2012

SiMax Messages : 7572

Ok

dimanche 30 septembre 2012

Kearz Messages : 261

Voilà le problème:


function verifPseudo(pseudo){
    
     
        if(pseudo != ''){
         
            if(texte = file('secondaire/pseudo_existant.php?pseudo='+escape(pseudo))){
    
                if(texte == 1) return false;
                else if(texte == 2) return true;
                
            }
        }

    }

Forcement, ça redirige bien quand on est sur la page meme mais quand c'est dans une autre page tout merde.

Et tout mes liens sont cheaté comme ça (j'ai bougé de serveur)

Bref, le problème était ailleurs comme on dit. (même si j'arrive pas a mettre le bon lien. J'suis sur que le bug vient de là.)

dimanche 30 septembre 2012

SiMax Messages : 7572

Effectivement, ça appelle la page /arodia/index/secondaire/pseudo_existant.php?pseudo=test

C'est quoi la vraie adresse ? Essaye de mettre une URL absolue en attendant pour tester si ça vient de là

lundi 1 octobre 2012

Kearz Messages : 261

Problème résolu! J'ai fait partir tout mes liens de la racine

lundi 1 octobre 2012

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !