Bonjour a tous,

Je souhaite ecrire un module d'inscription des utilisateurs avec une possibilite d'activation de compte.
j'ai installe WAMPSERVER: PHP 5.2.8, MySQL 5.1.30 et Apache 2.2.11

P.S.: Root n'a pas de password.

J'ai une BD appelee ch16 et une seule table users definie comme suit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(40) NOT NULL,
email VARCHAR(80) NOT NULL,
pass CHAR(40) NOT NULL,
user_level TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
active CHAR(32),
registration_date DATETIME NOT NULL,
PRIMARY KEY (user_id),
UNIQUE KEY (email),
INDEX login (email, pass)
);
J'ecris un script de connexion a la BD, appele mysqli_connect.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
define ('DB_USER','username');
define ('DB_PASSWORD','password');
define ('DB_HOST','localhost');
define ('DB_NAME','ch16');
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
#OR die ('Could not connect to MySQL: ' . mysqli_connect_error());
if (!$dbc) {
	trigger_error('could not connect to MySQL: ' . mysqli_connect_error());
} else {
	mysqli_set_charset($dbc, 'utf8');
}
?>
Et ensuite j'ai le formulaire d'inscription appele register.php:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
require_once ('includes/config.inc.php');
$page_title = 'Register';
include ('includes/header.html');
 
if (isset($_POST['submitted'])) { // Handle the form.
 
	require_once (MYSQL);
 
	// Trim all the incoming data:
	$trimmed = array_map('trim', $_POST);
 
	// Assume invalid values:
	$fn = $ln = $e = $p = FALSE;
 
	// Check for a first name:
	if (preg_match ('/^[A-Z \'.-]{2,20}$/i', $trimmed['first_name'])) {
		$fn = mysqli_real_escape_string ($dbc, $trimmed['first_name']);
	} else {
		echo '<p class="error">Please enter your first name!</p>';
	}
 
	// Check for a last name:
	if (preg_match ('/^[A-Z \'.-]{2,40}$/i', $trimmed['last_name'])) {
		$ln = mysqli_real_escape_string ($dbc, $trimmed['last_name']);
	} else {
		echo '<p class="error">Please enter your last name!</p>';
	}
 
	// Check for an email address:
	if (preg_match ('/^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$/', $trimmed['email'])) {
		$e = mysqli_real_escape_string ($dbc, $trimmed['email']);
	} else {
		echo '<p class="error">Please enter a valid email address!</p>';
	}
 
	// Check for a password and match against the confirmed password:
	if (preg_match ('/^\w{4,20}$/', $trimmed['password1']) ) {
		if ($trimmed['password1'] == $trimmed['password2']) {
			$p = mysqli_real_escape_string ($dbc, $trimmed['password1']);
		} else {
			echo '<p class="error">Your password did not match the confirmed password!</p>';
		}
	} else {
		echo '<p class="error">Please enter a valid password!</p>';
	}
 
	if ($fn && $ln && $e && $p) { // If everything's OK...
 
		// Make sure the email address is available:
		$q = "SELECT user_id FROM users WHERE email='$e'";
		$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));
 
		if (mysqli_num_rows($r) == 0) { // Available.
 
			// Create the activation code:
			$a = md5(uniqid(rand(), true));
 
			// Add the user to the database:
			$q = "INSERT INTO users (email, pass, first_name, last_name, active, registration_date) VALUES ('$e', SHA1('$p'), '$fn', '$ln', '$a', NOW() )";
			$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));
 
			if (mysqli_affected_rows($dbc) == 1) { // If it ran OK.
 
				// Send the email:
				$body = "Thank you for registering at Handling Itemizatiom Website. To activate your account, please click on this link:\n\n";
				$body .= BASE_URL . 'activate.php?x=' . urlencode($e) . "&y=$a";
				mail($trimmed['email'], 'Registration Confirmation', $body, 'From: billyrose@yahoo.com');
 
				// Finish the page:
				echo '<h3>Thank you for registering! A confirmation email has been sent to your address. Please click on the link in that email in order to activate your account.</h3>';
				include ('includes/footer.html'); // Include the HTML footer.
				exit(); // Stop the page.
 
			} else { // If it did not run OK.
				echo '<p class="error">You could not be registered due to a system error. We apologize for any inconvenience.</p>';
			}
 
		} else { // The email address is not available.
			echo '<p class="error">That email address has already been registered. If you have forgotten your password, use the link at right to have your password sent to you.</p>';
		}
 
	} else { // If one of the data tests failed.
		echo '<p class="error">Please re-enter your passwords and try again.</p>';
	}
 
	mysqli_close($dbc);
 
} // End of the main Submit conditional.
?>
 
<h1>Register</h1>
<form action="register.php" method="post">
	<fieldset>
 
	<p><b>First Name:</b> <input type="text" name="first_name" size="20" maxlength="20" value="<?php if (isset($trimmed['first_name'])) echo $trimmed['first_name']; ?>" /></p>
 
	<p><b>Last Name:</b> <input type="text" name="last_name" size="20" maxlength="40" value="<?php if (isset($trimmed['last_name'])) echo $trimmed['last_name']; ?>" /></p>
 
	<p><b>Email Address:</b> <input type="text" name="email" size="30" maxlength="80" value="<?php if (isset($trimmed['email'])) echo $trimmed['email']; ?>" /> </p>
 
	<p><b>Password:</b> <input type="password" name="password1" size="20" maxlength="20" /> <small>Use only letters, numbers, and the underscore. Must be between 4 and 20 characters long.</small></p>
 
	<p><b>Confirm Password:</b> <input type="password" name="password2" size="20" maxlength="20" /></p>
	</fieldset>
 
	<div align="center"><input type="submit" name="submit" value="Register" /></div>
	<input type="hidden" name="submitted" value="TRUE" />
 
</form>
 
<?php // Include the HTML footer.
include ('includes/footer.html');
?>
Alors je teste mon formulaire register.php dans mon navigateur et j'obtiens l'erreur suivante:


An error occurred in script 'D:\wamp\www\mysqli_connect.php' on line 6: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'username'@'localhost' (using password: YES)
Date/Time: 6-10-2009 12:22:39


Array
(
[GLOBALS] => Array
*RECURSION*
[_POST] => Array
(
[first_name] => Billy
[last_name] => rose
[email] => billyrose@yahoo.com
[password1] => terre
[password2] => terre
[submit] => Register
[submitted] => TRUE
)

[_GET] => Array
(
)

[_COOKIE] => Array
(
[_bsau] => 12445412482182563937
[PHPSESSID] => 0otatp59t14htpc89mlfd4th55
)

[_FILES] => Array
(
)

[page_title] => Register
[_SESSION] => Array
(
)

)

J'ai defini les constantes suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
define('LIVE', FALSE);
 
define ('BASE_URL', 'http://localhost/');
define ('MYSQL', 'D:/wamp/www/mysqli_connect.php');
je ne comprends pas pourquoi il me refuse l'acces a la base de donnees.

je vous remercie d'avance.


Billyrose