Probleme de scripts php : ouverture de session

Petit nouveau ! | 9 Messages

14 mars 2008, 12:50

Bonjour,

Je fais un site, qui nécessite à une connexion à une base de donnée et l'utilisation de sessions.
Lorsque je le faisais marcher sur un serveur interne ou sur un autre site ça fonctionnait. Maintenant que je le mets sur l'hébergeur (OVH), ça ne fonctionne plus.

J'ai bien accès à la base de données donc ça ne vient pas de là :

En fait, ma page principal se présente comme ça :

Code : Tout sélectionner

<?php include('/include/session.inc.php'); ?> <!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> <link rel="StyleSheet" href="/styleindex.css" type="text/css" /> <script type="text/javascript"> <!-- window.onload=montre; function montre(id) { var d = document.getElementById(id); for (var i = 1; i<=10; i++) { if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';} } if (d) {d.style.display='block';} } //--> </script> </head> <body> <div class="conteneur"> <div class="entetegauche"> </div> <div class="entetedroite"> <?php include('/include/identifiant.inc.php'); ?> </div> <div class="bandeau"> </div> <div class="menuhorizontal"> <?php include('/include/menuhorizontal.inc.php'); ?> </div> <div class="menuvertical"> <?php include('/include/menuverticalgeneral.inc.php'); ?> </div> <div class="contenu"> <?php include('/include/affichage5infos.inc.php'); ?> </div> <div class="colonnedroite"> <?php include('/include/colonnedroitegeneral.inc.php'); ?> </div> <div class="pied"> <?php include('/include/pied.inc.php'); ?> </div> </div> </body> </html>
Les include fonctionnent car j'ai bien les menus.

Je vous mets les différents include :

session.inc.php :
<?php
ini_set('arg_separator.output', '&');
ini_set("url_rewriter.tags","a=href,area=href,frame=src,iframe=src,input=src");
session_start();

$hote= 'xxx';
$user = 'xxx';
$passe ='xxx';
$base= 'xxx';
$connexion = mysql_connect($hote, $user,$passe);
mysql_select_db($base,$connexion);
?>
et identifiant.inc.php :

<?php
if($_SESSION['pseudo'] == '') {
$message = "<p>Pour vous connecter, merci d'indiquer votre <em>identifiant</em> et votre <em>mot de passe</em></p>"; 
include('/include/identification.inc.php');   }
else {
switch ($_SESSION['categorie']) { 

                            case "admin": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 
         
                            case "eleve": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 
                           }
echo '<p>Bonjour ', $_SESSION['prenom'], '&nbsp;', $_SESSION['nom'],  ' |', $lienhorizontal, '</p>';  

	}
?>
Ca envoie sur le script identification.inc.php :

Code : Tout sélectionner

<?php echo $message; ?> <form method="post" action="/login.php"> <p><br /> <label for="pseudo">Identifiant : </label><input type="text" name="pseudo" size="15px" id="pseudo" /><br /> <label for="motdepasse">Mot de passe : </label><input type="password" name="motdepasse" size="15px" id="motdepasse" /><br /> <input type="submit" value="connexion" id="connexion" /> </p> </form>
Ca renvoie donc sur une page login.php ou la seule différence est qu'à la place de identifiant.inc.php, j'ai verification.inc.php :

<?php
if($_SESSION['pseudo'] == '') {

// on regarde si le formulaire est bon pour voir si le champ pseudo est vide 
if (isset($_POST) && empty($_POST['pseudo']) && !empty($_POST['motdepasse'])) { 

        $message = '<p>Vous avez oublié d\'indiquer votre <i>identifiant</i></p>'; 
        include('/include/identification.inc.php');  
} 


// pour voir si le champ mot de passe est vide 

if (isset($_POST) && !empty($_POST['pseudo']) && empty($_POST['motdepasse'])) { 

        $message = '<p>Vous avez oublié d\'indiquer votre <i>mot de passe</i></p>'; 
        include('/include/identification.inc.php');  
} 


// pour voir si les champs pseudo et mot de passe sont vides 

if(isset($_POST) && empty($_POST['pseudo']) && empty($_POST['motdepasse'])) { 

        $message = '<p>Merci de rentrer votre <i>identifiant</i> et votre <i>mot de passe</i></p>'; 
        include('/include/identification.inc.php');  
} 


// Si les deux sont remplis alors :  

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['motdepasse'])) { 

        // on extrait les données 
        extract($_POST); 


       // on va chercher les données  pour le pseudo entrée 
        $sql = "SELECT * FROM identification WHERE pseudo='$pseudo'"; 

        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 


       // on  récupère les entrées comme il faut 
        $data = mysql_fetch_assoc($req); 


       // on compare ce qu'on a entré et le vrai mot de passe 
        if($data['motdepasse'] != $motdepasse) { 

                $message = '<p>Les informations rentrées ne sont pas correctes</p>'; 
                include('/include/identification.inc.php');  

                } 
                else  
               { 
				$_SESSION['logged'] = 1;
                $_SESSION['pseudo'] = $data['pseudo'];
                $_SESSION['nom'] = $data['nom']; 
                $_SESSION['prenom'] = $data['prenom']; 
                $_SESSION['categorie'] = $data['categorie']; 
				
				
				 /* on crée la fonction du lien supplémentaire dans le menu. */ 
                 switch ($data['categorie']) { 

                            case "admin": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 
         
                            case "eleve": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 

                } 
				
				   // on affiche le nom et le prénom 
                 echo '<p>Bonjour ', $data['prenom'], '&nbsp;', $data['nom'], ' | ', $lienhorizontal, '</p>';

              
				
                           } 
						   
             
} 
}
else {
switch ($_SESSION['categorie']) { 

                            case "admin": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 
         
                            case "eleve": $lienhorizontal = '<a href="/eleve">espace réservé</a>';break; 
                           }
echo '<p>Bonjour ', $_SESSION['prenom'], '&nbsp;', $_SESSION['nom'],  ' |', $lienhorizontal, '</p>';  

	}
