8796 sujets

Développement web côté serveur, CMS

Bonjour,

j ai une page de login me permet de m 'authentifier au niveau de la base tout est ok.

mon souci est que quand je met mon login et mon mot de passe il me renvoie vers la page de login "admin.php" donc que ca ne fonctionne pas j'ai testé la variable $username sur le deuxième fichier test.php la variable est vide j pense qu'il s'agit d'un probleme de cookie mais je ne vois pas ou merci de m'aider

page de login : admin.php

if (isset($_POST['submit'])) { 
if(!$_POST['username'] | !$_POST['pass']) {
echo "<script language=\"JavaScript\">\n";
echo "window.location.href = 'admin3.php'"; 
echo "</script>";
}

$check = mysql_query("SELECT * FROM matable WHERE username = '".$_POST['username']."'")or die(mysql_error());
//Gives error if user dosen't exist
$check2 = mysql_num_rows($check);
if ($check2 == 0) {
echo "<script language=\"JavaScript\">\n";
echo "window.location.href = 'admin2.php'"; 
echo "</script>";
}
while($info = mysql_fetch_array( $check ))
{
$_POST['pass'] = stripslashes($_POST['pass']);
$info['password'] = stripslashes($info['password']);
$_POST['pass'] = md5($_POST['pass']);
//gives error if the password is wrong
if ($_POST['pass'] != $info['password']) {
echo "<script language=\"JavaScript\">\n";
echo "window.location.href = 'admin4.php'"; 
echo "</script>";
}
else
{
// if login is ok then we add a cookie
$_POST['username'] = stripslashes($_POST['username']);
$hour = time() + 3600;
setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);
//then redirect them to the members area
echo "<script language=\"JavaScript\">\n";
echo "window.location.href = 'test.php'"; 
echo "</script>";
}
}
}
else
{
// if they are not logged in
?>


<?php
include("header2.php"); 
?>

<div id="page">


<div id="loginbox">
<h1>Se connecter</h1>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<table style="padding-left: 20px;">
<tr>
<td style="color:white;">Nom d'utilisateur:</td>
<td style="height: 30px;" class="field"><input type="text" name="username" maxlength="40"></td>
</tr>
<tr>
<td style="color:white;">Mot de passe:</td>
<td style="height: 30px;" class="field"><input type="password" name="pass" maxlength="50"></td>
</tr>
<tr><td colspan="2" align="right">
<input style="margin-right: 65px; margin-top: 5px;" type="submit" name="submit" value="Connexion">
</td></tr>
</table>
</form>
</div>
</div>
<?php
?>
<?php
include("footer2.php"); 
}
?>


et le script2: test.php :

<?php
if(isset($_COOKIE['ID_my_site']))
	{
		$username = $_COOKIE['ID_my_site'];
		$pass = $_COOKIE['Key_my_site'];
		$check = mysql_query("SELECT * FROM matable WHERE username = '$username'")or die(mysql_error());
		while($info = mysql_fetch_array( $check ))
		{
			if ($pass != $info['password'])
				{ 
					header("Location: admin.php");
				}
			else
				{
include("header2.php"); 
?>
<div id="page"> 
<?php
echo '<a href="import.php">Importer un fichier</a>';
echo '<a href="supprimer.php">Supprimer un fichier</a>';
?>
</div>
<?php
include("footer2.php"); 
}
		}
	}
else
	{
	
echo "<script language=\"JavaScript\">\n";
		echo "alert('$username');";
		echo "</script>";
	}
?>


Modifié par stefanelle (22 Oct 2009 - 10:50)
Apparemment il semblerait que ce script ne soit pas du tout sécurisé ...

si quelqu'un connait un script "sécurisé" qui permette d'accéder à certaines pages de mon site en étant authentifié je suis preneur.

Merci à vous
salut

a écrit :
Apparemment il semblerait que ce script ne soit pas du tout sécurisé ...


c'est le moins que l'on puisse dire!

une gestion par session çà te conviendrais? les cookies, je ne les utilises jamais.

j'ai des classes php 5 persos qui ont fait leurs preuves. si oui envoi un message privé, je te ferais un zip, trop de code pour le forum.

un exemple du début


class connex extends resultats {
	function verif_form() {
		if (isset($_POST['valider'])) {
			if (empty($_POST['log']) && !empty($_POST['passe'])) {
				outilsGestion::redirect('Champ login vide! Redirection vers le formulaire dans trois secondes.','index.php');
			}
			if (!empty($_POST['log']) && empty($_POST['passe'])) {
				outilsGestion::redirect('Champ mot de passe vide! Redirection vers le formulaire dans trois secondes.','index.php');
			}
			if (empty($_POST['log']) && empty($_POST['passe'])) {
				outilsGestion::redirect('Formulaire vide! Redirection vers le formulaire dans trois secondes.','index.php');
			}
		}
		
		if(isset($_POST['valider']) && !empty($_POST['log']) && !empty($_POST['passe'])) {
		   $login = trim(htmlentities($_POST['log']));
		   $passe = trim(htmlentities($_POST['passe']));
	       
	       if (get_magic_quotes_gpc()) {//si option active, ne devrait pas mais bon.
		      if (is_string($login))
	              stripslashes($login);
	          if (is_string($passe))
	              stripslashes($passe);
	       }
	       
	       $passe = md5($passe);
	       
	       if (config::DRIVER === 'mysql') {
	           try {
			 		parent::__construct('SELECT log,pas FROM utilisat WHERE log='.$login.' AND pas='.$passe,config::DRIVER);
					$req = parent::traite_resultats();
			 		$nb = parent::nb_resultats();
		   	   } catch (Exception $e) {
				   echo $e->getMessage();
		       }
	       }
	       
	       if (config::DRIVER === 'pgsql') {
	           try {
			 		parent::__construct('SELECT log,pas FROM utilisat WHERE log='.$login.' AND pas='.$passe,config::DRIVER);
					$req = parent::traite_resultats();
			 		$nb = parent::nb_resultats();
		   	   } catch (Exception $e) {
				   echo $e->getMessage();
		       }
	       }
           
           if ($nb == 0) {
           	   outilsGestion::redirect('Pas de login correspondant! Redirection vers le formulaire dans trois secondes.','index.php');
           }
           else {
           	 session_regenerate_id();//apres identification correcte on regenere l'id
             $_SESSION['login'] = $login;//enregistrement en session
             $_SESSION['ip'] = outilsGestion::recup_ip();
             unset($_SESSION['compteur']);//maintenant inutile
             echo '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">'.chr(10);
             echo '<html xmlns="http://www.w3.org/1999/xhtml\" xml:lang="fr-FR">'.chr(10);
             echo '<head>'.chr(10);
             echo '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1\" />'.chr(10);
             echo '<meta http-equiv="Content-Language" content="fr-FR" dir="ltr" />'.chr(10);
             echo '<link rel="stylesheet" rev="stylesheet" type="text/css" href="../css/explore.css" />'.chr(10);
             echo '</head><body>'.chr(10);
             echo '<p style="margin: 20px;">Administrateur : '.$login.' IP : '.$_SESSION['tstad'].'<br /><br />';
             echo 'Vous &ecirc;tes correctement identifi&eacute;(&eacute;e).<a href="gest.php">Index de la gestion</a></p>'.chr(10);
             echo '</body></html>';
           }
		}
	}
}