Formulaire d'inscription PHP et BD PHPMYADMIN

Fermé
cyberpunk Messages postés 3 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 16 septembre 2008 - 15 sept. 2008 à 15:56
 cyberkevin - 29 déc. 2008 à 01:11
Bonjour,
je suis legerement novice en php et je tente de créer un formulaire d'inscription afin que les gens puissent s'inscrire a une partie d'un site.
Le probleme est que je n'arrive pas a ecrire les donnée d'inscription dans la bd !

Voici le code du fichier inscription.php :

<?
function ValideLogin($QuelleLogin)
{
// SI le nom est carrément vide :
if ($QuelleLogin == "")
return "<font color='#FF0000'>Le login ne peut pas être vide</font><BR>";
// *** PLACER ICI LES INSTRUCTIONS DE VALIDATION ***
// Si on arrive ici, c'est que tout va bien : Le login est syntaxiquement correct :
return "";
}

function ValidePass ($QuellePass)
{
// SI le pass est carrément vide :
if ($QuellePass == "")
return "<font color='#FF0000'>Le Pass ne peut pas être vide</font><BR>";
// *** PLACER ICI LES INSTRUCTIONS DE VALIDATION ***
// Si on arrive ici, c'est que tout va bien : Le pass est syntaxiquement correct :
return "";
}

function ValideEMail($QuelleAdresse)
{
// SI l'E-Mail est carrément vide :
if ($QuelleAdresse == "")
return "<font color='#FF0000'>L'E-Mail ne peut pas être vide</font><BR>";
// Si l'E-Mail contient des caractères non autorisés dans une adresse mail correcte :
if (strspn(strtolower($QuelleAdresse), "abcdefghijklmnopqrstuvwxyz0123456789-_@.") < strlen($QuelleAdresse))
return "<font color='#FF0000'>L'E-Mail que vous avez fourni contient des caractères non-autorisés</font><BR>";
if (substr_count($QuelleAdresse , "@") == 0)
return "<font color='#FF0000'>Un E-Mail DOIT contenir le signe @</font><BR>";
if (substr_count($QuelleAdresse , "@") > 1)
return "<font color='#FF0000'>Un E-Mail ne peut contenir plus d'un signe @</font><BR>";
// *** PLACER ICI LES INSTRUCTIONS DE VALIDATION ***
if ((strpos($QuelleAdresse , "@")==0) || (strpos($QuelleAdresse , "@")==strlen($QuelleAdresse)-1))
return "<font color='#FF0000'>Un E-Mail ne peut commencer ni finir avec le signe @</font><BR>";
if (($QuelleAdresse[strlen($QuelleAdresse)-3] == ".") || ($QuelleAdresse[strlen($QuelleAdresse)-4] == "."))
{}
else
return "<font color='#FF0000'>Il manque un point dans votre E-Mail, ou il est mal placé</font><BR>";

if (strlen($QuelleAdresse) < 6)
return "<font color='#FF0000'>L'E-Mail doit mesurer au moins 6 caractères</font><BR>";
if (strlen($QuelleAdresse) >= 50)
return "<font color='#FF0000'>L'E-Mail ne peut excéder 50 caractères</font><BR>";

if ((strspn($QuelleAdresse[0], "abcdefghijklmnopqrstuvwxyz") == 0) || (strspn($QuelleAdresse[strlen($QuelleAdresse)-1], "abcdefghijklmnopqrstuvwxyz") == 0))
return "<font color='#FF0000'>Le premier et le dernier catactère de l'E-Mail doit être une lettre</font><BR>";
echo strpos("ab@.ef", "@.");
echo strpos("ab@cd", "@.");

// *** PLACER ICI LES INSTRUCTIONS DE VALIDATION ***
// Si on arrive ici, c'est que tout va bien : Le mail est syntaxiquement correct :
return "";
}
?>
<html>
<head>
<title>Inscription</title>
"<font color="grey">Veuillez remplir les champs obligatoires </font><font color="red">*</font>
<link rel="SHORTCUT ICON" href="/favicon.ico"/>
<link href="styles.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<?
if (($Login <> "") && ($Pass <> "") && (ValideEMail($EMail)==""))
{
echo " Merci de vous être inscrit, "$Login" , votre inscription a bien été prise en compte. ";
exit;
}
?>

<form method="post" action="inscription.php">

<!-- Gestion du Login : -->
<? if ($EnvoyerDonnee <> "") echo ValideLogin($Login); ?>
<FONT color="white"><H1>* Votre login :</H1></FONT> <input type="text" name="Login" value=<?echo $Login;?>> <br>
<!-- Gestion du Pass : -->
<? if ($EnvoyerDonnee <> "") echo ValidePass($Pass); ?>
<FONT color="blue"><H1>* Votre pass :</H1></FONT> <input type="text" name="Pass" value=<?echo $Pass;?>> <br>

