Bonsoir.
Je poste encore un message sur le forum pour avoir votre aide concernant la validation de l'inscription par mail avec un champ " cle " (0 mail non validé, 1 validé) et " actif " dans la bdd.
L'espace membre est celui de la rubrique " les comment faire ".
J'ai ajouté dans la bdd les deux champs concernés et j'ai ajouté sur la page inscription le script approprié pour recevoir un mail avec une clé d'activation. L'inscription se passe bien, je reçois le mail et j'active la clé.
Le problème vient de la page index.php, j'ai un message d'erreur concernant session_start(); et le header, du coup plus personne ne peut se connecter à l'espace membre.
Voilà le code :
<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['username']) && !empty($_POST['username'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
include('includes/bbbbbb.php');
include('includes/bbbbbb.php');
// on teste si une entrée de la base contient ce couple login / pass / email
$sql = 'SELECT id FROM bbbbbb WHERE username="'.mysql_escape_string($_POST['username']).'" AND
pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);
$username= $_POST['username'];
$stmt = $db->prepare("SELECT actif FROM bbbbbbb WHERE username like :username ");
if($stmt->execute(array(':username' => $username)) && $row = $stmt->fetch())
{
$actif = $row['actif']; // $actif contiendra alors 0 ou 1
}
// Il ne nous reste plus qu'à tester la valeur du champ 'actif' pour
// autoriser ou non le membre à se connecter
if($actif == '1') // Si $actif est égal à 1, on autorise la connexion
{
echo'<p align="center">Connectez-vous.</p>';
}
else // Sinon la connexion est refusé...
{
echo'<p align="center">Connexion impossible. Veuillez contacter le webmaster du site par le biais du formulaire de contact.</p>';
}
if ($nb == 1) {
$data = mysql_fetch_array($req);
session_start();
$_SESSION['username'] = $_POST['username'];
$_SESSION['id'] = $data['id'];
mysql_free_result($req);
mysql_close();
header('Location: membre.php');
exit();
}
elseif ($nb == 0) {
$erreur = '<p align="center">Compte non reconnu, merci de vérifier vos indentifiants de connexion.</p>';
}
else {
$erreur = '<p align="center">Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.</p>';
}
}
else {
$erreur = '<p align="center">Vous devez remplir tous les champs</p>';
}
}
?>
J'ai posé le code juste après la commande select puis quand j'ai eu le msg d'erreur j'ai mit le code après session_start();, enfin j'ai essayé plusieurs façons mais cela ne fonctionne pas.
Comment faire ?
Merci :))
Bonne soirée.