?>

Voilà.

Bon ce qui ne marche pas, c'est que le $message de n'affiche jamais, car probablement le session_start(); de mon include session n'est pasp ris en compte. Par ailleurs, ça renvoie bien sur login, masi rien ne s'affiche, Je pensais bien une erreur sur le formulaire mais je n'ai pas trouver !... Mais pourquoi, je n'en ai pas dormi de la nuit !!!

Si quelquu'n a une idée...

Merci

Edit : Précisions : il semble que ce soit le fomulaire qui n'envoie pas le POST à login, car il agit comme si rien ne se passait !
Modifié en dernier par guyomeparis le 14 mars 2008, 15:26, modifié 2 fois.

ViPHP
ViPHP | 1996 Messages

14 mars 2008, 15:09

Pourquoi démarres tu sur ?
<?php
if($_SESSION['pseudo'] == '') {

// on regarde si le formulaire est bon pour voir si le champ pseudo est vide
if (isset($_POST) && empty($_POST['pseudo']) && !empty($_POST['motdepasse'])) {

        $message = '<p>Vous avez oublié d\'indiquer votre <i>identifiant</i></p>';
        include('/include/identification.inc.php'); 
} 
As tu défini $_SESSION['pseudo'] avant (dans une autre page) ? En plus je ne vois pas de session_start(); avant ton if.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 9 Messages

14 mars 2008, 15:21

Oui pardon, en fait il y a bine un session_start(); dans l'include session.inc.php (je l'ai oublié dans le copier coller)

ini_set('arg_separator.output', '&');
ini_set("url_rewriter.tags","a=href,area=href,frame=src,iframe=src,input=src");

session_start();
en fait il semble que ce soit mon formulaire qui ne renvoie pas les infos à login.php

Code : Tout sélectionner

<form method="post" action="/login.php"> <p><br /> <label for="pseudo">Identifiant : </label><input type="text" name="pseudo" size="15px" id="pseudo" /><br /> <label for="motdepasse">Mot de passe : </label><input type="password" name="motdepasse" size="15px" id="motdepasse" /><br /> <input type="submit" value="connexion" id="connexion" /> </p> </form>

ViPHP
ViPHP | 1996 Messages

14 mars 2008, 15:35

Ok avant ton $_SESSION['pseudo'] vérifie dans login.php que tout est bien posté via
echo '<pre>';
print_r ($_POST);
echo'</pre>';
Théoriquement tu dois avoir un tableau qui s'affiche avec toutes les variables postées.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 9 Messages

14 mars 2008, 15:54

En fait j'ai rien dans le tableau ! il est vide même quand je rentre quelque chose.

Je dois donc chercher du côté du formulaire ?

Petit nouveau ! | 9 Messages

17 mars 2008, 11:02

Bon aucun souci dans la programmation, si ce n'est que ce n'est peut être pas très propre mais des soucis dans les include (je ne sais pas pourquoi !)

Merci en tout cas