Page 1 sur 6

Connexion base

Posté : 16 juil. 2007, 09:25
par Glaw
Bonjour alors voilà j'ai un code php et je voudrais le modifier car j'ai un message d'erreur qui est :

Code : Tout sélectionner

Warning: mysql_connect(): Accès refusé pour l'utilisateur: 'login'@'@localhost' (mot de passe: OUI) in p:\easyphp1-8\www\site\formulaire\offre.php on line 119 Erreur de connexion Accès refusé pour l'utilisateur: 'login'@'@localhost' (mot de passe: OUI)
Donc voici mon code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>

<?php
$erreur='';

if (isset($_POST["envoyer"]))
{
// le formulaire a ete soumis
	$etat = "erreur";
// erreur est la valeur par defaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
		if (isset($_POST["titre_offre"])) 
		{
			 	$_POST["titre_offre"]=trim(stripslashes($_POST["titre_offre"]));
		}
			if (isset($_POST["descriptif_offre"])) 
		{
			 		$_POST["descriptif_offre"]=trim(stripslashes($_POST["descriptif_offre"]));
		}
	   elseif (empty($_POST["titre_offre"])) 
	    {
// le titre est vide
			 $erreur="L'offre a bien un titre?";
		}	 
			elseif (empty($_POST["descriptif_offre"])) 
		{
// la description est vide
			 $erreur="Saisissez une description...";
		}
		else 
			{
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
			 $etat="ok";
			}
}
else 
{
// --- le formulaire n'a pasete soumis ---
                 $etat="attente";
}
// === fin de traitement des donnes du formulaire =======================================================
?>

<div class="post">
	<h2 align="center" class="post-title">Ajout nouvelle offre d'emploi.</h2>

<?php

if ($etat!="ok")
{
// si le formulaire n'a pas ete soumis, ou soumis avec une erreur
         if ($etat=="erreur")
		 {
//ou  si le formulaire a été soumis avec une erreur
                echo "<p><strong>".$erreur."</strong></p>";
// alors on affiche le message d'erreur
         }
?>

<form method="post" action="

<?php echo $_SERVER["REQUEST_URI"]; ?>">
	<p align="center" class="field"><label for="titre_offre">Le titre de l'offre&nbsp;:<br /></label>
        
		<input type="text" size="40" name="titre_offre" id="titre_offre" value="<?php
        if (!empty($_POST["titre_offre"])) 
		{

                echo htmlspecialchars($_POST["titre_offre"],ENT_QUOTES);
        }
     	?>" 
		/>
	</p>

		<p align="center" class="field"><label for="descriptif_offre">Votre description de l'offre&nbsp;:<br /></label>
        <textarea name="descriptif_offre" id="descriptif_offre" cols="40" rows="15"><?php
        if (isset($_POST["description_offre"])) 
		{

                echo htmlspecialchars($_POST["descriptif_offre"],ENT_QUOTES);
        }
        ?>
		</textarea>
		</p>
		
        <p align="center"><input type="submit" name="envoyer" value="Envoyer" />
		<input type="reset" value="Recommencer" name="recommencer"> 
        </p>
		
</form>

<?php
}
// On commence par récupérer les champs

if(isset($_POST['titre_offre']))      $titre_offre=$_POST['titre_offre'];
else      $titre_offre="";

if(isset($_POST['descriptif_offre']))      $descriptif_offre=$_POST['descriptif_offre'];
else      $description_offre="";

// On vérifie si les champs sont vides
if(empty($titre_offre) OR empty($descriptif_offre))
    {
    echo '';
    }

// Aucun champ n'est vide, on peut enregistrer dans la table
else     
    {
       // connexion à la base
$db = mysql_connect('localhost', 'login', 'password')  or die('Erreur de connexion '.mysql_error());
// sélection de la base

    mysql_select_db('offres',$db)  or die('Erreur de selection '.mysql_error());
    
    // on écrit la requête sql
$sql = "INSERT INTO offres (id_offre, titre_offre, descriptif_offre) VALUES ('','".$_POST["titre_offre"]."','".$_POST["descriptif_offre"]."')"; 
    
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on affiche le résultat pour le visiteur
    echo 'Vos infos on été ajoutées.';

    mysql_close();  // on ferme la connexion
    } 
?> 

</div>

</body>
</html>
Merci d'avance.

Posté : 16 juil. 2007, 09:45
par Genova

Code : Tout sélectionner

