Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PHP 8.1] Redirection ne fonctionne plus

    1 avril 2024 à 14:48:07

    Bonjour,

    Depuis quelque temps, la redirection ne fonctionne plus sur ma page connexion et déconnexion.

    Page information.php

    <?php
    /*
    Page information.php
    
    */
     
    if(!isset($informations))
    {
    	$informations = Array(/*Erreur*/
    					true,
    					'Erreur',
    					'Une erreur interne est survenue...',
    					'',
    					$lien.'/index_v2.php',
    					3
    					);
    }
     
    if($informations[0] === true) $type = 'erreur';
    else $type = 'information';
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head>
    		<title><?php echo $informations[1]; ?> : <?php echo TITRESITE; ?></title>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    		<meta name="language" content="fr" />
    		<meta http-equiv="Refresh" content="<?php echo $informations[5]; ?>;url=<?php echo $informations[4]; ?>">
    		<link rel="stylesheet" title="Design" href="<?php echo $lien; ?>/babybroderie.css" type="text/css" media="screen" />
    	</head>
     
     
    	<body>
    		<div id="info">
    			<div id="<?php echo $type; ?>"><?php echo $informations[2]; ?> Redirection en cours...<br/>
    			<a href="<?php echo $informations[4]; ?>">Cliquez ici si vous ne voulez pas attendre...</a><?php echo $informations[3]; ?></div>
    		</div>
    	</body>
    </html>
    <?php
    unset($informations);
    ?>

    Page connexion.php

    <?php
    session_start();
    header('Content-type: text/html; charset=utf-8');
     
    /********Actualisation de la session...**********/
    include('../incl/connexion.php');
    include('../incl/fonctions.php');
    actualiser_session();
    /********Fin actualisation de session...**********/
     
     
    if(isset($_SESSION['membre_id']))
    {
        $informations = Array(/*Membre qui essaie de se connecter alors qu'il l'est déjà*/
                        true,
                        'Vous êtes déjà connecté',
                        'Vous êtes déjà connecté avec le mail <span class="m">'.htmlspecialchars($_SESSION['email'], ENT_QUOTES).'</span>.',
                        ' - <a href="'.$lien.'/clients/deconnexion.php">Se déconnecter</a>',
                        $lien.'/index_v2.php',
                        5
                        );
        require_once('../information.php');
        exit();
    }
     
     
    if($_POST['validate'] != 'ok')
    {
    	/********Entête et titre de page*********/
    	$titre = '';
    	/**********Fin entête et titre***********/
     
    ?>
     
    <!DOCTYPE html><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
    <?php include('../incl/script.php'); ?>
     
    	<title>BabyBroderie</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    	<meta name="language" content="fr" />
    	<link rel="stylesheet" title="Design" href="https://babybroderie.fr/babybroderiev3.css" type="text/css" media="screen" />
    	<link rel="stylesheet" href="lightbox2-master/dist/css/lightbox.min.css" />
    </head>
     
    <?php
    //Script automatique
    			$timestamp_actuel = time()-14400; 
    			if($donnees['date_panier']<$timestamp_actuel)
    			{
    				$timestamp_actuel = time()-14400;
    				$commande_id = 0;
    				$req = $bdd -> prepare("SELECT * FROM panier WHERE commande_id = :commande_id AND date_panier < :timestamp_actuel");
    				$req->execute(array(
    						'commande_id' => $commande_id,
    						'timestamp_actuel' => $timestamp_actuel));
    				While($donnees = $req->fetch())
    				{ 
     
    					$stockajout = $bdd->prepare('UPDATE stocks SET stock = (stock + 1)
                                                WHERE produit_id = :produit_id AND couleur_id = :couleur_id' );
    					$stockajout->execute(array(
    									'produit_id' => $donnees['produit_id'],
    									'couleur_id' => $donnees['couleur_produit']));  
     
    				}
    				$supprimer = $bdd -> prepare('DELETE FROM panier WHERE commande_id = :commande_id AND date_panier < :date_panier');
    				$supprimer -> execute( array(
    								'commande_id' => $commande_id, 
    								'date_panier' => $timestamp_actuel));	
    			}
    //fin Script
    ?>
     
    <body>
     
    	<div id="bloc_page">
     
    		<?php
    		include('../incl/header.php'); //contient le doctype, et head.
    		?>
     
    		<div id="supprime">
    		e
    		</div>
     
     
     
    			<!--/////////////////////////////  CORPS  //////////////////////////////// -->
     
    			<div id="description">
    				<h3>Connexion : </h3>	
    			</div>
     
    			<div id="bandeau_bleu">
     
    			</div>
     
    			<div id="description_texte">
    				<p>	
    				Pour vous connecter, indiquez votre pseudo et votre mot de passe.<br/>
     
    				Vous pouvez aussi cocher l'option "Me connecter automatiquement à mon prochain passage." pour laisser une trace sur votre ordinateur pour être
     
    				connecté automatiquement.<br/>
     
    				Ce système de trace est basé sur les cookies, ce sont des petits fichiers
     
    				contenant votre numéro d'identification ainsi qu'une version cryptée de votre
     
    				mot de passe. Ces fichiers ne peuvent en aucun cas endommager votre ordinateur,
     
    				ni l'affecter d'aucune façons, vous pourrez les supprimer à tout moment dans
     
    				les options de votre navigateur.
    				</p>
    			</div>
     
     
     
     
    			<form name="connexion" id="connexion" method="post" action="connexion.php">
     
    				<?php if (!empty($_GET['redirect'])): ?>
    				<input type="hidden" name="redirect" value="<?= $_GET['redirect'] ?>">	
     
    				<div id="connexion">
    						<label for="email">Email :</label> 
    							<input type="text" name="email" id="email" value="<?php if(isset($_SESSION['connexion_email'])) echo $_SESSION['connexion_email']; ?>"/><br/><br />
     
    						<label for="mdp">Passe :</label>
    							<input type="password" name="mdp" id="mdp"/><br/>
     
    						<input type="hidden" name="validate" id="validate" value="ok"/><br/>
     
    						<input type="checkbox" name="cookie" id="cookie" class="checkbox" /> 
    							<label for="cookie">Me connecter automatiquement à mon prochain passage.</label><br/><br/>
     
    						<input type="submit" value="Connexion" /><br /><br />
     
     
    					<div id="description">
    						<h3>Option :</h3>	
    					</div>
     
    					<div id="bandeau_bleu">
     
    					</div>
     
     
    					<p><br/>
    						<a href="inscription.php">Je ne suis pas inscrit !</a><br/><br/>
     
    						<a href="oublie_mdp.php">J'ai oublié mon mot de passe !</a><br/><br/><br/>
     
    					</p>
    				</div>
    				<?php endif; ?>
    			</form>
     
    <?php
    }// Fin validate OK
    else
    {
    	$req = $bdd->query("SELECT COUNT(membre_id) AS nbr, membre_id, email, mdp, membre_validation FROM membres 
    										WHERE email = '".$_POST['email']."' GROUP BY membre_id", 1);
    	$result = $req->fetch();										
     
    	if($result['nbr'] == 1)
    	{
    		if((md5($_POST['mdp']) == $result['mdp']) & ($result['membre_validation']==1))
    		{
    			$_SESSION['membre_id'] = $result['membre_id'];
    			$_SESSION['email'] = $result['email'];
    			$_SESSION['mdp'] = $result['mdp'];
    			unset($_SESSION['connexion_email']);
     
    			if(isset($_POST['cookie']) && $_POST['cookie'] == 'on')
    			{
    				setcookie('membre_id', $result['membre_id'], time()+365*24*3600);
    				setcookie('mdp', $result['mdp'], time()+365*24*3600);
    			}
     
     
    			if (!empty($_POST['redirect']))
    			{								
    				$informations = Array(/*Vous êtes bien connecté*/
    						false,
    						'Connexion réussie',
    						'Vous êtes désormais connecté',
    						'',
    						$_POST['redirect'],
    						3
    						);
    			}
     
    			else 
    			{
    				$redirect = 'index.php';
    			}		
     
    			require_once('../information.php');
    			exit();						
     
    		}
     
    		if((md5($_POST['mdp']) == $result['mdp']) & ($result['membre_validation']!=1))
    		{
    			$informations = Array(/*Erreur de mot de passe*/
    						true,
    						'Non validé',
    						'Votre compte n\'est pas encore validé, veuillez clquez sur le lien reçu par mail. Si vous n\'avez pas reçu de mail,
    						vérifié dans les SPAMS',
    						' - <a href="'.$lien.'/index_v2.php">Index</a>',
    						$lien.'/membres/connexion.php',
    						3
    										);
    			require_once('../information.php');
    			exit();
    		}
     
    		else
    		{
    			$_SESSION['connexion_email'] = $_POST['email'];
    			$informations = Array(/*Erreur de mot de passe*/
    						true,
    						'Mauvais mot de passe',
    						'Vous avez fourni un mot de passe incorrect.',
    						' - <a href="'.$lien.'/index_v2.php">Index</a>',
    						$lien.'/membres/connexion.php',
    						3
    										);
    			require_once('../information.php');
    			exit();
    		}
    	}
     
    	else if($result['nbr'] > 1)
    	{
    		$informations = Array(/*Erreur de pseudo doublon (normalement impossible)*/
    					true,
    					'Doublon',
    					'Deux membres ou plus ont le même pseudo, contactez un administrateur pour régler le problème.',
    					' - <a href="'.$lien.'/index_v2.php">Index</a>',
    					$lien.'/contact.php',
    					3
    					);
    		require_once('../information.php');
    		exit();
    	}
     
    	else
    	{
    		$informations = Array(/*Pseudo inconnu*/
    					true,
    					'Email inconnu',
    					'L\'email <span class="email">'.htmlspecialchars($_POST['email'], ENT_QUOTES).'</span> n\'existe pas dans notre base de données. Vous avez probablement fait une erreur.',
    					' - <a href="'.$lien.'/index_v2.php">Index</a>',
    					$lien.'/membres/connexion.php',
    					5
    					);
    		require_once('../information.php');
    		exit();
    	}
    }
    			?>	
     
     
    			<!--/////////////////////////////  FIN CORPS  //////////////////////////////// -->
    		<?php
    		include('../incl/footer.php'); //contient le doctype, et head.
    		?>
     
    	</div> <!--Fin bloc page -->
     
     
    </body>
    </html>

    Page deconnexion.php

    <?php
    /*
    Neoterranos & LkY
    Page deconnexion.php
    
    Permet de se déconnecter du site.
    
    Quelques indications : (Utiliser l'outil de recherche et rechercher les mentions données)
    
    Liste des fonctions :
    --------------------------
    Aucune fonction
    --------------------------
    
    
    Liste des informations/erreurs :
    --------------------------
    Déconnexion
    --------------------------
    */
    session_start();
    include('../includes/config.php');
    include('../includes/connexion.php');
    include('../includes/fonctions.php');
     
    $bdd->query("DELETE FROM connectes WHERE connectes_id = ".$_SESSION['membre_id']);
    vider_cookie();
    session_destroy();
     
    $informations = Array(/*Déconnexion*/
    				false,
    				'Déconnexion',
    				'Vous êtes à présent déconnecté.',
    				' - <a href="'.$lien.'/membres/connexion.php">Se connecter</a>',
    				$lien.'/index.php',
    				5
    				);
     
    require_once('../information.php');
    exit();
    ?>


    Merci pour votre aide



    • Partager sur Facebook
    • Partager sur Twitter
      1 avril 2024 à 21:10:41

      Bonjour,

      Et où est la redirection qui ne fonctionne pas ?

      Il n'y a aucune redirection sur tes codes

      • Partager sur Facebook
      • Partager sur Twitter
        2 avril 2024 à 23:37:27

        Hello,

        Le code entier est à revoir. Il n'y a rien qui va. J'ai vraiment l'impression que c'est du copier coller de code à droite, à gauche voir pire du chatgpt.

        Il y en a tellement que je ne vais pas faire une liste.

        • Partager sur Facebook
        • Partager sur Twitter
          7 avril 2024 à 16:14:53

          Merci vous 2 pour ces interventions


          Aurélien10! a écrit:

          Bonjour,

          Et où est la redirection qui ne fonctionne pas ?

          Il n'y a aucune redirection sur tes codes

          La redirection est ici sur la page connexion.php et information.php

                      if (!empty($_POST['redirect']))
                      {                              
                          $informations = Array(/*Vous êtes bien connecté*/
                                  false,
                                  'Connexion réussie',
                                  'Vous êtes désormais connecté',
                                  '',
                                  $_POST['redirect'],
                                  3
                                  );
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
              <head>
                  <title><?php echo $informations[1]; ?> : <?php echo TITRESITE; ?></title>
                  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                  <meta name="language" content="fr" />
                  <meta http-equiv="Refresh" content="<?php echo $informations[5]; ?>;url=<?php echo $informations[4]; ?>">
                  <link rel="stylesheet" title="Design" href="<?php echo $lien; ?>/babybroderie.css" type="text/css" media="screen" />
              </head>
            
            
              <body>
                  <div id="info">
                      <div id="<?php echo $type; ?>"><?php echo $informations[2]; ?> Redirection en cours...<br/>
                      <a href="<?php echo $informations[4]; ?>">Cliquez ici si vous ne voulez pas attendre...</a><?php echo $informations[3]; ?></div>
                  </div>
              </body>
          </html>
          <?php
          unset($informations);


          Ce code est assez vieux donc je vais peut-être le revoir sans refaire de redirection.

          quenti77 a écrit:

          Hello,

          Le code entier est à revoir. Il n'y a rien qui va. J'ai vraiment l'impression que c'est du copier coller de code à droite, à gauche voir pire du chatgpt.

          Il y en a tellement que je ne vais pas faire une liste.


          Ces pages ont été créé grâce à un cours de ce site (anciennement site du zéro). Je n'ai modifié que ce qui vient de la base de données et liens.

          Il est très vieux plus de 10ans je pense.

          Donc pas de chatgpt et je ne sais même pas m'en servir.

          Je vais revoir le code mais je suis un novice et donc fait avec mes propres moyens



          -
          Edité par psgman80 7 avril 2024 à 16:15:51

          • Partager sur Facebook
          • Partager sur Twitter
            7 avril 2024 à 19:39:24

            Hello !

            Le gros problème de ce script est qu'il utilise la bibliothèque Mysql qui non seulement est depuis longtemps déclarée obsolète mais n'est plus supportée depuis PHP 7.

            Tu peux consulter cette page pour voir les alternatives

            D'autre part, quelle que soit la solution proposée (tu seras plus en terrain connu avec mysqli, mais PDO permet de changer rapidement de SGBDD), il est impératif de protéger les requêtes SQL d'injections, notamment via les requêtes préparées.

            • Partager sur Facebook
            • Partager sur Twitter
              7 avril 2024 à 20:19:33

              Domi65 a écrit:

              Hello !

              Le gros problème de ce script est qu'il utilise la bibliothèque Mysql qui non seulement est depuis longtemps déclarée obsolète mais n'est plus supportée depuis PHP 7.

              Tu peux consulter cette page pour voir les alternatives

              D'autre part, quelle que soit la solution proposée (tu seras plus en terrain connu avec mysqli, mais PDO permet de changer rapidement de SGBDD), il est impératif de protéger les requêtes SQL d'injections, notamment via les requêtes préparées.


              Tu me diras où tu vois du "mysql_*" ?

              Oui pour les requêtes non préparer (ou mal préparer)

              • Partager sur Facebook
              • Partager sur Twitter
                8 avril 2024 à 8:27:42

                Bonjour, 

                On est d'accord que c'est un lien à cliquer, $informations[4] ? Le problème de redirection est que le lien avec $informations[4] ne marche pas ?

                Parce que comme précisé plus haut, il n'y a aucune redirection "active" dans ce code.

                S'il y en a une (et qui ne marche plus) il nous manque sans doute un bout de JS ou qqch comme ça

                • Partager sur Facebook
                • Partager sur Twitter
                  8 avril 2024 à 19:05:30

                  @orelien10!

                  « Tu me diras où tu vois du "mysql_*" ? »

                  Nulle part, en effet. D'autant plus que si je me souviens bien, la bibliothèque mysql ne connait ni le style orienté objet, ni les requêtes préparées. Je ne devais pas avoir les yeux en face des trous !! Heureusement, ça n'a pas l'air d'avoir troublé l'auteur du topic.

                  Cordialement.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 avril 2024 à 9:49:13

                    Bonjour,

                    Donc le problème vient de "$_POST['redirect']" qui lui même vient de la page connexion.php '<input type="hidden" name="redirect" value="&lt;?= $_GET['redirect'] ?&gt;" />' ? Si c'est bien ceci qu'y a t'il dans ce champs caché ?

                    Cordialement

                    -
                    Edité par Comar91 10 avril 2024 à 9:52:20

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Comar

                    [PHP 8.1] Redirection ne fonctionne plus

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    • Editeur
                    • Markdown