[RESOLU] Problème redirection page de profil espace membres

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème redirection page de profil espace membres

Re: [RESOLU] Problème redirection page de profil espace membres

par Saian » 23 févr. 2020, 00:33

Pour le js ça peut se faire simplement comme ça :
<script type="text/javascript">
window.onload = function() {
  document.getElementById('anchor-id').scrollIntoView(true);
};
</script>
Tu mets ça dans la page quand tu as une erreur et que tu veux que ça scroll, en remplaçant anchor-id par l'id de ton ancre (sans oublier de l'enlever de l'action du form). Comme ça pas d'ancre dans l'adresse.

Re: Problème redirection page de profil espace membres

par Stevenhonor » 23 févr. 2020, 00:07

D'accord!
J'apprend énormément de choses grâce à toi ! :)

Pour ce qui concerne mon problème d'ancre je verrais pour mettre du javascript plus tard mais je vais laisser l'ancre en attendant.
Je passe le sujet en résolu du coup! Merci beaucoup! :)

Re: Problème redirection page de profil espace membres

par Saian » 22 févr. 2020, 23:39

C'est plutôt action="#send" et id="send".
Mais si tu veux pas avoir l'ancre dans la barre d'adresse après la redirection, il faudrait plutôt passer par du javascript pour gérer le scroll.
Une autre solution est de faire une redirection en html (tu envois bien une page au navigateur avec une balise meta et il redirige vers l'adresse définit dans la balise et là l'ancre est bien supprimée) :
echo '<meta http-equiv="refresh" content="1;URL=profil.php">';
// 1 = durée en seconde avant refresh, tu peux utiliser des valeurs décimales 0.1
exit();
Mais du coup ça fait une sorte de flash (une page blanche) juste avant la redirection. D'ailleurs tu pourrais faire un echo "Redirection vers l'espace membre..."; voir carrément faire un design pour la page Redirection... ^^

A toi de voir.

Re: Problème redirection page de profil espace membres

par Stevenhonor » 22 févr. 2020, 23:17

D'accord, merci!
Par contre par rapport à l'action d'un de mes formulaires j'ai un petit problème.
J'ai une page d'édition de profil assez grande, et mes messages d'erreurs s'affiche tout en bas. Du coup je pensais mettre un action="send" et une ancre name="#send" mais si le formulaire est bien rempli et qu'il n'y a pas de message d'erreur ça va du coup me renvoyer vers ma page de profil grâce à un header avec mes information modifié mais du coup l'url contiendra le #send à la fin, non ?

je sais aussi que je pourrais genre mettre l'affichage des messages d'erreurs tout en haut mais ça va casser la logique de mes autres formulaires... Et puis un message d'erreur en haut d'un formulaire c'est pas top... haha

Re: Problème redirection page de profil espace membres

par Saian » 22 févr. 2020, 23:05

Après chaque header location, oui. ;)

Re: Problème redirection page de profil espace membres

par Stevenhonor » 22 févr. 2020, 22:59

Impeccable! Ca marche parfaitement maintenant ! :)
Et si j'ai bien compris le exit(); se met après un header location, permet d'éviter à une page de charger du script/code inutile et je peux donc en mettre après chaque header sur toutes mes pages où il y en a ? :)

Re: Problème redirection page de profil espace membres

par Saian » 22 févr. 2020, 22:39

C'est le action du formulaire, mets action="" ça devrait être mieux.

Ah oui et ajoute un exit(); après le header location. C'est mieux de prendre l'habitude de le faire, vu que tu veux rediriger l'utilisateur sur une autre page, ça sert à rien que le serveur exécute le script jusqu'au bout.

Re: Problème redirection page de profil espace membres

par Stevenhonor » 22 févr. 2020, 22:34

Code : Tout sélectionner

