Créer un espace membre, convertir mysql postgresql
Bonjour à tous,
Dans le but de créer un site internet, je dois réaliser un espace membre.
Voilà notre table membre en SQL :
- Code: Tout sélectionner
CREATE TABLE membre (
id int(11) NOT NULL auto_increment,
login text NOT NULL,
pass_md5 text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
Pour l'inscription :
- Code: Tout sélectionner
<?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 {
$db = new PDO("pgsql:host='localhost';dbname='referentiel_competence22';port='5432'; user='l3mass22'; password=''");
echo 'Connexion OK';
// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*) FROM PERSONNE WHERE login="'.pg_escape_string($_POST['login']).'"';
$req = pg_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.pg_result_error());
$data = pg_fetch_array($req);
if ($data[0] == 0) {
$sql = 'INSERT INTO PERSONNE VALUES("", "'.pg_escape_string($_POST['login']).'", "'.pg_escape_string(md5($_POST['pass'])).'")';
pg_query($sql) or die('Erreur SQL !'.$sql.'<br />'.pg_result_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 à l'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>
Membre :
- Code: Tout sélectionner
<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>
<html>
<head>
<title>Espace membre</title>
</head>
<body>
Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> !<br />
<a href="deconnexion.php">Déconnexion</a>
</body>
</html>
Index :
- Code: Tout sélectionner
<?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']))) {
$db = new PDO("pgsql:host='localhost';dbname='referentiel_competence22';port='5432'; user='l3mass22'; password=''");
echo 'Connexion OK';
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM PERSONNE WHERE login="'.pg_escape_string($_POST['login']).'" AND pass_md5="'.pg_escape_string(md5($_POST['pass'])).'"';
$req = pg_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.pg_result_error());
$data = pg_fetch_array($req);
pg_free_result($req);
pg_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 à l'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>
Deconnexion :
- Code: Tout sélectionner
<?php
session_start();
session_unset();
session_destroy();
header('Location: index.php');
exit();
?>
Voilà c'est juste enorme, j'ai bcp de mal...Il faudrait convertir ça de mysql en postgre sql, ou alors le tester mais je peux pas
le faire chez moi.
Quelqu'un pourrait m'aider ?
Merci d'avane