Login - Logout [ PHP ]

Résolu/Fermé
LelLex Messages postés 1628 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 5 septembre 2012 - 11 juin 2009 à 22:09
kalgoorlie Messages postés 86 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 15 août 2010 - 14 juin 2009 à 17:38
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 ......................
A voir également:

3 réponses

lightner Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 11 août 2011 4
14 juin 2009 à 16:49
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
kalgoorlie Messages postés 86 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 15 août 2010
14 juin 2009 à 17:17
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
lightner Messages postés 45 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 11 août 2011 4
14 juin 2009 à 17:25
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
kalgoorlie Messages postés 86 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 15 août 2010
14 juin 2009 à 17:38
merci je vais essayer je te tiens au courant
0