8797 sujets

Développement web côté serveur, CMS

Bonjour à tous voilà je ne m'y connait pas trop trop en php et html j'ai quelques bases. Je dois faire un site avec un espace de connexion. J'ai donc creer une page de connexion que voici

<?php
session_start();

if (isset($_POST['mot_de_passe'])) {
    
    $mot_de_passe = $_POST['mot_de_passe'];
	
	
}
else 
{
    $mot_de_passe = ""; 
	$_SESSION="";
}
 
if ($mot_de_passe == "kangourou") 
{

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Connexion</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
        
        <p>
Vous etes connect&eacute; en tant que membre
        </p>
    </body>
</html>
<?php
}
else 
{

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Page protégée par mot de passe</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>

<form action="connexion.php" method="post">

<input type="password" name="mot_de_passe" value="passe" /> <input type="submit" value="Valider" />

</form>

    </body>
</html>
<?php
} // Fin du else
// Fin du code [smile]
?>




j'inclu ensuite cette page dans une div de ma page principale à l'aide de la fonction include. Lorsque j'ouvre ma page principale tout fonctionne cependant lorsque je me connecte en entrant le bon mot de passe et en appyuant sur valider au lieu que ma page de connexion se recharge dans ma div prevu cela me charge une nouvelle page contenant seulement les infos de ma page connexion. Le probléme est que j'aurai voulu charger ma page connexion à l'interieur de ma div et non sur une nouvelle page. Voilà je vous demande de l'aide.Voici aussi le code de ma page principale qui n'est biensur pas encore fini.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Page type</title>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />

</head>
<body>


<div class="div_principale">
<div class="banniere">
</div>
<div class="rech_rapide">
</div>
<div class="connexion">
<?php 
include("connexion.php");
?>
</div>

<div class="menu1">
<?php
include("menu.php");
?>

</div>
<div class="contenu">
</div>
</div>

</body>
</html 

Modifié par anthonydb1 (03 Oct 2008 - 19:30)
Hello anthonydb1 et bienvenue Smiley smile ,

En tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace).

upload/1-code.gif

Je te remercie par avance de bien vouloir éditer ton message afin de le rendre conforme à cette règle. Smiley cligne

D'ailleurs, je rappelle que le lien qui apparaît en bandeau tout en haut du forum ("Nouveau sur le forum ?...") est important. Il contient des pistes de recherche, des indications sur les règles de vie de la communauté, etc.
Il serait donc courtois de ta part de bien vouloir en prendre connaissance.

Bonne continuation Smiley smile
Bonjour

Puisqu'apparemment tu sais modifier/éditer les posts c'est le moment de recommencer en mettant ton code entre les balises recommandées : [ code ] et [ / code ] mais sans les espaces. Après on verra plus clair Smiley smile

(well, 25 secondes séparent les vrais pros des apprentis...)
Modifié par Arsene (03 Oct 2008 - 18:08)
Arsene a écrit :

(well, 25 secondes séparent les vrais pros des apprentis...)
Le copié/collé d'un message type y est sans doute aussi pour quelque chose ! Smiley ravi
Ben voui, l'arme fatale quoi.

Sinon pour anthony, en attendant qu'il edite son code je pourrais dire que d'abord sa condition if $mot_de_passe =="kangourou" ne va pas produire grand'chose sans un truc genre echo (je suppose que c'est ce qui est attendu ?) en remplacement de la fermeture ?>... et qu' il devrait supprimer les entêtes puisque l'include récupérera celles de la page.


