Probleme avec un link dans mon fichier de connexion

Résolu/Fermé
flexi2202 Messages postés 3718 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 26 novembre 2022 - 18 juil. 2021 à 23:33
flexi2202 Messages postés 3718 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 26 novembre 2022 - 19 juil. 2021 à 07:31
bonsoir a tous
je viens de tester mon site sur un hébergeur gratuit et tout fonctionne a merveille
notamment la connexion

par contre sur mon hébergeur payant j ai un soucis avec mon fichier de connexion et notamment avec ce morceau de code voir ci après

lorsque je le laisse dans mon code
j ai un message d erreur comme quoi la variable link n est pas définie ?

Notice: Undefined index: link in /home/u434600775/domains/pecheperle.be/public_html/phil/connexion.php on line 66



normalement je ne devrais pas recevoir de message d erreur puisque je la teste
et si elle est vide je suis redirige vers l acceuil

<?php
session_start();

//gestion des erreurs
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//je rends la variable link propre 
$link = !empty($_GET['link']) ? $_GET['link'] : NULL;

//je me connecte a ma base de donnee
require_once 'base.php';

//je verifie le pseudo et le password 
if (!empty($_POST['pseudo']) && !empty($_POST['password']))
{
	
	//je mts au propre deux variables
    $pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
    $password = !empty($_POST['password']) ? $_POST['password'] : NULL;
   
   //debut requete
    $sql = 'SELECT pseudo, email,id, password FROM utilisateurs WHERE pseudo = ?';
    $datas = [$pseudo];
    //Execution de la requete
    try
    {
        $requete = $bdd->prepare($sql);
        $requete->execute($datas);
    }
    catch(Exception $e)
    {
        // en cas d'erreur :
        echo " Erreur ! " . $e->getMessage();
        echo " Les datas : ";
        print_r($datas);
    }
    $data = $requete->fetch();
    $row = $requete->rowCount();

    //si le peusdo est bien dans la base alors on continue sinon on sort
    if ($row == 1)
    {
        //on verifie le pawword si il est ok on continue , sinon sortie
        if (password_verify($password, $data['password']))
        {
            //on definit et on cree les variables sessions
            $_SESSION['user'] = array(
                'id' => $data['id'],
                'pseudo' => $data['pseudo'],
                'email' => $data['email']
            );
            $_SESSION['id'] = $data['id'];
            $_SESSION['pseudo'] = $data['pseudo'];
            $_SESSION['email'] = $data['email'];

            //on test la variable link si elle est vide  on va vers index
            if (empty($_SESSION['link']))
            {
                header('Location: accueil-peche-perle.php?pseudo=' . $_SESSION['pseudo']);
                //sinon on va faire la dernière page visitée
                
            }
            else (!empty($_SESSION['link']));
            {
                header('location: ' . $_SESSION['link']);
            }
            die();
        }
        else
        {
            header('Location: connexion-site.php?login_err=password');
            die();
        }
    }
    else
    {
        header('Location: connexion-site.php?login_err=already');
        die();
    }
}
?>`

5 réponses

Bonsoir,

Regarde bien le dernier caractère de ta ligne 65.

else (!empty($_SESSION['link']));
0
flexi2202 Messages postés 3718 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 26 novembre 2022 172
Modifié le 19 juil. 2021 à 00:31
bonsoir
merci pour la réponse
mais lorsque j enlève le ";" le code me dit qu il manque un point virgule
0
C'est toute la ligne qui est mauvaise. On ne met pas de condition dans un else. Le else, c'est l'action à faire lorsque les autres if/else if sont invalides.
D'ailleurs le reste du code n'est pas sans défaut... c'est bien de faire une variable
$link
, mais elle sert à quoi ? Tu ne l'utilises pas dans ton code.
0
flexi2202 Messages postés 3718 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 26 novembre 2022 172
Modifié le 19 juil. 2021 à 01:15
bonjour Pyraah
ah bon tout est mauvais ...
et donc en relisant mon code je n utilise pas cette variable link en effet

je ne comprends pas bien comment je pourrais faire avec les if et les else

car
mon code est fait de cette manière
j ai bien 3 if
puis 3 else

qui sont imbrique les uns dans les autres

je ne vois pas comment j aurais pu faire

le pire c est que ce code fonctionne sur l hébergeur gratuit
0
Je n'ai pas dit que le code est mauvais, j'ai dit que la ligne est mauvaise...et que tu n'utilises pas ta variable $link ;-).

Et tu as tendance à te perdre facilement dans ton code, c'est normal lorsqu'on débute. Et c'est pour ça qu'il faut faire attention à l'indentation du code, pour qu'il soit lisible.

Et ton if/else... else se traduit littéralement par "sinon". Si tu veux mettre une condition, c'est un else if (sinon si) qu'il faut utiliser.

Après peu importe combien de if tu as imbriqués. Le else sera toujours la fin du if le plus proche. Et il sera toujours exécuté si le if le plus proche n'a pas satisfait une condition.

IF 1
IF 2
IF 3
ELSE 3 (fin du IF 3)
ELSE 2 (fin du IF 2
ELSE 1 (fin du IF 1)


Je n'ai pas la pédagogie nécessaire pour mieux t'aider, mais je te conseille fortement de survoler un cours dédié aux débutants.
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql?status=published
0
flexi2202 Messages postés 3718 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 26 novembre 2022 172
19 juil. 2021 à 01:44
merci pour la reponse
il est vrai que j ai tendance a me perde dans mon code et pourtant quand je vois mes débuts cela va beaucoup mieux

oui j ai bien compris le principe du if et else
pourtant j ai beau me relire
je suis bon quand même

y a un truc qui m échappe
j ai mis les numéros des if et else en commentaire

<?php
session_start();

//gestion des erreurs
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//je me connecte a ma base de donnee
require_once 'base.php';

//je verifie le pseudo et le password 
//if numero 1
if (!empty($_POST['pseudo']) && !empty($_POST['password']))
{
	
	//je mts au propre deux variables
    $pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
    $password = !empty($_POST['password']) ? $_POST['password'] : NULL;
   
   //debut requete
    $sql = 'SELECT pseudo, email,id, password FROM utilisateurs WHERE pseudo = ?';
    $datas = [$pseudo];
    //Execution de la requete
    try
    {
        $requete = $bdd->prepare($sql);
        $requete->execute($datas);
    }
    catch(Exception $e)
    {
        // en cas d'erreur :
        echo " Erreur ! " . $e->getMessage();
        echo " Les datas : ";
        print_r($datas);
    }
    $data = $requete->fetch();
    $row = $requete->rowCount();

    //si le peusdo est bien dans la base alors on continue sinon on sort
	//if numero 2
    if ($row == 1)
    {
        //on verifie le pawword si il est ok on continue , sinon sortie
		//if numero 3
        if (password_verify($password, $data['password']))
        {
            //on definit et on cree les variables sessions
            $_SESSION['user'] = array(
                'id' => $data['id'],
                'pseudo' => $data['pseudo'],
                'email' => $data['email']
            );
            $_SESSION['id'] = $data['id'];
            $_SESSION['pseudo'] = $data['pseudo'];
            $_SESSION['email'] = $data['email'];

            //on test la variable link si elle est vide  on va vers index
			//if numero 4
            if (empty($_SESSION['link']))
            {
                header('Location: accueil-peche-perle.php?pseudo=' . $_SESSION['pseudo']);
                //sinon on va faire la dernière page visitée
                
            }
			//else numero 4
            else (!empty($_SESSION['link']));
            {
                header('location: ' . $_SESSION['link']);
            }
            die();
        }
		//else numero 3
        else
        {
            header('Location: connexion-site.php?login_err=password');
            die();
        }
    }
	//else numero 2
    else
    {
        header('Location: connexion-site.php?login_err=already');
        die();
    }
}
?>`
0
jordane45 Messages postés 36573 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 novembre 2022 4 398
Modifié le 19 juil. 2021 à 06:55
Bonjour
Logne 68... Tu ne peux pas mettre de CONDITION sur un ELSE


   //if numero 4
            if (empty($_SESSION['link']))  {
                header('Location: accueil-peche-perle.php?pseudo=' . $_SESSION['pseudo']);
                //sinon on va faire la dernière page visitée
                
            }
   //else numero 4
            else    {
                header('location: ' . $_SESSION['link']);
            }
0

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

Posez votre question
flexi2202 Messages postés 3718 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 26 novembre 2022 172
19 juil. 2021 à 07:31
bonjour Jordane

Merci pour l aide et juste tu as entièrement raison et cela est tout a fait logique


encore merci
0