IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Acces denied to username at localhost


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut Acces denied to username at localhost
    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

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Bonjour ,
    Il faut surement remplacer les références "username" et "password" par les tiennes ? du style "root" et pas de mot de passe .
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut
    Bonjour,
    Merci bcp pour la reponse.
    maintenant, je me connecte a la BD mais je recois cette erreur de la fonction mail:

    An error occurred in script 'D:\wamp\www\PHP-TESTS\register.php' on line 68: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
    Date/Time: 6-10-2009 14:25:31
    dans mon fichier php.ini je vois ceci:
    [mail function]
    ; For Win32 only.
    SMTP = localhost
    smtp_port = 25

    ; For Win32 only.
    sendmail_from = you@yourdomain

    ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
    ;sendmail_path =

    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =
    Pouvez vous m'aider?

    Merci

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    2 solutions s'offrent a toi :

    - Installer un serveur de mail en local genre mailenable
    - Configurer le PHP.ini (a l'endroit que tu as cité) pour mettre le smtp de ton FAI (ou autre) pour envoyer tes mails.

    Une petite recherche sur le forum t'aidera , le sujet a été traité des 10aines de fois.
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  5. #5
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Bonjour,
    Pour l'erreur d'envoi de mail, tu n'as pas de serveur smtp installé sur ta config.

    Je te conseille d'aller télécharger sendmail

    C'est un émulateur de la même commande qui existe sur unix.

    Si tu as des problèmes, poses tes questions. J'espère pouvoir t'aider la-dessus même si je ne viens pas souvent sur le forum.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut
    Citation Envoyé par kabkab Voir le message
    Bonjour,
    Pour l'erreur d'envoi de mail, tu n'as pas de serveur smtp installé sur ta config.

    Je te conseille d'aller télécharger sendmail

    C'est un émulateur de la même commande qui existe sur unix.

    Si tu as des problèmes, poses tes questions. J'espère pouvoir t'aider la-dessus même si je ne viens pas souvent sur le forum.
    Merci pour ta reponse. est ce que cet emulateur fonctionne avec WAMPSERVER sur windows?
    Merci

  7. #7
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Sendmail (ou mailenable) fonctionnent avec Wampserveur , ce sont des serveurs smtp et n'interagissent pas directement avec Wampserveur donc aucun soucis.
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

Discussions similaires

  1. MySQL Acces denied for root@localhost
    Par jourzebest dans le forum MySQL
    Réponses: 1
    Dernier message: 12/06/2015, 17h00
  2. [ERREUR MySQL] Acces denied
    Par Alexlesilex dans le forum Requêtes
    Réponses: 5
    Dernier message: 15/05/2006, 14h33
  3. ORA_29289 : directry acces denied
    Par genio dans le forum Oracle
    Réponses: 5
    Dernier message: 12/04/2006, 10h46
  4. #1045 - Access denied for user 'root'@'localhost'
    Par BRAUKRIS dans le forum Installation
    Réponses: 2
    Dernier message: 05/04/2006, 13h23
  5. Réponses: 3
    Dernier message: 14/01/2006, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo