Login - Logout [ PHP ]

Résolu
Bonjour à tous,

MON PROBLÈME :

Je m'en remet à vous car je suis littéralement bloqué, désespéré, etc.

Sur mon site, je souhaiterais que les membres, (donc les visiteurs qui se sont inscrits), puissent se connecter et se déconnecter à souhait afin d'accéder aux contenues dont ils ont le droit d'accès !

A force de chercher et de demander, j'ai entendue parler de : Cookies ; $_SESSION[] ; session_start ; session_destroy ; etc...

Mon problème est que le membre qui souhaite se connecter ou se déconnecter, ne peut faire ni l'un , ni l'autre !!
( C'est horriblement frustrant ! )

Il y a, j'en suis certain, des incohérences dans mon code PHP car je n'utilise pas de : Cookies et/ou $_SESSION[] car je ne sais pas comment les intégrer.

MES PAGES :

- Je souhaite que l'utilisateur puisse se connecter sur la page "connexion.php".
L'utilisateur entre donc, dans un formulaire, son "Pseudo" (=Login) et son "Mot de passe" (=Password) puis clique sur "Valider" (=Connexion).
- Il est donc redirigé vers la page "connexion_cible.php". Cette page va inscrire soit, "connexion réussi" soit, "vous devez remplir tout les champs" ou soit, "le pseudo et le mot de passe ne correspondent pas".
- Bien sur quand l'utilisateur se connecte, j'aimerais qu'il le reste jusqu'à quitter son navigateur ou se déconnecter à la page "deconnexion.php".

MES CODE PHP :

[ connexion.php ]

<?php
if (session_start() == true)
{

?>
<h6>Identification</h6>
<p>Vous êtes déjà connecté.</p>
<?php
		
}
else
{

?>
<h6>Identification</h6>
<form action="connexion_cible.php" method="post" style="margin:20px 50px 0 50px;;">
<p style="padding:0px;">Pseudo :</p>
<input type="text" name="pseudo" style="width: 110px" />
<p style="padding:0px;">Mot de passe :</p>
<input type="password" name="pass" style="width:110px;" />
<input style="margin-top:10px;" type="submit" value="Connexion"  />
</form>
<?php
		
}
?>	


[ connexion_cible.php ]

	
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("etudiantsdefrance");

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['pass']))
{
	
extract($_POST);
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select pass2 from membres where pseudo='".$pseudo."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);

	if($data['pass2'] != $pass)
	{

	?>  
  	<h6>Problème avec l'identification</h6>
	<p>Mauvais Pseudo / Mot de passe. Merci de recommencer <a href="connexion.php">ici</a>.</p>
	<?php
		
	}
  	else
  	{

	session_start();
	?>  
  	<h6>Identification réussi</h6>
	<p>Dorénavant vous êtes connecté.</p>
	<?php
  	
	}   
	
}
else
{
  
?>  
  <h6>Problème avec l'identification</h6>
<p>Vous avez oublié de remplir un champ. Merci de recommencer <a href="connexion.php">ici</a>.</p>
<?php

}
?>


[ deconnexion.php ]

<?php
session_start();	
session_destroy();
	
if(session_start() == true)
{

echo '<p>Problème</p>';
		
}
else
{	
			
?>
<h6>Déconnexion réussi</h6>
<p>Dorénavant vous êtes déconnecté.</p>
<?php
	
}
?>	


Je souhaite désormais remercier tous ceux et celles qui auront pris la peine de tout lire, de m'aider, de corriger mes erreurs et de m'orienter sur la bonne voie !
JE VOUS REMERCIE INFINIMENT ......................
Configuration: Windows Vista
Internet Explorer 8 (dernière version)
Mozilla Firefox 3.0.7 (dernière version)

3 réponses

  1. Excuse moi de ne te repondre que maintenant mais le probleme vient des sessions
    session_start() doit figurer au début de chaque page mais ce n'est pas une variable
    il faut que tu mettre
    session_start() en haut de la page
    et ici
    else
    {

    session_start();
    ?>
    <h6>Identification réussi</h6>
    <p>Dorénavant vous êtes connecté.</p>
    <?php

    }
    tu met
    else
    {

    $_SESSION['connecte'] == TRUE
    ?>
    <h6>Identification réussi</h6>
    <p>Dorénavant vous êtes connecté.</p>
    <?php

    }

    et a chaque fois que tu veut mettre quelque chose reservé aux inscrits tu met if($_SESSION['connecte'] == TRUE){affiche}else{se connecter}
    pour la deconnection il te suffit de mettre session_destroy()
    voila j'espere que tu y arrivera
    si tu a une question pose la mais ne te plaint pas que c'est trop lent. Personne n'est a ton service
    0
    1. Bonjour,
      j'ai installé un forum sur mon site je veux changer l'url a laquelle la fonction login redirect renvoie les internautes qui se connectent. Sur le formulaire, la forme d'action appele le fichier "login.php" et quand on se connecte le login.php fait appelle a la fonction "login redirect" qui est defini dans un autre fichier "functions_login.php".je voulais changer l'url de redirection c'est a dire la page a laquelle l'internaute est dirigé lorsque la connection réussit.Voici ci dessous le script de la fonction login redirect: dites moi ce qu'il fuat changer si je veux par exemple que la recdirection dirige l'internaute vers une page: "monsite/bienvenue.php"Merci de me repondre meme si vous n'en savez pas trop.Petit a petit on cronstruit.
      // ###################### Start do login redirect #######################
      function do_login_redirect()
      {
      global $vbulletin, $vbphrase;

      if (
      $vbulletin->url == 'login.php'
      OR $vbulletin->url == $vbulletin->options['forumhome'] . '.php'
      OR strpos($vbulletin->url, 'do=logout') !== false
      )
      {
      $vbulletin->url = $vbulletin->options['forumhome'] . '.php' . $vbulletin->session->vars['sessionurl_q'];
      }
      else
      {
      $vbulletin->url = fetch_replaced_session_url($vbulletin->url);
      $vbulletin->url = preg_replace('#^/+#', '/', $vbulletin->url); // bug 3654 don't ask why
      }

      $temp = strpos($vbulletin->url, '?');
      if ($temp)
      {
      $formfile = substr($vbulletin->url, 0, $temp);
      }
      else
      {
      $formfile =& $vbulletin->url;
      }

      $postvars = $vbulletin->GPC['postvars'];

      ($hook = vBulletinHook::fetch_hook('login_redirect')) ? eval($hook) : false;

      // recache the global group to get the stuff from the new language
      $globalgroup = $vbulletin->db->query_first_slave("
      SELECT phrasegroup_global, languagecode, charset
      FROM " . TABLE_PREFIX . "language
      WHERE languageid = " . intval($vbulletin->userinfo['languageid'] ? $vbulletin->userinfo['languageid'] : $vbulletin->options['languageid'])
      );
      if ($globalgroup)
      {
      $vbphrase = array_merge($vbphrase, unserialize($globalgroup['phrasegroup_global']));

      global $stylevar;
      if ($stylevar['charset'] != $globalgroup['charset'])
      {
      // change the character set in a bunch of places - a total hack
      global $headinclude;

      $headinclude = str_replace(
      "content=\"text/html; charset=$stylevar[charset]\"",
      "content=\"text/html; charset=$globalgroup[charset]\"",
      $headinclude
      );

      $stylevar['charset'] = $globalgroup['charset'];
      $vbulletin->userinfo['lang_charset'] = $globalgroup['charset'];

      exec_headers();
      }

      $stylevar['languagecode'] = $globalgroup['languagecode'];
      }

      eval(print_standard_redirect('redirect_login', true, true, $vbulletin->userinfo['languageid']));
      }
      0
      1. Alors je ne m'y connait pas du tout en poo donc je vais éviter d'utiliser ce code et t'en proposer un autre a mettre a la place de la fonction do_login_redirect()
        function do_login_redirect()
        {
        header("Location: 'monsite/bienvenue.php'");
        }
        voila normalement ca devrait marcher
        si autre question n'hesitez pas
        0
    2. merci je vais essayer je te tiens au courant
      0