mysql_connect('localhost', 'login', 'password')
remplace login et password par le login de connexion et le mot de passe de connexion à ta base de donnée ...

Posté : 16 juil. 2007, 09:58
par d0m
l'erreur vient comme tu dois t'en douter de la connexion à la base de données mysql.

Code : Tout sélectionner

// connexion à la base $db = mysql_connect('localhost', 'login', 'password') or die('Erreur de connexion '.mysql_error());
Utilises tu bien les bon paramètres dans la fonction mysql_connect?
tu travaille sur easyphp, ta base est donc surement en local donc pour l'hôte c'est bien 'localhost'
Si tu as les mots de passe et login par défaut de easyphp ca devrait être :
login : 'root'
password : '' (rien)

Posté : 16 juil. 2007, 10:02
par Glaw
Je vous remercie ça marche...

Il suffisait de remplacer login par root et le mot de passe pareil..

Merci beaucoup beaucoup..

Je profite d'une aide utile pour vous demandez autre chose.

Maintenant j'ai fait une page pour la connexion a ma base qui va me renvoyer a cette page ci-dessus et le problème est que si je rentre un login et un pass invalide ou bien si je ne met rien je suis quand même rediriger sur cette page...

Voici le code :
<?php
// demarre une session
session_start();

// Connection au serveur mySQL

$sql_serveur = "localhost"; // Serveur mySQL
$sql_base = "offres"; // Base de donnees mySQL
$sql_login = "root"; // Login de connection a mySQL
$sql_password = "root"; // Mot de passe pour mySQL

$nom_fichier = "offre.php"; // Nom de votre page
                    // ex: index.php si ce script est sur la page index.php
					
@mysql_select_db($sql_base);
@mysql_connect($sql_serveur, $sql_login, $sql_password) or die("Connection interrompue");


?>

<html>
<head>
<title>Titre</title>
</head>
<body>
<?php

// variables du formulaire
$action = isset($_POST['action']) ? $_POST['action'] : '';  
$login = isset($_POST['login']) ? $_POST['login'] : '';
$pass = isset($_POST['pass']) ? $_POST['pass'] : '';


// si le login et pass on été au préalable cryptés 
// (en md5 dans l'exemple) dans votre base
// vous devez enlever les commentaires sur les 2 lignes suivante

//$login  = md5($_POST['login']);
//$pass   = md5($_POST['pass']);


// Si aucune action, le formulaire est afficher
if ($action !=1 ) 
				{

echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Login: <input type="password" name="login"><br />';
echo 'Passe: <input type="password" name="pass"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>';
                  }