if ($mot_de_passe == "kangourou")
{
echo '<p>
Vous etes connecté en tant que membre
</p>';
}
else
{ => idem pour le form
Je sais que mon if ne va pas produire grand chose mais c'était pour tester si le if se faisait bien que j'ai mis un echo banal.Moi mon souci est enfait de pouvoir lorsque je clique sur le bouton envoyer de ma page de connexion (se trouvant dans le div de la fenetre principale) que le résultat s'affiche dans ce meme div et non dans une fenetre avec seulement le résultat. Ps: pour le code désolé je savais pas voilà qui est fait.
C'est normal puisque ton formulaire pointe vers connexion.php alors que ça devrait être vers ta page principale qui contient les include.

Par ailleurs et comme te l'a déjà indiqué Arsene il faut enlever les éléments DOCTYPE, HEAD et BODY de ta page connexion.php : la fonction include ne fonctionne pas comme un FRAME mais ressemble à un copié/collé. Du coup tu te retrouves avec 2 DOCTYPE, 2 HTML, etc...

En passant la fonction session_start doit être utilisée avant toute écriture de code html. Elle devrait donc se trouver au tout début de ta page principale et pas dans un code qui est inclus.

A+
Merci pour toutes ces réponses mais dois donc enlever mes 2 doctype ainsi et faire rediriger vers ma page d'accueil. De plus je ne comprend pas au sujet de ma fonction session start je ne peux pas la mettre au tout début de ma page principale car je ne recupére la variable qui m'interesse au niveau de connexion.php
Modifié par anthonydb1 (03 Oct 2008 - 22:07)
Tu pourrais faire quelque chose comme ça :

index.php
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Connexion</title>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
</head>
<body>
...
<?php 
include("connexion.php");
?>
...
</body>
</html>

connexion.php
<?php
$mot_de_passe = !empty($_POST['mot_de_passe']) ? htmlspecialchars($_POST['mot_de_passe']) : '';
if ($mot_de_passe == "kangourou") 
{
	$_SESSION['connected_ok']=true;
?>
<p>Vous etes connecté en tant que membre</p>
<?php
}
else 
{
	unset($_SESSION);
?>
<form action="index.php" method="post">
	<p>
		<label for="mot_de_passe">Mot de passe : </label>
		<input type="password" name="mot_de_passe" id="mot_de_passe"  /> 
		<input type="submit" value="Valider" />
	</p>
</form>
<?php } ?>

Modifié par Heyoan (03 Oct 2008 - 22:40)
Merci c'est super de me donner toute ces idées maintenant j'ai un autre petit souci c'est une fois la connexion établi j'ai mi en dessous de mon echo"vous etes connecte..." un bouton de déconnexion pour détruire la session. Or je voudrais savoir s'il existe une fonction permettant de dire qu'on effectue certaines taches seulement si on appuie sur le bouton. Par exemple on fait un destroy session () seulement si j'appuie sur déconnexion. voici le nouveau code
 
<?php


if (isset($_POST['mot_de_passe'])) {
    
    $mot_de_passe = $_POST['mot_de_passe'];
	
	
}
else 
{
    $mot_de_passe = ""; 
	
}
$_SESSION['passe']="$mot_de_passe"; 
if ($mot_de_passe == "kangourou") 
{

?>

    </head>
    <body>
<?php        
        
echo "Vous etes connect&eacute; en tant $mot_de_passe"; 
   ?>  
   <form action="page_type.php" method="post">
    <input type="submit" value="Deconnexion" />   
   <?php
    $_SESSION = array();
	session_destroy();
	?>

    </body>
</html>
<?php
}
else 
{

?>

        <title>Page protégée par mot de passe</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>

<form action="page_type.php" method="post">

<input type="password" name="mot_de_passe" value="passe" /> <input type="submit" value="Valider" />

</form>

    </body>
</html>
<?php
} // Fin du else
// Fin du code 
?>


Personne pour me venir en aide ??
Modifié par anthonydb1 (04 Oct 2008 - 11:33)
Hello,

Si tu veux que ton code
<?php
$_SESSION = array();
session_destroy();
?>
ne soit executé que quand tu cliques sur le bouton submit de ton form qui pointe vers page_type.php alors il faut que tu mettes ce code dans page_type.php.

Il ne faut pas oublier que le code PHP est executé coté serveur, donc avant toute interaction avec l'utilisateur. Si tu veux réagir à ses actions, il te faut le faire dans une nouvelle page.