6
votes

Comment rediriger si l'utilisateur est déjà connecté

J'ai un script de connexion qui fait cela: xxx

si l'utilisateur s'est connecté avec succès. Et donc j'ai édité la page d'inscription pour le faire: xxx

mais il ne redirige pas l'utilisateur lorsque je me suis connecté avec mon compte que j'ai créé. Pourquoi est-ce?


4 commentaires

L'idée ici est que vous acceptez la réponse qui résout votre question. J'ai remarqué que vous n'avez accepté aucune de vos questions ici. S'il vous plaît faites cela, car vous obtiendrez probablement de bonnes réponses si vous prenez les personnes qui vous aident.


Avez-vous essayé de activer des avertissements? Vous devriez recevoir AVERTISSEMENT: impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés ...


Combien de fois avez-vous posté cet échantillon de code presque identique au cours des derniers jours? Veuillez suivre quelques-uns des conseils que vous avez donnés par des personnes et arrêtez de ré-poster jusqu'à ce que vous ayez au moins une idée de ce que vous faites.


Ne stockez pas le mot de passe dans une session ... Utilisez un jeton quelque chose qui ne donne pas d'informations d'identification d'utilisateur.


5 Réponses :


12
votes
header ( 'Location: index.php' );

7 commentaires

Pouvez-vous remplacer probablement avec obligatoire? il a aussi, sinon cela ne fonctionnera pas du tout


@Hannes il pourrait avoir tampon de sortie allumé donc "probablement" :)


Définition d'une fonction dans un ob ? Ce serait encore pire: D


@Hannes La mémoire tampon de sortie peut être activée dans php.ini et fonctionne "automatiquement".


haussement d'épaules toujours mauvais style tu


@Hannes Je suis d'accord, mais cela peut ou non être le cas ici, je dois donc prendre en compte :)


Cependant, je ne mettez pas le matrice () ou Quitter () dans mon code. Je m'assurens que tout mon code est correctement à l'intérieur du si () ou sinon et que rien ne peut s'exécuter après que la redirection se produise. Je garde mon principal code de contrôleur constitué principalement des appels de fonction une après l'autre afin qu'il n'y ait pas trop de lignes de code et que la portée du si-ele est facilement visible et il n'y a aucune chance de Quelque chose d'exécution par erreur et donc aucun besoin de mettre un sortie ou mourir pour vous assurer que. voulait vos opinions les gens.



10
votes

Modifier la fonction redirection () code> fonction à: xxx pré>

et déplacez l'appel pour rediriger ci-dessus toutes les sorties HTML: P>

<?php
function redirect($DoDie = true) {
    header('Location: index.php');
    if ($DoDie)
        die();
}
php session_start();
if(isset($_SESSION['username'])) {
    redirect();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="jmtoday" class=" no_js">
<head>
 <link href='icon.jpg' rel='icon' type='image/jpg'/>
 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 <meta http-equiv="Content-language" content="en" />
 <LINK REL=StyleSheet HREF="Mainstyles.css" TYPE="text/css"></link>
 <Title>Sign up | JMToday</title>
</head>
<body>
?> 


3 commentaires

Je déplacerais matrice () dans la fonction rediriger () , de sorte que vous n'avez pas à vous rappeler de le taper à chaque fois que vous faites une redirection ...


@Jan j'ai considéré que, mais voulez-vous limiter à être la dernière chose que vous appelez jamais? Je prends en compte que vous pourriez utiliser ultérieurement la fonction rediriger () ailleurs.


Peut-être que vous pourriez passer un paramètre dodie à la fonction rediriger () . Aways, je n'ai jamais rencontré une situation où j'ai fait une redirection et je voulais exécuter du code après cela. Mais c'est juste moi :)



6
votes
function redirect() {
    header('location:index.php');
}

0 commentaires

1
votes

C'est en-tête ('emplacement: index.php');


0 commentaires

0
votes

Si vous voulez rediriger immédiatement, alors xxx

si vous souhaitez rediriger avec un délai, alors xxx

augmenter le 0 dans "Actualiser: 0" pour introduire plus de retard.

Vous pouvez l'utiliser pour rediriger après avoir montré une notification / un message à l'utilisateur.

Note Si Vous avez des problèmes de redirection, puis mettez "sortie ()" à la fin de la fonction


0 commentaires