Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonction javascript plus rechargement de page

    23 juin 2024 à 22:56:54

    Bonjour à tous. Voici mon problème. J'ai un script de connexion qui fonctionne. J'ai récemment intégré un script javascript qui permet l'affichage d'une notification au lieu d'un moche echo. Le problème est qu'il faut que je vérifie les données dans ma base de données pour voir si les identifiants sont correctes. Mais comme la page se recharge je ne peux pas afficher la notification javascript car la fonction javascript n'est pas appelée.  Et si j'utilise la fonction "event.preventDefault()"  les données ne sont pas envoyées à php. Voici mon code
    <?php
    session_start();
    
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8" />
    		<title>Connexion</title>
    	<link href="design.css" rel="stylesheet">
    	<style>
    	button
    	{
    		transition: all 0.2s;
    	}
    	#notification
    	{
    		position: fixed;
    		color: #ff4754;
    		background: #000;
    		border-radius: 5px;
    		padding: 1.2rem 2.4rem;
    		font-family: arial, sans-serif;
    		box-shadow: 3px 6px 12px rgba(0, 0, 0, .4);
    		bottom: -8rem;
    		transition: all .4s;
    	}
    	#notification.show
    	{
    		bottom: 2rem;
    	}
    	</style>
    </head>
    
    <body>
    
    <?php
    
    require('menu.php');
    ?>
    
    <main>
    
    <form method="post" action="connexion.php">
    <fieldset>
    <legend>Formulaire de connexion</legend>
    <label>pseudo</label><br/><input type="text" name="pseudo"/><br/>
    <label>Mot de passe</label><br/><input type="password" name="motDePasse"/><br/>
    <input type="submit" value="Se connecter" name="valider" id="button"/>
    </fieldset>
    
    </form>
    
    
    
    <div id="notification">
    Vous êtes maintenant connecté (redirection vers l'accueil dans 5s)
    </div>
    
    <script>
    
    const button = document.querySelector('#button');
    const notification = document.querySelector('#notification');
    var temps = 5;
    
    
    function redirection(){
    	
    	notification.innerText = 'Vous êtes maintenant connecté (redirection vers l\'accueil dans ' + temps + 's)';
    	if (temps > 0)
    	{
    		temps--;
    	}
    	else if (temps == 0)
    	{
    		document.location.href = 'index.php';
    	}
    }
    
    
    button.addEventListener('click', () => {
    	event.preventDefault();
    	notification.classList.add('show');
    	setInterval(redirection, 1000);
    });
    
    </script>
    
    <?php
    
    $db = new PDO('mysql:host=localhost;dbname=blender', 'root', '');
    
    if (isset($_POST['pseudo']) AND isset($_POST['motDePasse']))
    {
    
    	$reponse = $db->prepare('SELECT COUNT(*) AS pseudoBdd FROM membres WHERE pseudo = :pseudo');
    	$reponse->execute(array(
    		'pseudo' => $_POST['pseudo']
    		));
    	
    	while($donnees = $reponse->fetch()){$pseudoBdd = $donnees['pseudoBdd'];}
    	
    	if ($pseudoBdd == 1)
    	{
    		$reponse = $db->prepare('SELECT pseudo, motDePasse, banni, categorie FROM membres WHERE pseudo = :pseudo');
    		$reponse->execute(array(
    			'pseudo' => $_POST['pseudo']
    			));
    			
    		while ($donnees = $reponse->fetch())
    		{
    			$pseudo = $donnees['pseudo'];
    			$hash = $donnees['motDePasse'];
    			$motDePasseEntre = $_POST['motDePasse'];
    			$banni = $donnees['banni'];
    			$categorie = $donnees['categorie'];
    		}
    		
    		if (password_verify($motDePasseEntre, $hash))
    		{
    			if ($banni == 'oui')
    			{
    				$message = 'vous avez été banni';
    			}
    			else
    			{	
    				$ok = true;
    				$_SESSION['pseudo'] = $pseudo;
    				$_SESSION['categorie'] = $categorie;
    			}
    		}
    		else
    		{
    			$message = 'vous avez mal confirmé votre mode passe';
    		}
    	}
    	
    	
    }
    
    ?>
    </main>
    </body>
    </html>
    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2024 à 17:55:46

      Bonjour, ce que je propose c'est d'afficher les notifications apres la redirection. Lorsque l'utilisateur se connecte avec succes, au lieu d'afficher la notification sur la page de connexion tu affiches la notification sur la page d'accueil(donc apres sa connexion). Tu peux le faire en manipulant les variables de sessions en PHP, tu peux en savoir plus ici: PHP Flash Messages (phptutorial.net).

      Pour ton problème tu peux verifier les identifiants avec ajax(donc la page ne se rechargera pas lors de la soumission des données), si c'est bon tu affiches ta notification puis redirection.

      • Partager sur Facebook
      • Partager sur Twitter
        25 juin 2024 à 21:57:18

        ok merci. Sinon je pensais créer une page spécifique pour le traitement des messages de l'ensemble de mon site web. Qu'en penses-tu?
        • Partager sur Facebook
        • Partager sur Twitter
          26 juin 2024 à 10:46:53

          Un script ou une page ?

          Oui tu penses bien, il est preferable que son fichier soit "seul".

          • Partager sur Facebook
          • Partager sur Twitter

          fonction javascript plus rechargement de page

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