<?php session_start(); $bdd = new PDO('CONFIDENTIEL'); if(isset($_POST['formconnexion'])) { $mailconnect = htmlspecialchars($_POST['mailconnect']); if (isset($_POST['mdpconnect'])) { $mdpconnect= md5($_POST['mdpconnect']); } if(!empty($mailconnect) AND !empty($mdpconnect)) { $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?"); $requser->execute(array($mailconnect, $mdpconnect)); $userexist = $requser->rowCount(); if($userexist == 1) { $userinfo = $requser->fetch(); $_SESSION['id'] = $userinfo['id']; $_SESSION['pseudo'] = $userinfo['pseudo']; $_SESSION['mail'] =$userinfo['mail']; header("Location: profil.php"); } else { $erreur = "Adresse mail ou mot de passe invalides!"; } } else { $erreur = "touts les champs doivent être complétés!"; } } ?> <html> <head> <link rel="stylesheet" href="Style/inscriptionstyle.css"> <link rel="stylesheet" media="screen and (max-width:1024px)" href="Style/inscriptionstyle.css"> <title>Connexion</title> <meta charset="utf-8"> </head> <body> <navbar> <ul> <li><a href="CONFIDENTIEL">Accueil</a></li> <li><a href="CONFIDENTIEL">En savoir plus</a></li> <li><a href="CONFIDENTIEL">Me contacter</a></li> <li class="current"><a href="CONFIDENTIEL">Connexion</a></li> <li><a href="CONFIDENTIEL">Chatbox</a></li> <li><a href="CONFIDENTIEL">English version</a></li> </ul> </navbar> <div class="main"> <h1>Se connecter</h1> <form method="POST" action="#envoi"> <input type="email" name="mailconnect" placeholder="Votre adresse mail" /> <input type="password" name="mdpconnect" placeholder="Mot de passe" /> <input type="submit" name="formconnexion" value="Connexion" /> </form> <div class="error"> <?php if(isset($erreur)) { echo ''.$erreur.""; } ?> </div> </div> <div class="register"> <p>Vous n'avez pas encore de compte?</p><a href="inscription.php">Creer un compte</a> </div> </body> <footer> <div class="container"> <a href="CONFIDENTIEL/conditions.php">Mentions légales</a> </div> </footer> </html>

Re: Problème redirection page de profil espace membres

par Saian » 22 févr. 2020, 22:31

Faudrait voir le code du formulaire pour dire.

Re: Problème redirection page de profil espace membres

par Stevenhonor » 22 févr. 2020, 22:30

Oui ça je l'ai compris et fais juste avant que tu ne poste ton message du dessus haha :p
Mais j'ai toujours un #envoi du formulaire dans l'url :x

Re: Problème redirection page de profil espace membres

par Saian » 22 févr. 2020, 22:27

Ben oui tu changes le header location du login.
//header("Location: profil.php?id=".$_SESSION['id']);
header("Location: profil.php");

Re: Problème redirection page de profil espace membres

par Stevenhonor » 22 févr. 2020, 22:24

Effectivement, en vérifiant mes variables et en faisant comme tu as dis, j'ai accès à mon profil une fois connecté et la session est persistante si je change d'onglet ! Du coup je pense que ça marche ! :)

Par contre, j'ai toujours ma barre d'url qui lorsque je me connecte, continue de m'afficher un id + un #envoi (exemple: CONFIDENTIEL/profil.php?id=27#envoi ) mais lorsque je clique ailleurs et que je reviens sur mon profil, l'url devient /profil.php. Il n'y aurais pas un moyen pour que l'url ressemble toujours à la dernière forme ? C'est à dire qu'à la connexion il m'envoie sur /profil.php et qu'il n'affiche plus l'id utilisateur de la base de donnée et le #envoi du form ? :p

Re: Problème redirection page de profil espace membres

par Saian » 22 févr. 2020, 22:01

...
Mais comme j'expliquais plus haut: si je rajoute ces lignes là, en + du
...
Alors la page plante et n'affiche que des erreurs
En fait je note aussi en regardant un peu plus en détail ton code :
if(isset($_SESSION['id'])) {
   $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
   $requser->execute(array($_SESSION['id']));
   $user = $requser->fetch();
// ...

if(isset($_GET['id']) AND $_GET['id'] > 0) {
   $getid = intval($_GET['id']);
   $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
   $requser->execute(array($getid));
   $userinfo = $requser->fetch();
// ...
Sur la partie session la variable c'est $user et sur l'autre $userinfo. Donc forcément ça peut résulter en erreurs si tu n'adaptes pas le nom de la variable comme il faut par rapport au code qui suit.

PS : les messages d'erreurs faut les lire, ça permet souvent de comprendre le problème. ^^

Re: Problème redirection page de profil espace membres

par Saian » 22 févr. 2020, 21:53

J'ai pas regardé tout en détail mais oui ce code ne sert à rien, tu peux enlever l'id de l'adresse et mettre le code avec la session.

Attention aussi aux header('Location: *'). Si tu ne mets pas un exit juste après, le fichier s'exécute jusqu'au bout et ça peut résulter dans certains cas en des comportements inattendus si le code est mal structuré (par exemple si ça passe plus bas sur un unset($_SESSION['id'])).

Re: Problème redirection page de profil espace membres

par Stevenhonor » 22 févr. 2020, 21:50

Donc j'ai juste à retirer le code suivant de ma page de profil ?

Code : Tout sélectionner

if(isset($_GET['id']) AND $_GET['id'] > 0) { $getid = intval($_GET['id']); $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?'); $requser->execute(array($getid)); $userinfo = $requser->fetch(); ?>