// Sinon
if ($action == 1) 
	{

		$q = mysql_query("SELECT * 
                  FROM user
                  WHERE login='$login' 
                  AND pass='$pass'");
		$n = mysql_num_rows($q);

    if ($n == 1 AND $login != "" AND $pass != "")
       	{
       	// Le login est placé dans la session
       	$_SESSION['login_session'] = $login;
       	// redirection

        // ATTENTION A BIEN METTRE LA PAGE DE REDIRECTION ICI

      	 header("offre.php");
       	}

// Si le login ou le mot de passe sont incorrect
// affiche de nouveau le formulaire

         else	{

echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Login: <input type="password" name="login"><br />';
echo 'Passe: <input type="password" name="pass"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>';

die('<font color="red">Informations incorrectes!');
           		}
	
	}
?>
</body>
</html>

Merci d'avance.

Posté : 16 juil. 2007, 10:22
par d0m
la fonction mysql_connect retourne l'identifiant de connexion MySQL en cas de succès ou FALSE en cas d'échec.

Il te suffit de tester la valeur retournée par mysql_connect. Si elle est à FALSE tu affiches un message d'erreur et tu ne continues pas le reste de ton traitement php, sinon tu affiches ta page normale.

Tu n'es pas obligé de faire 2 pages différentes tu peux tout traiter dans la même selon les cas.

Posté : 16 juil. 2007, 10:29
par Glaw
Non je dois faire 2 pages... pour le site c'est mieux..

Donc si j'ai bien compris je fais
if @mysql_connect = 'TRUE' 
    header('offre.php')
else
   echo 'Veuillez entrer un login et un mot de passe correcte :<br />';
   echo '<form action="'.$nom_fichier.'" method="post">';
   echo '<input type="hidden" name="action" value="1">';
   echo 'Login: <input type="password" name="login"><br />';
   echo 'Passe: <input type="password" name="pass"><br />';
   echo '<input type="submit" value="Connexion">';
   echo '</form>'<br />;

Est-ce que celà pourrait fonctionner ?

Merci d'avance.

Posté : 16 juil. 2007, 10:40
par d0m
Pas tout à fait,

premièrement si tu fais
if @mysql_connect = 'TRUE' 
    header('offre.php')
tu essaies d'affecter la chaine 'TRUE' à la fonction mysql_connect...

Et comme le dit le manuel, mysql_connect renvoie l'IDENTIFIANT DE CONNECTION MYSQL et false si la connection a échouée.
Il faut donc plutot comparer la valeur retournée par la fonction avec FALSE
$connection = @mysql_connect($host,$login,$pass);
if(!connection)
    header('offre.php').
else{
............
}


Posté : 16 juil. 2007, 11:04
par Glaw
Désolé de te dire ca mais ce que tu viens de me donner ne marche pas.. voilà

Si quelqu'un sais comment faire pour que ma connexion ce fasse avec mon pseudo et mon pass...

Merci d'avance.

Posté : 16 juil. 2007, 11:09
par thehawk
enleve les @ qui masque les erreurs ,
Et puis essaye:
$connection = mysql_connect($host,$login,$pass);
if(!connection)
{
    header('offre.php');
}
else{
............
}

Posté : 16 juil. 2007, 11:22
par d0m
Désolé de te dire ca mais ce que tu viens de me donner ne marche pas.. voilà
Si tu veux qu'on t'aide, une remarque plus précise serait bien plus utile. Il y a des erreurs? La 2ème page php est affichée dans tous les cas?

Posté : 16 juil. 2007, 11:32
par Glaw
Désolé mais c'est toujours le même problème... si je ne rentre aucun mot de passe ou bien un faux ca me renvoi quand même sur offre.php.

Revoici le code modifier :
<?php
// demarre une session
session_start();

// Connection au serveur mySQL

$sql_serveur = "localhost"; // Serveur mySQL
$sql_base = "offres"; // Base de donnees mySQL
$sql_login = "root"; // Login de connection a mySQL
$sql_password = "root"; // Mot de passe pour mySQL

$nom_fichier = "offre.php"; // Nom de votre page
                    // ex: index.php si ce script est sur la page index.php
					
@mysql_select_db($sql_base);
@mysql_connect($sql_serveur, $sql_login, $sql_password) or die("Connection interrompue");


?>

<html>
<head>
<title>Titre</title>
</head>
<body>
<?php

// variables du formulaire
$connection = '';
$login = isset($_POST['login']) ? $_POST['login'] : '';
$pass = isset($_POST['pass']) ? $_POST['pass'] : '';


// si le login et pass on été au préalable cryptés 
// (en md5 dans l'exemple) dans votre base
// vous devez enlever les commentaires sur les 2 lignes suivante

//$login  = md5($_POST['login']);
//$pass   = md5($_POST['pass']);


// Si aucune action, le formulaire est afficher

echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Login: <input type="password" name="login"><br />';
echo 'Passe: <input type="password" name="pass"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form><br/><br/>';


$connection = mysql_connect ($sql_serveur, $sql_login, $sql_password);
if(!$connection)
{
    header('offre.php');
}

else	{

echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Login: <input type="password" name="login"><br />';
echo 'Passe: <input type="password" name="pass"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>';


die('<font color="red">Informations incorrectes!');
         }

?>
</body>
</html>

Merci

Posté : 16 juil. 2007, 11:36
par thehawk
Bon alors deux choses ... :
- les @ sont toujours la , pert cette habitude de cacher tes erreurs ... => enleve les
- A quoi sert d'ouvrir 2 connexions a la bdd ... alors qu tu n en ferme aucune ...

Posté : 16 juil. 2007, 11:37
par Glaw
Mais je ne veux pas la fermer, je peux la fermer sur l'autre page non ?

Posté : 16 juil. 2007, 11:41
par thehawk
Oui , tu peux enfin je pense je voi as trop ce que tu veux faire mais bon ... enlve cas meme les accolades et met la ligne mysql_db_select apres mysql_connect ca me piquera moins les yeux

Ensuite quels sont les message d erreur

Posté : 16 juil. 2007, 11:59
par Glaw
Il n'y a pus de message d'erreur mais tout s'affiche c'est-à-dire le formulaire normal ensuite le même formulaire qui doit normalement s'affiche que si je rentre un mauvais pass... et ensuite le message d'erreur information incorrecte reste afficher..

Quel est le problème docteur ?

Merci