Problème de script d'authentification

Petit nouveau ! | 7 Messages

11 mai 2018, 16:11

Bonjour à tous et à toutes,

Je travaille sur un script d'authentification un peu sommaire, car mon projet et mes besoins sont très rudimentaires.

Cependant, je rencontre quelques difficultés de mise en place... lorsque je démarre le script il m'affiche le message suivant :
"Parse error: syntax error, unexpected '&&' (T_BOOLEAN_AND) in /opt/lampp/htdocs/www/Planning/Planning_franky/connexion_planning.php on line 15".

Alors je comprends bien la signification du '&&' en ligne 15 'if($login = '') && ($psw = ''){ /*Si la var est vide*/)' mais je n'arrive pas à le résoudre.

Je sèche un peu. Une idée ? Ci-dessous le script concerné :

<?php

/* Enregistrement des variables*/

$login == 'test1'||'test2';
$psw =='exempledemdp';

/* Puisque les variables sont définies */

$login = isset($_POST['login']) ? $_POST['login'] : '';
$psw = isset($_POST['psw']) ? $_POST['psw'] : '';

/* Test de validité d'informations de connection */

if($login = '') && ($psw = ''){ /*Si la var est vide*/
header('Location: connexion_planning.php'); /*renvoie la page en cours1*/
}elseif($login != 'test1'|'test2') { /*Si la var est différente des var préalablement enregistrées.*/
header('Location: index.php?error=1'); /*renvoie page d'accueil,avec 1 param code error 1*/
}elseif ($psw != "exempledemdp"){ /* si psw different de toto,*/
header('Location: index.php?error=2='.$psw); /*renvoie page d'accueil,avec 1 param code error 2*/
}else {
session_start(); /*si login pas vide, si psw = exempledemdp, on démarre la session*/
$_SESSION['login'] = $login;
$_SESSION['psw'] = $psw;
$_SESSION['logged'] = true;

header('Location: calendrier.php');
}
?>

Au passage, mon script en php se situera sur une page protégée par un "https", est-ce suffisamment sécurisé ?

Dans l'attente de vos conseils.

Mammouth du PHP | 889 Messages

11 mai 2018, 16:18

unexpected '&& veux dire que php ne s'attend pas à ce qu'il y ai && à cet endroit.
un if s'écrit ainsi :
if($condition){

}
il y a bien la condition entre parenthèse dans la ligne :
if($login = '') && ($psw = ''){
mais il ne peut pas y avoir ce qu'il y a dans cette ligne après la parenthèse fermante.
il faut enlever les 2 caractères superflus, voir que cela ne fonctionne toujours pas et ajouter les 2 caractères qui manquent.

Petit nouveau ! | 7 Messages

14 mai 2018, 22:28

Merci OR, grâce à toi j'avance, doucement mais sûrement.

Le message d'erreur c'était juste une histoire de parenthèses qui ne devaient pas être là.
C'était effectivement la ligne 15 :
if($login = '' && $psw = ''){ /*Si ces variables sont vides*/
header('Location: connexion_planning.php'); /*renvoie sur la page en cours1*/

et non:
if($login = '') && ($psw = ''){ /*Si la var est vide*/
header('Location: connexion_planning.php'); /*renvoie la page en cours1*/


Donc pour le message d'erreur c'est réglé apparemment, MAIS, la page d'accueil passe directement sur 'index.php?error=1' et ne reste pas sur la page sur laquelle ça arrive c'est à dire 'connexion_planning.php', le problème c'est que je ne vois pas pourquoi... Une idée ?

Cordialement, :-)

Mammouth du PHP | 889 Messages

14 mai 2018, 22:33

"voir que cela ne fonctionne toujours pas et ajouter les 2 caractères qui manquent."
à
if($login = '' && $psw = ''){

Petit nouveau ! | 7 Messages

16 mai 2018, 00:11

le double == ?
C'est bien ça ?

if($login == '' && $psw == ''){ /*Si ces variables sont vides*/
header('Location: connexion_planning.php'); /*renvoie la page en cours1*/

Là par contre j'ai une autre erreur ...

Ca dit ça :
La page n’est pas redirigée correctement
Firefox a détecté que le serveur redirige la demande pour cette adresse d’une manière qui n’aboutira pas.
La cause de ce problème peut être la désactivation ou le refus des cookies.


Qu'en penses-tu ? Qu'est-ce qui peut être à l'origine de ce message d'erreur d'après toi ??? Se pourrait-il que cette maudite ligne de code agisse comme une boucle infinie ??? Pppppfffff je galère.

Mammouth du PHP | 1340 Messages

16 mai 2018, 11:55

tu redirige vers ta propre page, c'est normal que cela n'aboutira pas. retire ta redirection et laisse ton script se dérouler.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Petit nouveau ! | 7 Messages

16 mai 2018, 21:37

J'ai supprimé la ligne qui posait problème, maintenant j'ai un autre message d'erreur :
"Notice: Undefined variable: login in /opt/lampp/htdocs/www/Planning/Planning_franky/connexion_planning.php on line 27
Notice: Undefined variable: psw in /opt/lampp/htdocs/www/Planning/Planning_franky/connexion_planning.php on line 28"

Le code actuel donne ça :
<?php

/* Enregistrement des variables*/

ligne 27 $login == 'test1'||'test2';
ligne 28 $psw =='exempledemdp';

/* Puisque les variables sont définies */

$login = isset($_POST['login']) ? $_POST['login'] : '';
$psw = isset($_POST['psw']) ? $_POST['psw'] : '';

/* Test de validité d'informations de connection */

if($login == '' && $psw == ''){
}elseif($login != 'test1' OR 'test2') { /*Si la var est différente des var préalablement enregistrées.*/
header('Location: index.php?error=1'); /*renvoie page d'accueil,avec 1 param code error 1*/
}elseif ($psw != "exempledemdp"){ /* si psw different de toto,*/
header('Location: index.php?error=2='.$psw); /*renvoie page d'accueil,avec 1 param code error 2*/
}else {
session_start(); /*si login pas vide, si psw = toto, on demarre la session*/
$_SESSION['login'] = $login;
$_SESSION['psw'] = $psw;
$_SESSION['logged'] = true;

header('Location: calendrier.php');
}
?>

Pourtant les variables sont bien définies... que faire ?

Mammouth du PHP | 1340 Messages

17 mai 2018, 10:24

Une notice t'indique un soucis sans empecher le scrip de fonctionner

Une définition de variable n'est pas nécessaire et ne se fait pas comme cela

Si tu veux vraiment les déclarer pour la lisibilité,
$login = '';
$psw = '';
mais les lignes
$login = isset($_POST['login']) ? $_POST['login'] : '';
$psw = isset($_POST['psw']) ? $_POST['psw'] : '';
définisse aussi tes variables

le double égale sert de comparaison, du coup php cherche tes variables lors de leur "definition".

Maintenant, tes variables $login et $psw valent le contenu du formulaire ou elles sont vide, donc tes conditions ne servent à rien

de plus une condition comme celle ci
$login != 'test1' OR 'test2'
n'est pas correct
il faudrait mettre (mais c'est inutile voir plus haut
$login != 'test1' OR $login != 'test2'

Dans le script actuel, tant que login ou psw sont rempli de quoi que ce soit, le login se fera, il te manque la vérification de valeur
des 2 variables.

dans ta première condition, un OU || serait mieux qu'un && et le mieux serait de renvoyer vers la page index avec une erreur qu'il manque le mot de passe et / ou login
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie