pb formulaire de connexion ....

Eléphanteau du PHP | 35 Messages

24 août 2011, 13:50

bonjour
voici ma page qui fonctionne super bien en local mais plus du en tout en ligne sur les pages perso free...on reste bloqué sur le formulaire et rien n'est effectué à la connexion
<?php 
session_start();
if (isset($_SESSION['date_derniere_page'])){ //deconnexion auto au bout de 6mn d'inactivité

     if (time()-$_SESSION['date_derniere_page']> 360){
          $_SESSION = array();
		session_destroy();
		
		
		 header('Location: test.php');

     }
}

merci à ceux qui voudront bien m'expliquer où est le pb ....
lolo
$_SESSION['date_derniere_page']=time();
include('includes/fonctions.php');
connexionbdd();
 //header('Location: accueil.php');
 if(!empty($_POST) OR !empty($_FILES))
{
    $_SESSION['sauvegarde'] = $_POST ;
    $_SESSION['sauvegardeFILES'] = $_FILES ;
    
    $fichierActuel = $_SERVER['PHP_SELF'] ;
    if(!empty($_SERVER['QUERY_STRING']))
    {
        $fichierActuel .= '?' . $_SERVER['QUERY_STRING'] ;
    }
    
    header('Location: ' . $fichierActuel);
    exit;
}
// } Fin - Première partie

// { Début - Seconde partie
if(isset($_SESSION['sauvegarde']))
{
    $_POST = $_SESSION['sauvegarde'] ;
    $_FILES = $_SESSION['sauvegardeFILES'] ;
    
    unset($_SESSION['sauvegarde'], $_SESSION['sauvegardeFILES']);
}
			

//detruire_session();
if ((isset($_GET['action'])) && ($_GET['action'] == 'logout'))
	{
		$_SESSION = array();
		session_destroy();
		session_start();
		 header('Location: test.php');
		}


			
			if(isset($_POST) && !empty($_POST['NOM']) && !empty($_POST['pass'])) 
			{
			extract($_POST);//les variables sont $NOM et $pass
			echo $NOM;
				$result=sqlquery("SELECT id,nom,mdp,admin FROM membres where nom='".Securite::bdd($_POST['NOM'])."' ORDER by id",1);
				 
				//$donnees= $req-> fetch();
					 if ($result['mdp']==$pass)
						{ $_SESSION['id'] = $result['id'];
						$_SESSION['pseudo'] = $result['nom'];
						$_SESSION['mdp'] = $result['mdp'];
						
					echo $_SESSION['pseudo'];	}
						
				
			}
	
	
	

			?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>
		bienvenue sur mon site
	</title>
	<!-- La feuille de styles "base.css" doit être appelée en premier. -->
	<link rel="stylesheet" type="text/css" href="base.css" media="all" />
	<link rel="stylesheet" type="text/css" href="modele.css" media="screen" />
</head>

<body>




	

	<div id="entete">
		
	
		<div id="connexion">
		<form action="" method='post'>
			<label for="NOM">NOM  : </label>
		<input type="text" name="NOM" maxlength="250"><br />
								  
	        <label for="pass">Mot de passe : </label>
		<input type="password" name="pass" maxlength="10">
			<p>  
		<input type="submit" value="connexion">
			</p> 
		 <a href= "" onclick="alertadmin()">Je ne suis pas inscrit !</a></br>
									
		 <a href="envoimail.php">J'ai oubli&eacute; mon mot de passe !</a>
			</form> 
		</div><!-- #connexion -->
	
	<div id="connecte">
	Bienvenue administrateur <?php echo $_SESSION['pseudo'];?>
	</br>
	<a href='header.php?action=logout' title='Déconnexion' >D&eacute;connexion</a>
	</div><!-- #connecte -->
</div><!-- #entete -->	


<div id="accueil">
		<ul>
			<li><a href="index.html">Accueil</a></li>
			
		</ul>
</div><!-- #accueil-->
	
	<div id="navigation">
		
		<ul>
			
			<li><a href="menu1.php"> menu1 </a></li>
			<li><a href="photo.php" > photos </a></li>
			
		</ul>
	</div><!-- #navigation-->
	<div id="grilleadmin">
	<h3> ATTENTION GRILLE d'admin , vous pourrez tout modifier!!</h3>
	<?php  include('incgrilleadmin.php');?>
	</div><!-- #grilleadmin -->
	

</div><!-- #global -->

