8797 sujets

Développement web côté serveur, CMS

Bonjour,

J'essaie de passer mon site sur un nas mais j'ai un problème avec ma page connexion.php :

<?php
    include('connectBdd.php');  // Importation du fichier de connexion a la BDD
    
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pwd'])) // Je verifie que les données ne soient pas vides
    {
        extract($_POST); //extraction des infos envoyés par la methode 'POST' (ex: $_POST['login'] = $login, etc...)
        
        
        // on recupère le password de la table qui correspond au login du visiteur
        $sqlCo = "SELECT idUtilisateur, idTypeUtilisateur, pwdUtilisateur FROM utilisateur WHERE loginUtilisateur = '".$login."'";
        $req = mysql_query($sqlCo) or die('Erreur SQL !<br>'.$sqlCo.'<br>'.mysql_error()); // execution de la requete
        $data = mysql_fetch_assoc($req); // on met les données recuperes dans un tableau
        
        if ($data['pwdUtilisateur'] != $pwd)  // si le pwd saisie n'est pas egal a celui dans la bdd
        {
            header('location: ../index.php'); // On revient a la page de connexion
        }
        else // Sinon c'est ok, on effectue les requetes et on demarre la session
        {
            
            // Requete pour selectionner le premier camping par ordre alphabétique
            $sqlFirstCamp = "SELECT
                                idCamping
                            FROM
                                camping
                            ORDER BY
                                nomCamping
                            ASC
                            LIMIT
                                1
                            ";
            $reqFirstCamp = mysql_query($sqlFirstCamp) or die('Erreur SQL !<br>'.$sqlFirstCamp.'<br>'.mysql_error());
            $dataFirstCamp = mysql_fetch_assoc($reqFirstCamp);
            
            
            // Requete pour avoir les infos de l'user qui se connecte
            $sqlSelCamp = "SELECT
                                co.idCamping,
                                sal.idSalarie
                            FROM
                                contrat co,
                                salarie sal,
                                utilisateur ut
                            WHERE
                                ut.idUtilisateur = '".$data['idUtilisateur']."'
                            AND
                                sal.idUtilisateur = ut.idUtilisateur
                            AND
                                co.idSalarie = sal.idSalarie
                            ";
            $reqSelCamp = mysql_query($sqlSelCamp) or die('Erreur SQL !<br>'.$sqlSelCamp.'<br>'.mysql_error());
            $dataSelCamp = mysql_fetch_assoc($reqSelCamp);
            
            // Je demarre la session et j'affecte les variables de session
            session_start();
            $_SESSION['login'] = $login;
            $_SESSION['idUser'] = $data['idUtilisateur'];
            $_SESSION['idTypeUser'] = $data['idTypeUtilisateur'];
            $_SESSION['idSaison'] = '1';
            $_SESSION['idSalarie'] = $dataSelCamp['idSalarie'];
            $_SESSION['idCamp'] = $dataFirstCamp['idCamping'];
            $_SESSION['idSelectCamp'] = $dataSelCamp['idCamping'];
            
            
            // Je redirige l'user en fonction de son type
            if($data['idTypeUtilisateur'] == '1') // RH
            {
                header('location: accueilRH.php');
                //include('accueilRH.php');
            }
            else if ($data['idTypeUtilisateur'] == '2') // RC
            {
                header('location: RC/accueilRC.php');
                //include('RC/accueilRC.php');
            }
            else // Saisonnier
            {
                header('location: Saisonnier/accueilS.php');
                //include('Saisonnier/accueilS.php');
            }
        }   
    }
    else
    {
        header ('location: ../index.php');
    }
?>

Lorsque que j'essaie de me connecter j'ai une page blanche.
Si je remplace mes "header" par des "include" ça fonctionne.

J'ai nottament essayer ce test :

<?php

    header("Location:    http://www.google.fr/");   

    exit();

?>

ça fonctionne très bien.
Je ne vois pas vraiment ou se situe le problème.
Modifié par maxtheirish (24 Feb 2012 - 12:09)
Est ce que ça serait un paramètre a modifier dans le php.ini ?
Normalement il ne faut aucun code html avant mon header('Location: page.php'); mais dans ma page c'est le cas non?
Modérateur
Aucun code html ni aucun caractère, un retour à la ligne ou un espace en est un. Il suffit d'avoir un de ces caractères avant ou après les balises php, y compris dans les fichiers que tu inclus.
http://www.php.net/manual/fr/function.header.php

a écrit :
Note:

HTTP/1.1 demande une URI absolue comme argument de » Location:, y compris le protocole, hôte et chemin absolu. Mais certains navigateurs acceptent les URI relatives. Vous pouvez généralement utiliser les variables globales $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] et dirname() pour construire vous-même une URI absolue :



Il faut que tu mettes le chemin complet visiblement.
kustolovic a écrit :
Aucun code html ni aucun caractère, un retour à la ligne ou un espace en est un. Il suffit d'avoir un de ces caractères avant ou après les balises php, y compris dans les fichiers que tu inclus.


Il aurait une erreur de type warning header already sent etc etc.....
Modérateur
Oui, en même temps une page blanche ça peut être que les erreurs ne sont pas affichées ou/et loguées...

Et ça marche avec le lien en absolu?

Pour terminer, je constate que tes passwords sont en clairs dans ta bdd, ce qui est mal Smiley diablo . Ou alors cette étrange fonction extract (qui déclare des variables globales?) doit traiter le mot de passe envoyé!
La fonction 'extract' affecte mes variables posté à des variables portant le même nom :
ex : $_POST['login'] = $login
J'avais 2 sauts de ligne dans mon fichier 'connectBdd.php' que j'inclue en début de page.
Du coup ça fonctionne avec des chemins en relatif.

En passant vu que j'ai posté mon code si vous avez des conseils d'optimisation de mon code je suis preneur.