Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/10/2013, à 19:14

legion31000

[MySQL]-[PHP]-Espace membre pour mon serveur

Bonjour, je planche depuis quelques jours sur l'ajout d'un espace membre à mon site.
J'ai récupéré plusieurs code php/MySQL sur le net.

Comme celui-ci
http://www.lephpfacile.com/howto/10-com … -en-php#h7

J'arrive à des pages plutôt propre, mais la connexion vers la base de données, c'est nouveau pour moi, donc j'ai du oublier quelques trucs.

Voici à quoi ça ressemble pour le moment:
index.php

<?php

// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

$base = mysql_connect ('localhost', 'mysql_user', 'mysql_password');
mysql_select_db ('site_web', $base);

// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM membre WHERE
login="'.mysql_escape_string($_POST['login']).'" AND
pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

mysql_free_result($req);
mysql_close();

// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>

<html>
<head>
<title>Accueil</title>
</head>

<body>
Connexion espace membre :<br />
<form action="index.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>
<?php

if (isset($erreur)) echo '<br /><br />',$erreur;
?>

</body>
</html> 

insciprtion.php

<?php

// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
// on teste les deux mots de passe
if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
else {
$base = mysql_connect ('localhost', 'mysql_user', 'mysql_password');
mysql_select_db ('site_web', $base);

// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

if ($data[0] == 0) {
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.md5(mysql_escape_string($_POST['pass'])).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}
else {
$erreur = 'Un membre possède déjà ce login.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>

<html>
<head>
<title>Inscription</title>
</head>

<body>
Inscription espace membre :<br />
<form action="inscription.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
<input type="submit" name="inscription" value="Inscription">
</form>
<?php

if (isset($erreur)) echo '<br />',$erreur;
?>

</body>
</html> 

Et du coté de la base de données j'ai ça:

CREATE TABLE IF NOT EXISTS `membre` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` text NOT NULL,
  `pass_md5` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Je pense qu'il a y un problème de droit ou alors de code, je ne suis pas sur de ça:

$base = mysql_connect ('localhost', 'mysql_user', 'mysql_password');
mysql_select_db ('site_web', $base);

ma base de donnée se nomme: site_web
et la table se nomme: membre

Pour le moment dans la partie insciprtion j'ai le retour d'erreur suivant:

Erreur SQL !
SELECT count(*) FROM membre WHERE login="test"
No database selected

Merci pour votre retour sur ce sujet.


PC : AMD FX(tm)-8320 Eight-Core Processor × 8 - Motherbord ASUS H81-Plus ATX - 8Go Ram DDR3 - GeForce GTX 750 Ti/PCIe/SSE2 - Archlinux
Notebook : Asus F6V-3P145CS 13,3", 3072 Mo, ATI Mobility™ Radeon™ HD3470 HyperMemory™ - Archlinux
Serveur: FUJITSU PRIMERGY TX150 S6 - Ubuntu 14.04 LTS
http://archlinux31.ddns.net

Hors ligne

#2 Le 30/10/2013, à 15:47

web

Re : [MySQL]-[PHP]-Espace membre pour mon serveur

Bonjour, essaye de te connecter comme ça :

<?php
// configuration
$host = "...";	// serveur sql
$user = "...";	// login sql
$mdp  = "...";	// mot de passe sql
$base = "...";	// nom de la base de donnée

// connexion
$connect = mysql_connect($host, $user, $mdp); 
$sel = mysql_select_db($base, $connect);
?>

Dernière modification par web (Le 30/10/2013, à 15:55)

Hors ligne