Script php de sécurisation

Résolu
Bonjour,
J'ai crée un script php pour sécurisé des pages, mais il y a quelques défauts...

<?php
session_start(); // On démarre la session AVANT toute chose

if($_POST['name']!="")
{
$_SESSION['name'] = $name;
$_SESSION['mot_de_passe'] = $mot_de_passe;
}

/*En effet $_SESSION['name'] sera égal à $name et $_SESSION['mot_de_passe'] sera égal à $mot_de_passe*/
/*que si $_POST['name'] n'est pas égal à rien*/
// Maintenant que le session_start est fait, on peut taper du code HTML

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

	if ($mot_de_passe == "motdepass1" & $name == "Pseudo1") 
		{
		@header("Location: P.php");
		}
	elseif ($mot_de_passe == "motdepass2" & $name == "Pseudo2") 
		{
		@header("Location: C.php");
		}
	else 
		{
		
			?>
<!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>
  <title>Connexion au site</title>
  <style type="text/css">
  body{
  background: black;
  text-align: center;
  }
  table{
   color: red;
  }
  </style>
 </head>
 <body>
 <form action="" method="post">
 <table width="225" border="1" cellpadding="3" align="center">
 <tr><td colspan="2"><center><font
 size="+2"><b>Connexion</b></font></center></td></tr>
 <tr><td>Login : </td><td><input type="text" name="name"></td></tr>
 <tr><td>Mot de Passe : </td><td><input type="password" name="mot_de_passe" /> </td></tr>
 <tr><td colspan="2" align="center"><input type="submit" value="Valider" /></td></tr>
 </table>
 </form>
<div style="background-color: #767684; color: #FFDD00; font: bold, 14px, Arial;">
<?php include ('include/coyright.html'); ?>
</div>
 </body>
</html>
<?php
		}
?>


J'aimerais que cela produise les actions suivantes :
"-Si le pseudo est Pseudo1 ET que le mot de passe est motdepass1, alors le visiteur est redirigé vers P.php,
-Si le pseudo est Pseudo2 ET que le mot de passe est motdepass2, alors il est redirigé vers C.php"

Deuxième bug : l'include ne marche pas :s

Merci pour votre aide qui me sera précieuse...
--
 "S'il on payait un impôt sur la connerie, alors l'état s'auto-financerait"
 "La colère envers autrui reflète toujours la tristesse interne"
 "La théorie, c'est quand on sait tout mais que rien ne marche, et la pratique c'est quand tout marche mais qu'on ne sait pas pourquoi."
Configuration: Windows XP
Firefox 3.0.1

12 réponses

  1. le symbole du ET logique c'est && pas & donc
    if ($mot_de_passe == "motdepass1" && $name == "Pseudo1") 
    elseif ($mot_de_passe == "motdepass2" && $name == "Pseudo2") 
    pour ton include ne mets pas d'espace entre include et la premiere parenthese
    <?php include("include/coyright.html"); ?>
    1. Ok merci a vous deux, je teste et je repost les changements plus tard :)
      1. Bon ça marche pour Pseudo1, mais pas pour Pseudo2.

        De plus, voici l'erreur pour l'include :
        Warning: main(http://h4ck.n3t.free.fr/include/coyright.html) [function.main]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /mnt/102/sdb/f/b/h4ck.n3t/Chat php/index.php on line 60
        
        Warning: main() [function.include]: Failed opening 'http://h4ck.n3t.free.fr/include/coyright.html' for inclusion (include_path='/mnt/102/sdb/f/b/h4ck.n3t/include:.:/usr/php4/lib/php') in /mnt/102/sdb/f/b/h4ck.n3t/Chat php/index.php on line 60
        


        Merci de votre aide...
        1. apparement il trouve pas ton fichier...
          verifie que le chemin que tu as donné est le bon et qu'il est bien ecrit
          1. Oui c'était ça merci ^^

            Pour ce qui est de la session, qui a une solution ?

            Je répète : le couple "Pseudo1/motdepass1" marche mais le couple "Pseudo2/motdepass2" est ignoré :(

            Encore une chose, j'aimerais que sur la page de destination (C.php et P.php) il y est un code permettant de vérifié si la session est bien démarrée, et si les infos rentrées sont bonnes... J'ai écrit ceci :

            <?php
            session_start(); // On démarre la session AVANT toute chose
            	if ($mot_de_passe == "" OR $name == "") 
            		{
            		@header("Location: index.php");
            		}
            	elseif ($mot_de_passe == "motdepass1" && $name == "Pseudo1") 
            		{
            ?>
            <html>
            <!-- La page P.php -->
            </html>
            <?php
            		}
            ?>
            


            est-ce bon ?

            Merci pour vos réponses...
            1. c'est normal que le couple "pseudo2/mot de passe 2" marche pas tu as oublié l'espace entre else et if
              else if ($mot_de_passe == "motdepass2" && $name == "Pseudo2")
              pour ta deuxieme question le symbole du OR c'est ||
              if ($mot_de_passe == "" || $name == "") 
              et c'est pareil il manque un espace dans ton else if
              else if ($mot_de_passe == "motdepass1" && $name == "Pseudo1") 
              1. @DalidaC'est pour ça que je ne comprends pas non plus :s
              2. Contributeur
                @hack_netet dans tes modifs tu n'as touché qu'à ça ?

                tu n'avais pas oublié de fermer une accolade en plus ? ou quelque chose du même genre…
              3. Contributeur
                @hack_netpeux tu recoller le bout de script une fois modifié (celui qui fonctionne quoi !) stp ?
            2. Oui, mais la balise elseif existe aussi, dans quelle cas on l'utilise alors ?

              En tout cas merci pour ta réponse, je test et je repost...
              1. Contributeur
                re,

                je reprends en bas pour avoir de la place.

                je ne comprends pas d'où sort "$name".

                tu affectes la valeur de "$name" à la variable de sessions "$_SESSION['name']" mais "$name" elle-même n'est jamais définie et tu n'utilises pas le retour du formulaire à savoir "$_POST['name'].
                	if($_POST['name']!="")
                	{
                		$_SESSION['name'] = $name;
                		$_SESSION['mot_de_passe'] = $mot_de_passe;
                	}
                1. Le truc, c'est que ça marche...

                  Apés, sur les pages sécurisé, je fais appel à la session, et en titre (<title>) et en titre (<h1>) je met
                  <?php echo $name; ?>
                  et ca affiche le pseudo :)

                  Le "$name" sort du formulaire si tu regarde bien ;)

                  A+
                  1. Contributeur
                    le problème c'est que pour effectivement sortir du formulaire il faudrait que tu ailles le chercher dans "$_POST['name']" ce qui n'est pas le cas.

                    tu n'aurais pas "register_global=ON" dans ton "php.ini" ?

                    ce n'est pas très conseillé, mais bon si ça fonctionne et te convient je te souhaite bonne soirée !
                2. Je m'y connais pas en php. Tout ce que je sais, c'est que j'ai fait un script et des pages sécurisées avec l'aide de mype, et qu'elles marchent. Aucuns autres fichiers, aucunes autres config...

                  Bonne nuit :)