[PHP] script de connexion qui marche plus

Utilisateur anonyme -  
 Utilisateur anonyme -
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. Alain_42 Messages postés 5413 Statut Membre 904
     
    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. Utilisateur anonyme
       
      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. Utilisateur anonyme
     
    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
  3. Utilisateur anonyme
     
    Merci bcp
    0
    1. Utilisateur anonyme
       
      Ça marche ? Si oui attends je te nettoie ton code ;)
      0
    2. Utilisateur anonyme
       
      tiens ! résolu ?
      0
    3. Utilisateur anonyme
       
      ca fonctionne pas vraiment, came redirige vers la page d'accueile
      0
    4. Utilisateur anonyme
       
      Explique moi ce que doit faire cette page ...
      0
    5. Utilisateur anonyme
       
      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
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    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
  7. Utilisateur anonyme
     
    Re,

    C'est quoi ça :
    $_POST['connexion'] == 'Connexion'
    0
    1. Utilisateur anonyme
       
      c'est pour vérifier que le formulaire à été soumis.
      0
  8. Utilisateur anonyme
     
    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