Bonjour à tous et bonne année.
Je viens vers vous dans le but de résoudre un problème auquel je suis confronté depuis 3 jours et dont je ne me sors pas.
J'ai dans ma page register.php le code suivant qui permet certains controles :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| <?php
session_start();
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['register']) && $_POST['register'] == 'register') {
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ( (isset($_POST['account_type']) && !empty($_POST['account_type'])) &&
(isset($_POST['mail_address']) && !empty($_POST['mail_address']) && filter_var($_POST['mail_address'], FILTER_VALIDATE_EMAIL)) &&
(isset($_POST['username']) && !empty($_POST['username'])) &&
(isset($_POST['password']) && !empty($_POST['password'])) &&
(isset($_POST['confirm_password']) && !empty($_POST['confirm_password']))
)
{
//On enleve lechappement si get_magic_quotes_gpc est active
if(get_magic_quotes_gpc())
{
$_POST['username'] = stripslashes($_POST['username']);
$_POST['password'] = stripslashes($_POST['password']);
$_POST['confirm_password'] = stripslashes($_POST['confirm_password']);
$_POST['mail_address'] = stripslashes($_POST['mail_address']);
}
// on teste les deux mots de passe
if ($_POST['password'] != $_POST['confirm_password'])
{
$erreurpass = 'The two passwords are different.';
}
else {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('BASE', $base);
// on recherche si ce username est déjà utilisé par un autre membre
$sql = 'SELECT id FROM user WHERE username="'.mysql_real_escape_string($_POST['username']).'"';
$req = mysql_query($sql) or die('erreur SQL !<br />'.
$sql.'<br />'.
mysql_error());
$data = mysql_fetch_array($req);
if ($data[0] == 0)
{
$sql = 'INSERT INTO user VALUES("" ,"'.mysql_real_escape_string($_POST['account_type']).'",
"'.mysql_real_escape_string($_POST['mail_address']).'",
"'.mysql_real_escape_string($_POST['username']).'",
"'.mysql_real_escape_string(md5($_POST['password'].$salt)).'")';
mysql_query($sql) or die('erreur SQL !'.$sql.'<br />'.mysql_error());
// on récupère l'id de notre nouveau membre
$id = mysql_insert_id();
session_start();
$_SESSION['username'] = $_POST['username'];
// on stocke cet id dans une variable de session
$_SESSION['id'] = $id;
header('Location: home.php');
exit();
}
else {
$erreurlogin = 'Another member is already using this pseudo.';
}
}
}
else {
$erreur = 'Please fill in all the fields.';
}
}
?> |
J'ai plusieurs soucis.
Le premier est qu'il ne m'affiche aucun message si je valide le formulaire alors qu'aucun champs n'est rempli.
En second, plutôt que d'afficher les erreurs les unes après les autres et attendre la correction de l'utilisateur, j'aimerai pouvoir toutes les afficher en même temps.
En troisième, j'ai deux fonctions qui doivent permettre le contrôle de la disponibilité d'un login :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| function file(fichier) {
if(window.XMLHttpRequest) // FIREFOX
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 verif(c,v,d){
result = file('verif.php?c='+c+'&v='+v);
document.getElementById(d).innerHTML=result;
} |
et qui sont appelé de la façon suivante dans mon formulaire :
<input type="text" class="inputform" id="username" name="username" onBlur="verif('username',this.value,'username_verif')" required /> <div name='pseudo_verif'></div>
et enfin le verif.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <?php
if(isset($_GET['c']) && isset($_GET['v'])){ //verification que les variables c et v existent
if($_GET['c']!='' && $_GET['v']!=''){ //verification que les variables c et v ne sonts pas vides
if($_GET['c']=='username'){ //si c=pseudo
$link = mysql_connect('localhost','root','mot de passe'); //connection à la bdd
$result = mysql_db_query('ma_bdd','SELECT * FROM ma_table WHERE username=`'.$_GET['v'].'`',$link); //requete
if(mysql_num_rows($result)<1){
echo('Ce pseudo est libre'); //envoi du message si libre
}else{
echo('Ce pseudo est deja pris'); // envoi du message si deja pris
}
}
}
}
?> |
et donc je n'arrive pas à mixer les deux register.php et verif.php.
Voila je crois que se sera tous... C'est pas mal déjà et merci à tous ceux qui prendront le temps de me lire et surtout de m'aider.
Partager