[PHP] script de connexion qui marche plus

Bonjour,
j'ai un problème, je créais un script php pour se connecter mais il me renvoie tout le temps cette erreur : "Parse error: parse error in C:\wamp\www\lounge\index.php on line 35". Je crois que le problème viens su fait que je créais un système avec deux langue, je pense qu'il y a conflit entre le if de la connexion https et celui de la connexion fr ou en (français et anglais). Je vous ai mis si dessous ke code source avec la zone à problème en gras :

<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']) && (isset($_POST['check']) && !empty($_POST['check'])))) {

$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('lounge', $base);

$date = Date("d/m/Y H:i:s");
$sql = 'SELECT id, prenom, nom, email, https, langue FROM membres WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md3="'.md5(mysql_escape_string($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);

if ($nb == 1) {
$data = mysql_fetch_array($req);

session_start();
$_SESSION['login'] = $_POST['login'];
// on enregistre en plus l'id du membre dans une variable de session
$_SESSION['id'] = $data['id'];
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
$_SESSION['email'] = $data['email'];
$_SESSION['langue'] = $data['langue'];
$_SESSION['https'] = $data['https'];
mysql_free_result($req);
mysql_close();
if ($data['langue'] == fr) {
if ($data['https'] == 1) {
header('Location: https://my-webdesign.org/membres/membre.php');
}
else {
header('Location: http://my-webdesign.org/membres/membre.php');
}

else {
if ($data['https'] == 1) {
header('Location: https://my-webdesign.org/en/membres/membre.php');
}
else {
header('Location: http://my-webdesign.org/en/membres/membre.php');
}
}
}
exit();
}
elseif ($nb == 0) {
$erreur = 'Compte non reconnu.';
}
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
mysql_free_result($req);
mysql_close();
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>

7 réponses

  1. comme proposé plus haut

    if ($data['langue'] == fr && $data['https'] == 1) {
    header('Location: https://my-webdesign.org/membres/membre.php');
    }
    elseif ($data['langue'] == fr && $data['http'] == 0)
    {
    header('Location: http://my-webdesign.org/membres/membre.php');
    }
    
    else
    {
    if ($data['https'] == 1)
    {
    header('Location: https://my-webdesign.org/en/membres/membre.php');
    }
    else
    {
    header('Location: http://my-webdesign.org/en/membres/membre.php');
    }
    }
    exit();
    } 
    5
    1. Ca ne fonctionne toujours pas, je suis désolé, mais ma fonction multilangue je pense qu'elle va être mis à la poubelle, avec le https ca fonctionnai, et maintenant plus.
      0
  2. Salut,

    J'ai pas compris grand chose à ton code tellement il est approximatif, mais essais ça :

    ______________________________________________________________

    <?php
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']) && (isset($_POST['check']) && !empty($_POST['check'])))) {

    $base = mysql_connect ('localhost', 'root', '');
    mysql_select_db ('lounge', $base);

    $date = Date("d/m/Y H:i:s");
    $sql = 'SELECT id, prenom, nom, email, https, langue FROM membres WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md3="'.md5(mysql_escape_string($_POST['pass'])).'"';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $nb = mysql_num_rows($req);

    if ($nb == 1) {
    $data = mysql_fetch_array($req);

    session_start();
    $_SESSION['login'] = $_POST['login'];
    // on enregistre en plus l'id du membre dans une variable de session
    $_SESSION['id'] = $data['id'];
    $_SESSION['nom'] = $data['nom'];
    $_SESSION['prenom'] = $data['prenom'];
    $_SESSION['email'] = $data['email'];
    $_SESSION['langue'] = $data['langue'];
    $_SESSION['https'] = $data['https'];
    mysql_free_result($req);
    mysql_close();
    if ($data['langue'] == fr && $data['https'] == 1) {
    header('Location: https://my-webdesign.org/membres/membre.php');
    }
    elseif ($data['langue'] == fr && $data['http'] == 1)
    {
    header('Location: http://my-webdesign.org/membres/membre.php');
    }

    else
    {
    if ($data['https'] == 1)
    {
    header('Location: https://my-webdesign.org/en/membres/membre.php');
    }
    else
    {
    header('Location: http://my-webdesign.org/en/membres/membre.php');
    }
    }
    exit();
    }
    elseif ($nb == 0) {
    $erreur = 'Compte non reconnu.';
    }
    else {
    $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
    }
    mysql_free_result($req);
    mysql_close();
    }
    else {
    $erreur = 'Au moins un des champs est vide.';
    }
    }
    ?>
    2
    1. Merci bcp
      0
      1. Ça marche ? Si oui attends je te nettoie ton code ;)
        0
      2. tiens ! résolu ?
        0
      3. ca fonctionne pas vraiment, came redirige vers la page d'accueile
        0
      4. Explique moi ce que doit faire cette page ...
        0
      5. elle doit te connecter en allant cherche toutes les données de la bases de donnée : à savoir : id, login, pass_md3(crypté en md5), prenom, nom, email, langue, https (soit 1 ou 0, 1 voulant dire actif et 0 non-actif) et les enrengistré dans des variables de la session, vérifier que le login et le mot de passe correspondent à une des entrées de la base de donnée, et une redirection si en anglais ou en francais avec dans chaque si le https est activé une redirection dans la bonne langue mais en https.

        Merci de ton aide. Je vais me coucher.
        0
    2. dans cette partie des erreurs de principe dans tes test conditionels if /else

      if ($data['langue'] == fr) {
      if ($data['https'] == 1) {
      header('Location: https://my-webdesign.org/membres/membre.php');
      }else {
      header('Location: http://my-webdesign.org/membres/membre.php');
      }

      else { // la tu n'as pas le droit de mettre un deuxieme else
      if ($data['https'] == 1) {
      header('Location: https://my-webdesign.org/en/membres/membre.php');
      }
      else {
      header('Location: http://my-webdesign.org/en/membres/membre.php');
      }
      }
      }


      pour mettre plusieurs else il faut des else if(condition)
      0
      1. que suis-je donc sansé faire, je ne comprend pas, j'avais utilisé ce script avec le https et ca fonctionnait très bien, mais maintenant que j'utilise en plus l'anglais ca beugue alors franchement, la je suis paumé.
        0
        1. Re,

          C'est quoi ça :
          $_POST['connexion'] == 'Connexion'
          0
          1. c'est pour vérifier que le formulaire à été soumis.
            0
        2. J'ai trouvé, ca marche, yavais encore une erreure que j'ai faite par inadvertance, c'était franchement con, mais c pas grave, merci à tous.
          0