[PHP] script de connexion qui marche plus

Fermé
Utilisateur anonyme - Modifié par seby1996 le 25/09/2010 à 23:57
 Utilisateur anonyme - 26 sept. 2010 à 22:57
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.';
}
}
?>


A voir également:

7 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 sept. 2010 à 11:41
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
Utilisateur anonyme
26 sept. 2010 à 17:19
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
Utilisateur anonyme
26 sept. 2010 à 00:01
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
Utilisateur anonyme
26 sept. 2010 à 00:03
Merci bcp
0
Utilisateur anonyme
26 sept. 2010 à 00:08
Ça marche ? Si oui attends je te nettoie ton code ;)
0
Utilisateur anonyme
26 sept. 2010 à 00:17
tiens ! résolu ?
0
Utilisateur anonyme
26 sept. 2010 à 01:10
ca fonctionne pas vraiment, came redirige vers la page d'accueile
0
Utilisateur anonyme
26 sept. 2010 à 01:12
Explique moi ce que doit faire cette page ...
0
Utilisateur anonyme
26 sept. 2010 à 02:13
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
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 sept. 2010 à 10:53
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 sept. 2010 à 11:24
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
Utilisateur anonyme
26 sept. 2010 à 12:09
Re,

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