</body>
<?php 
if (!empty($_SESSION['id']))//si connecté
	{$resultat=sqlquery("SELECT admin FROM membres where nom='".$_SESSION['pseudo']."' ORDER by id",1);
		if ( isset($resultat['admin']) and $resultat['admin']=='1')//si admin
				{	
				
			//echo " Bienvenue administrateur ". $_SESSION['pseudo'];
           echo '<script type="text/javascript">
		document.getElementById("navigation").style.visibility="visible";
		document.getElementById("connexion").style.display="none";
		document.getElementById("connecte").style.display="block";
		document.getElementById("grilleadmin").style.display="block";
				
				</script>';
		//echo "</br>";
			//echo "<a href='test.php?action=logout' title='Déconnexion' >D&eacute;connexion</a>";

				}
	}
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 août 2011, 14:29

salut,

j'ai pas regardé ton code mais a vu de nez tu n'a pas créé le dossier "sessions" à la racine de ton espace web ?

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 35 Messages

24 août 2011, 15:18

si, il est bien crée j'avais oublié de préciser
ainsi que le htaccess avec php 5

merci
d'autres idées peut être?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 août 2011, 16:36

isset($_POST) <= inutile toujours déclarée !
extract($_POST); <= beurk + utilisation de la variable $_POST ensuite donc inutile !
il n'y a aucune condition sur l'affichage ou nom du formulaire donc toujours affiché.
en fait le seul moment ou tu pose une condition sur la connexion pour le paté de JS en bas de page :/
if(!empty($_POST) OR !empty($_FILES))
{
$_SESSION['sauvegarde'] = $_POST ;
$_SESSION['sauvegardeFILES'] = $_FILES ;

a quoi sa sert ? le post je pourrais presque comprendre bien que sauvegarder le contenu du formulaire pour être renvoiyer aussi sec sur la même page aucun intérêt.
le pire c'est que si tu fait ça y a des chances que ton fichier temporaire issu de l'envoie de fichier via http soit supprimer donc les données dans $_FILES inutilisable ^^

$fichierActuel = $_SERVER['PHP_SELF'] ; <= sert a rien ^^

pour ce qui est de la validation de la connexion y a pas trop de vérification ton code est assez obscure, que se passe t il si la requete ne retourne rien ?
est ce que les erreurs sont activées ? (error_reporting(E_ALL|E_STRICT); en 1ère ligne du fichier. le mysql_trace_mode activé pour les erreurs SQL ?

quand au reste ben faut plus de détails et / ou des messages d'erreurs sinon on devine.

tous ce que je peux te dire c'est que ton code est peu orthodoxe et moyen niveau fonctionnalité mais, a priori, syntaxiquement correcte.

Épure le et test avec un niveau d'erreur adéquat au test :)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 35 Messages

24 août 2011, 17:10

ok pour la propreté du code....désolé

toutefois j'ai pas vraiment de message d'erreur en local avec WAMP ça marche super
en ligne sur free lorsque je clique sur connexion la page se recharge mais le formulaire div connexion demeure il ne passe pas en style.display:none
les echos que j'effectue ligne 57 et 68 sont visibles donc en fait c'est le code js de la fin qui ne s'effectue pas...
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 août 2011, 17:32

a tu regardé le code source généré ?
a tu activé les messages d'erreurs ?
il y a surement une différence entre ton wamp et la conf du serveur de free et celle t'empeche de fonctionner comme tu le souhaite).
pourquoi faire en javascript alors qu'une simple condition en php te suffit à le faire ? (surtout que la condition tu l'utilise pour le js suffit de le faire pour afficher ou non le formulaire.

ajoute des var_dump un peu partout histoire de voir ce que ça donne.
exmple

if (!empty($_SESSION['id']))//si connecté
var_dump($_SESSION);
{$resultat=sqlquery("SELECT admin FROM membres where nom='".$_SESSION['pseudo']."' ORDER by id",1);
var_dump($resultat);
if ( isset($resultat['admin']) and $resultat['admin']=='1')//si admin
{

//echo " Bienvenue administrateur ". $_SESSION['pseudo'];
echo '<script type="text/javascript">
document.getElementById("navigation").style.visibility="visible";
document.getElementById("connexion").style.display="none";
document.getElementById("connecte").style.display="block";
document.getElementById("grilleadmin").style.display="block";

</script>';
//echo "</br>";
//echo "<a href='test.php?action=logout' title='Déconnexion' >D&eacute;connexion</a>";

}
}
?>
Il en faut peu pour être heureux ......