8796 sujets

Développement web côté serveur, CMS

Bonsoir,
alors mon problème va être long à expliquer mais je me lance :

Résumé : Je viens de créé un site à partir d'un cms connu de personne qui n'a même pas de nom, et un forum. Je viens de créé une BDD commune au forum et au site de façon à ce que l'identification sur le site serve aussi pour le forum. Donc j'ai en gros fusionné la table ddl_users (site) avec la table ddl_membres (forum) pour former une nouvelle ddl_membres contenant toutes les colonnes necessaires !
voici la structure :



CREATE TABLE IF NOT EXISTS `ddl_membres` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pseudo` varchar(64) NOT NULL DEFAULT '',
  `mdp` varchar(32) NOT NULL DEFAULT '',
  `mail` varchar(128) NOT NULL DEFAULT '',
  `level` enum('1','2','3') NOT NULL DEFAULT '1',
  `show_mail` enum('1','0') DEFAULT '0',
  `rating` varchar(200) NOT NULL DEFAULT '',
  `activation` varchar(100) NOT NULL DEFAULT '',
  `status` enum('1','0') DEFAULT '0',
  `uploads` varchar(100) DEFAULT '0',
  `mbs` varchar(100) DEFAULT '0',
  `list` enum('0','1') DEFAULT '0',
  `nbpost` int(11) NOT NULL DEFAULT '0',
  `valid` tinyint(4) NOT NULL DEFAULT '0',
  `temps` int(11) NOT NULL DEFAULT '0',
  `tempspost` int(11) NOT NULL DEFAULT '0',
  `rang` tinyint(4) NOT NULL DEFAULT '0',
  `avatar` varchar(128) NOT NULL DEFAULT '',
  `localisation` varchar(64) NOT NULL DEFAULT '',
  `www` varchar(128) NOT NULL DEFAULT '',
  `mp` int(11) NOT NULL DEFAULT '0',
  `co` int(11) NOT NULL DEFAULT '0',
  `gmt` decimal(4,1) NOT NULL DEFAULT '0.0',
  `he` tinyint(4) NOT NULL DEFAULT '0',
  `sign` varchar(255) NOT NULL DEFAULT '',
  `signaff` tinyint(4) NOT NULL DEFAULT '0',
  `rangspec` tinyint(4) NOT NULL DEFAULT '0',
  `afflist` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


Ensuite voici la structure de ma page d'identification :


<?

session_start();

include "includes/var.inc.php";

$section = $_GET['section'];

$username = $_SESSION['username'];
$user_sql = mysql_query("SELECT * FROM $users_table WHERE username='$username'");
$user_info = mysql_fetch_array($user_sql);
$user_id = $user_info['id'];
$user_level = $user_info['level'];
$user_uploads_num = $user_info['uploads'];
$user_uploads_size = $user_info['mbs'];

[/code]
suite...

		  <? if(!$username){
		        
				 echo "<form method=\"post\" action=\"index.php?section=checkuser\">\n";
				 echo "<table width=\"190\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"5\">\n";
                   echo "<tr>\n";
                    echo "<td width=\"31\"><span class=\"small_font\">Identifiant</span></td>\n";
                    echo "<td align=\"center\" width=\"159\"><input type=\"text\" name=\"username\" class=\"input_text_small\" /></td>\n";
                  echo "</tr>\n";
                  echo "<tr>\n";
                    echo "<td><span class=\"small_font\">Pass</span></td>\n";
                    echo "<td align=\"center\"><input type=\"password\" name=\"password\" class=\"input_text_small\" /></td>\n";
                  echo "</tr>\n";
                  echo "<tr>\n";				    
                    echo "<td colspan=\"2\"><a href=\"index.php?section=lost_pw\"><img src=\"images/lost_pw.png\" border=\"0\" alt=\"lost_pw\" /></a>&nbsp;&nbsp;&nbsp;<input type=\"image\" value=\"Login\" src=\"images/login_button.png\" /></td>\n";
                  echo "</tr>\n";
                 echo "</table>\n";
                 echo "</form>\n";
				 
				 } else {
....


et voici le fichier contenant la fonction checkuser :

<?

$section = $_GET['section'];

switch($section){
         default:
                 echo "<form method=\"post\" action=\"index.php?section=checkuser\">\n";
				 echo "<table width=\"100\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"5\">\n";
                   echo "<tr>\n";
                    echo "<td width=\"31\"><span class=\"small_font\">Identifiant</span></td>\n";
                    echo "<td width=\"69\"><input type=\"text\" name=\"username\" class=\"input_small\" /></td>\n";
                  echo "</tr>\n";
                  echo "<tr>\n";
                    echo "<td><span class=\"small_font\">Pass</span></td>\n";
                    echo "<td><input type=\"password\" name=\"password\" class=\"input_small\" /></td>\n";
                  echo "</tr>\n";
                  echo "<tr>\n";
                    echo "<td colspan=\"2\" ><a href=\"index.php?section=lost_pw\"><span class=\"very_small\">(Forgot Passwords)</span></a><input type=\"submit\" value=\"LogIn\" class=\"button\" /></td>\n";
                  echo "</tr>\n";
                 echo "</table>\n";
                 echo "</form>\n";
				 ; break;
				 
	case "checkuser": 
	                 $username = $_POST['username'];
                     $password = $_POST['password']; 

                     if((!$username) || (!$password)){
                     echo "<script language='Javascript'>
                            alert('Veuillez remplir tous les champs !');    
                            location.href = 'index.php';
                           </script>";
                                     }

                     $pw = md5($password);

                     $sql = mysql_query("SELECT * FROM $users_table WHERE pseudo='$username' AND mdp='$pw' AND status='1'");
                     $login_check = mysql_num_rows($sql);                     

                     if($login_check > 0){
                           while($row = mysql_fetch_array($sql)){
                           foreach( $row AS $key => $val ){
                           $$key = stripslashes( $val );
                                }
              
                     session_register('username');
                     $_SESSION['userame'] = $username; 
                     
					 echo "<script language='Javascript'>
                           alert('Identification reussie !');     
                           location.href = 'index.php';
                           </script>"; ; break;
					
					 }
                   } else {
                     echo "<script language='Javascript'>
                           alert('Vous n'etes pas identifie !');     
                           location.href = 'index.php';
                           </script>";  
                   } ; break;	
	    }
?>

Modifié par yrul (21 Oct 2009 - 22:11)
arf j'ai oublié de dir emon problème :

Lors de l'identification sur le site, bah ça ne marche pas tout simplement.
Salut,

sans aller plus loin ta requête
SELECT * FROM $users_table WHERE username='$username'
est un peu bizarre vu que le champ username n'existe pas dans ddl_membres (en supposant que c'est ce que contient $users_table...
effectivement le fichier var-inc.php indique
que $users_table = ddl_membres
En faite username correspond à l'ancienne table, maintenant s'appelant pseudo.

Imaginons que je remplace username par pseudo cela ne change pas le problème, je viens d'essayer en vain
Alors en regardant de plus près il y a plusieurs vilaines choses... notamment le fait que ton switch commence par default alors que ça devrait être à la fin (si aucune valeur n'a été vérifiée).
Ok merci du conseil je vais inverser cela !

Alors au niveau de ma question, j'ai eu l'illumination, j'ai réglé le problème, juste une vilaine erreur d'étourderie lorsque j'ai remplacé les username par pseudo.... cela fonctionne bien maintenant.

Il reste néanmoins un souci, lorsque je m'authentifie sur le site et que je vais ensuite sur le forum, je ne suis plus authentifié... Et aussi, lorsque je m'authentifie sur le forum après être authentifié sur le site, et que je repasse sur le site, paf je ne suis plus loggué. Cela viens d'où ?