8722 sujets

Développement web côté serveur, CMS

Salut,

Je suis en train de faire un petit script de login et j'ai mon header qui me redirige pas tout le temps vers ma page projet.php. Dès fois ca marche, dès fois non Smiley decu

Voila mon code:
<?php
    session_start();
    
    if(isset($_POST['connexion']) && $_POST['connexion'] == 'Se connceter'){
        include("connexion.php");
    
        if(isset($_POST['email']) && isset($_POST['pass']) && !empty($_POST['email']) && !empty($_POST['pass'])){
            $email = $_POST['email'];
            $pass = md5($_POST['pass']);
            $req = mysql_query("SELECT * FROM users WHERE pass='$pass' AND email='$email'");
            
            if(mysql_num_rows($req) == 1){
                $_SESSION['login'] = $email;
            }else{
                $error = "Utilisateur inéxistant";
            }
            
        }else{
            $error = "Remplissez les champs";
        }
        
        if(isset($_SESSION['login'])){
            header('Location: projet.php');
        }
    }

    include("header.php");
?>
Bonjour,

Attention, tu as une grosse faille de sécurité dans ton script. Pense bien à utiliser par exemple mysql_escape_string pour éviter les injections sql.

Après ton header('Location: projet.php');, penses à mettre un exit(). Cela réglera peut être ton problème.
Salut,

Merci effectivement j'avais omis pour les injections sql, mais sinon ça ne fonctionne toujours pas avec exit();

Ma page devient blanche Smiley decu
Regarde bien avant <?php et dans ton fichier connexion.php, aucun caractère ne doit être envoyé avant l'appel de la fonction header. (par exemple un espace)
C'est bien le cas, c'est ça qui me fait plancher ^^

voila mon fichier connexion.php:

<?php

    $link = mysql_connect('localhost', 'root', 'root') or die("erreur de connexion au sgdb");
    mysql_select_db("gpt", $link) or die("erreur de connexion à la bdd");
    
?>
Je ne suis pas sur que tu aies compris ma dernière remarque. Y a t-il des espaces avant tes différents "<?php" ? Tu peut aussi supprimer le "?>" dans ton fichier de connexion.
Modifié par benj (20 Mar 2013 - 17:57)
Salut,

Si toutes les remarques dites par benj ne t'ont pas aidé, alors cela peut venir du jeu d'encodage de tes fichiers.
Si tu utilise un charset utf-8 vérifie que ce soit bien sans BOM, c'est souvent une des raisons (non visible) de ce genre de sitution.
Salut apparemment c'est bien ça le soucis Smiley smile merci. Par contre je perd mes accents alors que mon fichier est encodé en UTF-8.

@+
Ok, tout tes fichiers même les include() doivent posséder le même jeu d'encodage, ici UTF-8 sans BOM en l'occurrence.

Voici quelques pistes:

- charset utf-sans bom à déclaré dans chaque fichiers.

- Dans ton éditeur de code (par ex notepd++), ouvrir les fichiers, convertir en utf-8 sans bom puis enregistrer.

-Lors de ta connexion à la BDD, définir le jeu d'encodage comme ceci ->
http://www.php.net/manual/fr/function.mysql-set-charset.php
A+
Modifié par heatseeker (21 Mar 2013 - 17:17)