<!-- Gestion de l'E-Mail : -->
<? if ($EnvoyerDonnee <> "") echo ValideEMail($EMail); ?>
<FONT color="red"><H1>* Votre E-Mail :</H1></FONT> <input type="text" name="EMail" value=<?echo $EMail;?>> <br>

<input type="submit" name="EnvoyerDonnee" value="Envoyer">
</form>
</body>
</html>


Ensuite j'ai un fichier pour la connexion sql connect_mysql.php :

<?php

//Parametre de connection
$serveur = "";
$admin = "" ;
$pass = "";
$db = "";
$table = "tbl_user";

?>

Et un fichier insertion_mysql.php qui pose surement probleme :

<?php

if ($correct){
$mail=$_POST["email"];
$utili= $_POST["login"];

require('includes/login.php');
// on ouvre la table

$requete="SELECT * FROM member where login='$login'";
$valeur=mysql_query($requete);
if (mysql_affected_rows()<>0){
echo'login existe déjà';
echo'<br>Rentrez un autre login';
// retour en arrière
}else{

$requete="SELECT * FROM member where email='$email'";
$valeur=mysql_query($requete);
if (mysql_affected_rows()<>0){
echo'Adresse mail existe déjà';
// procédure pour récupérer le mot de passe
}else{
// nom utilisateur et adresse mail inconnue, on peut rentrer l'utilisateur
echo'Inscription utilisateur';
}
}
require('includes/login.php');
}


// on commence par vérifier si le formulaire est correctement rentré
if ($correct){
$email=$_POST["email"];
$login= $_POST["login"];
$pass=$_POST['pass'];

echo'<br>';
echo'Valeurs correctes';
echo'<br>';
require('includes/login.php');
// on ouvre la table
$requete="SELECT * FROM member where login='$login'";
$valeur=mysql_query($requete);
if (mysql_affected_rows()<>0){
echo'Login existe déjà';
echo'<br>Rentrez un autre login';
// retour en arrière
}else{
$requete="SELECT * FROM member where email='$email'";
$valeur=mysql_query($requete);
if (mysql_affected_rows()<>0){
echo 'Adresse mail existe déjà';
// procédure pour récupérer le mot de passe
}else{
// nom utilisateur et adresse mail inconnue, on peut rentrer l'utilisateur
echo 'Je rentre login';
$requete="INSERT member SET login='$login',pass='$pass',email='$email'";
$erreur=mysql_query($requete);
$erreur1=mysql_error();
print($erreur);
print($erreur1);
}
}
require('includes/login.php');
}

?>

Et enfin un dernier fichier login.php :

<?
//variable pour notre connexion

$serveur = "mysql5-4";
$admin = "cyberpuncyber" ;
$password = "HoqNRkK9";
$database = "cyberpuncyber";
$table = "tbl_user";

//Etape 1 connexion au serveur Mysql
$link = @mysql_connect($serveur,$admin,$password) or die ("connexion impossible");
//Etape 2 sélectionner une database
$success = @mysql_select_db($database,$link) or die ("connexion réussie");

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
extract($_POST);
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select pwd from tbl_user where login='".$login."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_assoc($req);

if($data['pwd'] != $pass) {
echo '<p>Mauvais login / password. Merci de recommencer</p>';
include('index2.htm'); // On inclut le formulaire d'identification
exit;
}
else {
session_start();
$_SESSION['login'] = $login;

echo 'Vous etes bien logué';

{
echo "<script language='Javascript'>document.location='telechargement.php'</script>";
}
// ici vous pouvez afficher un lien pour renvoyer
// vers la page d'accueil de votre espace membres
}
}
else {
echo '<p>Vous avez oublié de remplir un champ.</p>';
include('index2.htm'); // On inclut le formulaire d'identification
exit;
}


?>


Je vous avoue sincèrement arrivé a ce stade, je pédale un peux ds la semoule ^^ Merci d'avance pour votre aide!
A voir également:

6 réponses

Salut, Je suis entrain de créer une page de ce genre, J'ai réussi à faire incrire les données dans ma DB, je peut te passer une partie d emon code si tu veut :


Deja, je créer une page nommé "registration.php" (Je sais, c'est bizard, mais je m'y retrouve ^^)

Cette page sert à metre le formulaire pour entré le Pseudo, le Pass et le Mail pour les stocker dans des variables :

Partit du code :

********************************************************************************************
<?php
// Declaration des variables :
$pseudo = '';
$pass = '';
$mail = '';
$id_pseudo = 0;
?>
//Formulaire d'inscription :
<form action="registration_complete.php" method="post">
Nom d'utilisateur : <input type="text" size="30" name="pseudo" value="" /><br />

Mot de pass : <input type="text" size="30" name="pass" value="" /><br />

