[PHP] Probleme mise en place de session

Probleme mise en place de session [PHP] - PHP - Programmation

Marsh Posté le 14-04-2008 à 22:17:17    

Bonjour,
 
Je suis débutant en php et j'essaye de mettre en place un système de compte pour les utilisateurs.  
 
Les fichiers concernés par la session sont dans un meme dossier et sont index.php, traitement.php et menud.php
 
1: voila le code de ma page traitement.php( dans mon formulaire j'ai mis action="traitement.php). Le probleme c'est que j'ai pas l'impression qu'il marche beaucoup :). Comment faire pour qu'après avoir logged=1 ça me redirige vers la page d'accueil? Y'a t'il une erreur dans le code? Dois-je mettre un session_start(); en haut de la page traitement ?
 

Citation :

<?php
 
mysql_connect("*****", "*****", "****" );
mysql_select_db("****" );
 
if (isset($_POST)&& !empty($_POST['pseudo']) && !empty($_POST['mdp']))
{
 
$monlogin = $_POST['pseudo'];
$monpass = $_POST['mdp'];
 
$res = mysql_query("SELECT pseudo, mdpsql FROM comptes" );
$infos = mysql_fetch_array($res);
 
if ( !strcmp($infos[login],$monlogin) && !strcmp($infos[pass],$monpass) )
{
$_SESSION[‘page_count’] = 0 ;
$_SESSION[‘name’] = $infos[prenom] ; //récupéré depuis la base de données
$_SESSION[‘author_id’] = $infos[id] ; //récupéré depuis la base de données
$_SESSION[‘logged’] = 1
}
 
mysql_close();
?>


 
2: Ici on est dans index.php qui est ma page d'accueil donc j'aimerai que si $_SESSION[‘logged’] = 0 qu'il y ait un menu pour se connecter
et que si $_SESSION[‘logged’] = 1 soit affiché un menu "mon compte" a la place de l'autre. Or avec le code ci-dessous qui me semble juste et bien ca ne marche pas  :D auriez vous une idee ?
 

Citation :


<div id="menudroite">
   
  <?php  
   
  if ($_SESSION[‘logged’] = 1)
  {
  include("moncompte.php" );
  }    
       
  else
  {
 include("menud.php" );
  }
   
 ?>


 
Je sais que ca fait beaucoup de questions merci d'avance pour votre aide :)

Reply

Marsh Posté le 14-04-2008 à 22:17:17   

Reply

Marsh Posté le 15-04-2008 à 08:57:54    

Si tu veu pouvoir insérer des données dans le tableau $_SESSION, ou en lire, oui tu doi faire appel a session_start() avant..

Reply

Marsh Posté le 15-04-2008 à 22:21:37    

yop, finalement ca marche avec session_start() au début de la page. de meme pr les if ils fonctionnent avec session_start() au début de la page
 
merci :-)

Reply

Marsh Posté le 16-04-2008 à 12:30:21    

puisque tu débute je me permet de conseiller de mettre en place des mots de passe cryptés edit: hashé (autant pour moi) (avec la fonction md5( ) par exemple), juste pour t'entrainer...
 
De plus tu dois apprendre a protéger ton site des injections SQL et autres failles horribles du genre...


Message édité par wrksx le 21-04-2008 à 12:41:42
Reply

Marsh Posté le 19-04-2008 à 11:40:20    

Pour les mots de passe j'ai mis la fonction md5. Est-ce la seule information que l'on doit crypté dans la BDD ?
Pour ce qui est des autres joyeusetés sur la sécurité j'ai jeté un coup d'oeil mais j'ai pas encore le niveau je comprend pas tous les problèmes expliqués(et surtout comment les corriger :D ) sur http://phpsec.org/projects/guide/fr/   ...

Reply

Marsh Posté le 19-04-2008 à 12:44:45    

Le fait de hasher (et non pas crypter) tes mots de passe comptes utilisateur en md5() dans la base de données permet en théorie de ne pas pouvoir les récuperer en clair, que ce soit par injection SQL ou autres. Malheuresement il existe des bases de données sur le net et donc ca ne suffit pas toujours pour les mots de passe les plus simple.
 
Il existe d'autre méthode de hashage comme sha1(), on vois également souvent des indicateurs de niveau de sureté (pour le mot de passe) dans les formulaire d'inscriptions. On peut également utiliser un peu d'astuce en rajoutant des chaines de caractéres aléatoire dans le hashage, ce n'est pas infaible mais rend trés difficile l'utilisation de base de données du net.
 
Tout ceci s'adresse plutot au site important ou au cms dont les sources sont publiés, pour un script perso, il suffit juste de respecter quelques régles de base et de bon sens.


Message édité par masterpsx le 19-04-2008 à 12:45:20
Reply

Marsh Posté le 20-04-2008 à 12:51:44    

plop,
 
Les indicateurs de niveau de sureté sont des scripts javascripts?
 
Pour proteger un peu plus sa bdd est-ce que ça peut etre utile de renommer les champs ? du style à la place de 'comptes' mettre 'j5kqs4' ?

Reply

Marsh Posté le 20-04-2008 à 13:15:24    

Oui c'est du simple javascript qui verifie le nombre et le type de caractéres, c'est une simple indication pour le futur membre, ce n'est pas une vrais sécurité.
 
Renommer ses champs ou ses tables n'est pas trés utile, ca peut protéger éventuellement un petit peu des injection SQL mais de toute façon si tu ne publies pas tes sources, c'est tout de même difficile de connaitre le nom de tes tables et de tes champs.

Reply

Marsh Posté le 20-04-2008 à 22:17:52    

merci pour tes réponses l'ami ^^
 
j'en profite d'être avec des connaisseurs ... :p
 
avec les formulaires :
1) Ne faut-il jamais faire d'extract($_POST) ou extract($_GET) ?  
2) Si quelqu'un rajoute des variables quelle est le risque si ces variables ne sont nul part traitées dans mon code php?
3) est-ce plus prudent, pour remplacer extract, de faire pour chaque variable $mavariable= $_POST['mavariable'] ?
 

Reply

Marsh Posté le 21-04-2008 à 12:29:13    

1)
l'utilisation d'extract peut être dangereuse si les bons paramètres ne sont pas utilisés... peut être utile si tu as de nombreuses entrées a récupérer dans $_POST (ou $_GET) mais sinon je vois pas trop l'intérêt.
 
2)
Si les variables en question ne sont pas utilisées dans ton code, aucun risque. En effet les données envoyées resteront stockée dans une case du tableau $_GET (si la méthode get est utilisée pour ton formulaire bien sur). C'est précisément pour ça que extract pourrai être parfois dangereux puisque par défaut il écrase les variables préexistante par les valeur du tableau.
 
3)
$mavariable= $_POST['mavariable'] fonctionne parfaitement, et ça rend le code un peu plus clair pour moi, mais c'est peut-être un question de goût =) !


Message édité par wrksx le 21-04-2008 à 12:37:51
Reply

Marsh Posté le 21-04-2008 à 12:29:13   

Reply

Marsh Posté le 21-04-2008 à 22:17:33    

plop,
 
merci pour tes réponses ca m'aide bien étant donné que ce genre de petits détails ne sont pas toujours indiqués dans les tuto ! ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed