par
visualight » 08 mai 2010, 19:37
Notice: Undefined index: TB_Mot_De_Passe in C:\wamp\www\php\inscription.php on line 24
La variable $_POST['TB_Mot_De_Passe'] provenant du formulaire n'est pas correctement envoyée ou assignée.
Poste le code de ton formulaire et du morceau de code php qui récupère le champ mot de passe de ton formulaire.
Warning: mysql_close(): no MySQL-Link resource supplied in C:\wamp\www\php\inscription.php on line 157
C'est simle, tu ouvre une connection à la base sans définir de quelle connexion il s'agit.
De plus, je te conseille d'afficher les erreurs mysql pour savoir ou ça plante quand ça ne fonctionne plus.
$db = mysql_connect("localhost", "root", "")
or die('Error: Could not connect to database');
mysql_close(
$db);
Voici la correction dans ton code :
<?php
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
header("Location: index.php");
}
else
{
// Formulaire visible par défaut
$masquer_formulaire = false;
// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{
// Vérification de la validité des champs
if(!preg_match("/^[A-Za-z0-9_]{4,20}$/", $_POST["TB_Nom_Utilisateur"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères<br />\n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif (!preg_match("/^[A-Za-z0-9_]{4,20}$/", $_POST["TB_Mot_De_Passe"]))
{
$message = "Votre mot de passe doit comporter au moins 4 caractères";
}
elseif($_POST["TB_Mot_de_Passe"] != $_POST["TB_Confirmation_Mot_de_Passe"])
{
$message = "Votre mot de passe n'a pas été correctement confirmé";
}
elseif(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$",
$_POST["TB_Adresse_Email"]))
{
$message = "Votre adresse e-mail n'est pas valide";
}
else
{
// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
$db = mysql_connect("localhost", "root", "") or die('Error: Could not connect to database');
mysql_select_db("asp-php",$db) or die ('Error: Cannot select database');
// Vérification de l'unicité du nom d'utilisateur et de l'adresse e-mail
$result = mysql_query("
SELECT Nom_Utilisateur
, Adresse_Email
FROM Comptes_Utilisateurs
WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
OR Adresse_Email = '" . $_POST["TB_Adresse_Email"] . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Erreur d'accès à la base de données lors de la vérification d'unicité";
}
else
{
// Si un enregistrement est trouvé
if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{
if($_POST["TB_Nom_Utilisateur"] == $row["Nom_Utilisateur"])
{
$message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"];
$message .= "est déjà utilisé";
}
elseif($_POST["TB_Adresse_Email"] == $row["Adresse_Email"])
{
$message = "L'adresse e-mail " . $_POST["TB_Adresse_Email"];
$message .= "est déjà utilisée";
}
}
}
else
{
// Génération de la clef d'activation
$caracteres = array("a", "b", "c", "d", "e", "f", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$caracteres_aleatoires = array_rand($caracteres, 8);
$clef_activation = "";
foreach($caracteres_aleatoires as $i)
{
$clef_activation .= $caracteres[$i];
}
// Création du compte utilisateur
$result = mysql_query("
INSERT INTO Comptes_Utilisateurs(
Nom_Utilisateur
, Mot_de_Passe
, Adresse_Email
, Date_Inscription
, Clef_Activation
)
VALUES(
'" . $_POST["TB_Nom_Utilisateur"] . "'
, '" . md5($_POST["TB_Mot_de_Passe"]) . "'
, '" . $_POST["TB_Adresse_Email"] . "'
, '" . time() . "'
, '" . $clef_activation . "'
)
");
// Si une erreur survient
if(!$result)
{
$message = "Erreur d'accès à la base de données lors de la création du compte utilisateur";
}
else
{
// Envoi du mail d'activation
$sujet = "Activation de votre compte utilisateur";
$message = "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
$message .= "http://" . $_SERVER["SERVER_NAME"];
$message .= "/activer-compte-utilisateur.php?id=" . mysql_insert_id();
$message .= "&clef=" . $clef_activation;
// Si une erreur survient
if(!@mail($_POST["TB_Adresse_Email"], $sujet, $message))
{
$message = "Une erreur est survenue lors de l'envoi du mail d'activation<br />\n";
$message .= "Veuillez contacter l'administrateur afin d'activer votre compte";
}
else
{
// Message de confirmation
$message = "Votre compte utilisateur a correctement été créer<br />\n";
$message .= "Un email vient de vous être envoyer afin de l'activer";
// On masque le formulaire
$masquer_formulaire = true;
}
}
}
}
}
// Fermeture de la connexion à la base de données
mysql_close($db);
}
}
?>
[quote]Notice: Undefined index: TB_Mot_De_Passe in C:\wamp\www\php\inscription.php on line 24[/quote]
La variable $_POST['TB_Mot_De_Passe'] provenant du formulaire n'est pas correctement envoyée ou assignée.
Poste le code de ton formulaire et du morceau de code php qui récupère le champ mot de passe de ton formulaire.
[quote]Warning: mysql_close(): no MySQL-Link resource supplied in C:\wamp\www\php\inscription.php on line 157[/quote]
C'est simle, tu ouvre une connection à la base sans définir de quelle connexion il s'agit.
De plus, je te conseille d'afficher les erreurs mysql pour savoir ou ça plante quand ça ne fonctionne plus.
[b]$db[/b] = mysql_connect("localhost", "root", "") [b]or die('Error: Could not connect to database')[/b];
mysql_close([b]$db[/b]);
Voici la correction dans ton code :
[php]<?php
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
header("Location: index.php");
}
else
{
// Formulaire visible par défaut
$masquer_formulaire = false;
// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{
// Vérification de la validité des champs
if(!preg_match("/^[A-Za-z0-9_]{4,20}$/", $_POST["TB_Nom_Utilisateur"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères<br />\n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif (!preg_match("/^[A-Za-z0-9_]{4,20}$/", $_POST["TB_Mot_De_Passe"]))
{
$message = "Votre mot de passe doit comporter au moins 4 caractères";
}
elseif($_POST["TB_Mot_de_Passe"] != $_POST["TB_Confirmation_Mot_de_Passe"])
{
$message = "Votre mot de passe n'a pas été correctement confirmé";
}
elseif(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$",
$_POST["TB_Adresse_Email"]))
{
$message = "Votre adresse e-mail n'est pas valide";
}
else
{
// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
$db = mysql_connect("localhost", "root", "") or die('Error: Could not connect to database');
mysql_select_db("asp-php",$db) or die ('Error: Cannot select database');
// Vérification de l'unicité du nom d'utilisateur et de l'adresse e-mail
$result = mysql_query("
SELECT Nom_Utilisateur
, Adresse_Email
FROM Comptes_Utilisateurs
WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
OR Adresse_Email = '" . $_POST["TB_Adresse_Email"] . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Erreur d'accès à la base de données lors de la vérification d'unicité";
}
else
{
// Si un enregistrement est trouvé
if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{
if($_POST["TB_Nom_Utilisateur"] == $row["Nom_Utilisateur"])
{
$message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"];
$message .= "est déjà utilisé";
}
elseif($_POST["TB_Adresse_Email"] == $row["Adresse_Email"])
{
$message = "L'adresse e-mail " . $_POST["TB_Adresse_Email"];
$message .= "est déjà utilisée";
}
}
}
else
{
// Génération de la clef d'activation
$caracteres = array("a", "b", "c", "d", "e", "f", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$caracteres_aleatoires = array_rand($caracteres, 8);
$clef_activation = "";
foreach($caracteres_aleatoires as $i)
{
$clef_activation .= $caracteres[$i];
}
// Création du compte utilisateur
$result = mysql_query("
INSERT INTO Comptes_Utilisateurs(
Nom_Utilisateur
, Mot_de_Passe
, Adresse_Email
, Date_Inscription
, Clef_Activation
)
VALUES(
'" . $_POST["TB_Nom_Utilisateur"] . "'
, '" . md5($_POST["TB_Mot_de_Passe"]) . "'
, '" . $_POST["TB_Adresse_Email"] . "'
, '" . time() . "'
, '" . $clef_activation . "'
)
");
// Si une erreur survient
if(!$result)
{
$message = "Erreur d'accès à la base de données lors de la création du compte utilisateur";
}
else
{
// Envoi du mail d'activation
$sujet = "Activation de votre compte utilisateur";
$message = "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
$message .= "http://" . $_SERVER["SERVER_NAME"];
$message .= "/activer-compte-utilisateur.php?id=" . mysql_insert_id();
$message .= "&clef=" . $clef_activation;
// Si une erreur survient
if(!@mail($_POST["TB_Adresse_Email"], $sujet, $message))
{
$message = "Une erreur est survenue lors de l'envoi du mail d'activation<br />\n";
$message .= "Veuillez contacter l'administrateur afin d'activer votre compte";
}
else
{
// Message de confirmation
$message = "Votre compte utilisateur a correctement été créer<br />\n";
$message .= "Un email vient de vous être envoyer afin de l'activer";
// On masque le formulaire
$masquer_formulaire = true;
}
}
}
}
}
// Fermeture de la connexion à la base de données
mysql_close($db);
}
}
?>[/php]