Mail : <input type="text" size="30" name="mail" value="" /><br />

<input type="hidden" name="id_pseudo" value="0" />
<input type="submit" value="S'inscrire" />
//Fin du Formulaire !
********************************************************************************************

J'usque la, c'est simple, les identifiants sont enregistrers dans les variables $pseudo, $pass et $mail et le id_pseudo sert à lister els comptes dans la DB.

Ensutie, les valeurs sont garder en mémoire pour la page resgistration_complete.php qui contient le cod epour envoyer nos identifiants dans la DB.

Partie du code de registration_complete.php

********************************************************************************************
<?php
if (isset($_POST['pseudo']) AND isset($_POST['pass']) AND isset ($_POST['mail']))
{
$pseudo = addslashes($_POST['pseudo']);
$pass = addslashes($_POST['pass']);
$mail = addslashes($_POST['mail']);

if ($_POST['id_pseudo'] == 0)
{

// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
mysql_query("INSERT INTO ***NOMDETADB*** VALUES('', '" . $pseudo . "', '" . $pass . "', '" . $mail . "')");
/* sachant que ma base de donnée donne ceci comme champ : ID en INT (auto-increment et Primary.), pseudo en VARCHAR, pass en VARCHAR et mail en VARCHAR */
}

}
?>

<div id="corps">
<h2>Votre compte <?php echo $pseudo; ?> à etait créer. </h2><br><br>
<h2>Nom d'utilisateur : <?php echo $pseudo; ?> <br>
Mot de pass : <?php echo $pass; ?> <br>
E-Mail : <?php echo $mail; ?> </h2>
********************************************************************************************

Simple aussi ^^, au debut, on enlève d'éventuel Antislash, puis on verifie que la variable id_pseudo est bien à 0.
Si elle est à 0, on insert l'id et les autres variables, donc les identifiants, dans la base de données.

Ensuite, c'est juse un message pour dire que tout c'est bien passer.

ATTENTION, j'ai quelque peut modifier le code, et je n'est pas tester, à toi de voir si sa amrche, et à te l'adapter.
3
Utilisateur anonyme
15 sept. 2008 à 18:41
bonsoir,

à la place de $requete="INSERT member SET login='$login',pass='$pass',email='$email'";
essayez
INSERT into member values('$login','$pass','$email');
2
Bonjour

ça ne s'enregistre pas, mais as-tu des messages d'erreur ? La requête est-elle exécutée, ou le programme part-il dans une autre branche ?
2
Bas déja je vois un truc zarbi : Quand tu crées ta string de requete mysql, ta syntaxe pour concaténer les commandes sql et les variables php et strange : tu oublie les points de concaténation.

exemple :

ce qui est faut : mysql_query("SELECT * FROM `machin` WHERE `bidule`='$truc'");

ce qui est ok : mysql_query("SELECT * FROM `machin` WHERE `bidule`='".$truc."'");

En php une string se met entre des "" pour concatener une string avec des variable il faut fermer la premiere partie de la string avec un " puit le point pour concatener: "babalababa".$unevariable."balalala"

Si tu veux cherche le contenu de $machin dans ta base et que tu ecrit "debut requete '$machin'" mysql ne va pas cherche le contenu de ta variable mais les terme $machin donc ecrit "debut requete '".$machin."'"

Par ailleur ecrit tes requete en mettant les noms de champs et de table entre des `` du genre

"SELECT `user`,`nom` FROM `ta_table` WHERE `id`='".$unevariable."'" sinon porte grande aux injections de code sql et hacking dans le genre. Y'a pas que ça mais c'est un début.

Enfin quand tu recupère les variable venant d'un formulaire tu utilise $_POST ok c'est bien. Mais quand tu recupere des variable passée directement dans l'url, par exemple http://www.tonsite.com/index.php?var=toto

ne recupere pas seulement ta variable en ecrivant $var mais prefere $_GET['var']. Cela garantie que c'est bien celle de l'url que tu urilises. Sinon porte ouverte au cross-scripting et autre. Encore une fois ce n'est pas tout mais c'est déjà une base.

essaye déjà pour tont script de concatener correctement tes variable et tes string.

Voilou :)
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cyberpunk Messages postés 3 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 16 septembre 2008 1
16 sept. 2008 à 12:09
le plus drôle c'est que je n'ai pas d'erreur j'ai bien le message qui me dit que c'est bon mais rien ds la bd Oo
1
cyberpunk Messages postés 3 Date d'inscription lundi 15 septembre 2008 Statut Membre Dernière intervention 16 septembre 2008 1
15 sept. 2008 à 19:44
j'ai effectué le changement mais sa ne fonctionne pas sa ne s'enregistre tj pas dans la bd sql !
j'ai surement plein d'erreur mais ou ? ^^ deja reste a voir si j'utilise bien les fichiers qu'il faut
0