Page 1 sur 1

Est il securise??

Posté : 18 déc. 2006, 00:15
par Sefrioui
salut,

Je veux savoir si mon domaine d'identification est securise, et pourquoi il n'affiche pas le message "bienvenue $pseudo" il affiche seulement "bienvenue".
<?php
/*
in varchar(20) NOT NULL, // temps de connexion (A)
   out varchar(20) NOT NULL, // temps de deconnexion (B)
   session varchar(20) NOT NULL, // B-A temps passe en une connexion
*/
include ("include_files/config.php");

isset($_POST['date']) ? $date=$_POST['date']:$date='';
isset($_POST['hour']) ? $hour=addslashes(trim($_POST['hour'])):$hour='';
isset($_POST['pseudo']) ? $pseudo=strtolower(addslashes(trim($_POST['pseudo']))):$pseudo='زائر';
isset($_POST['passwd']) ? $passwd=addslashes(trim($_POST['passwd'])):$passwd='';


if ($pseudo == ''){ 
echo $ErrorPseudo1;
echo $ErrorReturn;
}
elseif ($passwd == ''){ 
echo $ErrorPassword1;
echo $ErrorReturn;
}

elseif (strlen($pseudo)<5){ 
echo $ErrorPseudo2;
echo $ErrorReturn;
}

elseif (strlen($passwd)<5){ 
echo $ErrorPassword2;
echo $ErrorReturn;
}

elseif (strrpos($pseudo,' ') > 0){
echo $ErrorPseudo3;
echo $ErrorReturn;
}

elseif (strrpos($passwd,' ') > 0){
echo $ErrorPassword3;
echo $ErrorReturn;
}

elseif(!eregi("^[a-z]+$", $pseudo)){
echo $ErrorPseudo4;
echo $ErrorReturn;
}
/*
elseif (strspn($pseudo,"abcdefghijklmnopqrstuvwxyz0123456789") < 4) {
echo $ErrorPseudo5;
echo $ErrorReturn;
	}
*/
elseif(!eregi("^[a-zA-Z0-9]+$", $passwd)){
echo $ErrorPassword4;
echo $ErrorReturn;
}
else
{
$connection = mysql_connect("$dbhost", "$dblogin", "$dbpassword") or die ($ErrorConnection);
$db = mysql_select_db($db_name, $connection) or die($ErrorDBase);
$sql = "SELECT pseudo FROM $Idara_table WHERE passwd = '". $passwd ."'"; 
$result = mysql_query($sql,$connection) or die ($ErrorSelect);
$num = mysql_num_rows($result); 
if ($num =='1') 
    { 
$pseudo = $_SESSION['pseudo'];

echo 'Bienvenue' .$pseudo;
?>
<a href="page2.php">page2</a>
<?
echo 'vous pouvez se deconnecter [<a href="index.php?rub=Deconnexion" name="logout">ici</a>]';
        }
		}
    else 
    { 
        echo 'desole<br/>'; 
    include ('login_form.php');
	
	mysql_free_result($result);
	mysql_close($result);
}
	?>

merci

Posté : 18 déc. 2006, 00:23
par Ajoloca
Bonsoir,

Je n'ai pas regardé le code en détail mais j'ai vu l'utilisation de $_SESSION['pseudo'];
parcontre je n'ai pas vu de session_start() ???

Posté : 18 déc. 2006, 00:26
par Cyrano
Petite précision. Sur un plan théorique, déclarer une variable de session va automatiquement lancer la session. Ça reste théorique et ce n'est pas du tout recommandé.

La possibilité, c'est de mettre le session_start() dans le fichier de configuration qui est inclus dès le départ, il m'arrive de faire ce genre de manip, j'écris le session_start() une seule fois pour toute l'application ;)

Posté : 18 déc. 2006, 00:29
par Sefrioui
Je l'ai dans index.php:

<? 
session_start();
//inclure les parametres
include ("include_files/config.php"); 
?> 

Posté : 18 déc. 2006, 00:31
par Ajoloca
Je l'ai dans index.php:

<? 
session_start();
//inclure les parametres
include ("include_files/config.php"); 
?> 
Il faut le faire dans chaque fichier maître

Posté : 18 déc. 2006, 00:35
par Sefrioui
avec les pseudo frames ca donne les erreurs de session

Posté : 18 déc. 2006, 00:39
par Ajoloca
Re,

Il faudrait que tu nous donnes un minimum d'infos quand tu postes, on ne peut pas deviner.

Montre globalement ce que tu fais.
Dans la partie du code que tu montres on voie l'utilisation de $_SESSION mais on ne vois pas son initialisation $_SESSION['qq_chose'] = $qq_chose.

Posté : 18 déc. 2006, 00:46
par Sefrioui
$pseudo = $_SESSION['pseudo'];
j'ai fait l'inverse:
$_SESSION['pseudo'] = $pseudo;

Posté : 18 déc. 2006, 00:54
par Ajoloca
Re,
Et ça donne quoi ?

Posté : 18 déc. 2006, 01:16
par Ajoloca
Re,

Deux petites remarques :
- Tu ne devrais pas utiliser les "short_open_tags" (<?) certains serveurs ne les aceptent pas (et ça devrait être tous).
Utilise <?php

- Concernant ton initialisation de variables.
Ton code
isset($_POST['date']) ? $date=$_POST['date']:$date='';
isset($_POST['hour']) ? $hour=addslashes(trim($_POST['hour'])):$hour='';
isset($_POST['pseudo']) ? $pseudo=strtolower(addslashes(trim($_POST['pseudo']))):$pseudo='زائر';
isset($_POST['passwd']) ? $passwd=addslashes(trim($_POST['passwd'])):$passwd='';
Tu devrais l'écrire comme ceci
$date = isset($_POST['date']) ? $_POST['date']: '';
$hour = isset($_POST['hour']) ? addslashes(trim($_POST['hour'])): '';
$pseudo = isset($_POST['pseudo']) ? strtolower(addslashes(trim($_POST['pseudo']))): 'زائر';
$passwd = isset($_POST['passwd']) ? addslashes(trim($_POST['passwd'])): '';
Pourquoi forcer le pseudo à minuscules ?
Pourquoi interdire l'espace dans le mot de passe?