Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 23/10/2013, à 18: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 fixe - Carte mère-P5Q - Intel® Core™2 Duo CPU E6550 @ 2.33GHz × 2  - GeForce GTS 250/PCIe/SSE2 - Ubuntu 14.04LTS (x32)
SERVEUR - DELL GX-280 - Ubuntu Server 12.04 LTS (x32)
PC portable - ASUS F6V - 3P128C - Ubuntu 14.04LTS (x32)
Téléphone: Android 4.2.2 sur Galaxy S3

Hors ligne

#2 Le 30/10/2013, à 14: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, à 14:55)

Hors ligne

Haut de page ↑