10
votes

Session perdue après la redirection de la page en PHP

Lorsque j'utilise la redirection d'en-tête PHP, toutes les variables de session sont perdues ... Certaines personnes disent que l'ajout de sortie (); juste après l'en-tête (""); Sera résoudre le problème mais il ne semble pas être la solution ...

Quelqu'un peut-être s'il vous plaît aider? p>

Voici comment je stocke la variable dans la session: p>

//connect database
    require_once 'dbc.php';

    page_protect();

    $authorID = $_SESSION['user_id'];
    if ( !empty($_POST["answ_content"]) && $authorID != 0 ) {
            //vaqciot html chveulebriv texad
            $content = htmlentities($_POST["answ_content"],ENT_COMPAT,'UTF-8');
            $dro = date('Y-m-d H:i:s');
            $qID = $_POST["question_ID"];
            $author = $_SESSION["user_name"];


            $sql="INSERT INTO wp_comments (comment_ID, comment_post_ID, comment_author, comment_author_IP, comment_date, comment_content, user_id) 
                VALUES
              (NULL, '$qID', '$author', '123.123.123.123', '$dro', '$content', '$authorID')";

            $result = mysql_query($sql);

            //pasuxebis raodenobis ertit gazrda
            $increase = "UPDATE wp_posts SET comment_count = comment_count+1 WHERE ID = $qID";
            mysql_query($increase);

            //gadamisamarteba shekitxvis gverdze  
            $url = 'Location:http://example.com/site/answ/question.php?ID=' .$qID;
            header($url);
    } else {
        echo 'error';
    }


4 commentaires

Veuillez afficher un certain code et certains adresses des adresses que vous redirigez.


Pouvez-vous nous montrer du code? Les cookies sont-ils activés sur le PC des utilisateurs? Utilisez-vous des cookies pour vos sessions ou envoyez-vous toujours l'identifiant de session-identifiant comme Get-Paramètre et l'a oublié à votre redirection?


Ajout de tous les codes nécessaires ...


Je l'ai testé sur plusieurs autres ordinateurs et ça marche bien ... ne peut trouver aucune explication ...


7 Réponses :


12
votes

Vous devez mettre quitter (); après la redirection de votre en-tête, sinon vous venez de charger deux pages de contenu en 1 page.

Assurez-vous également que vous avez session_start (); en haut de tous vos scripts.


2 commentaires

J'ai ajouté la sortie (); Mais ça n'a pas fonctionné! Malheureusement, je dois utiliser la redirection à cause de la structure du site ...


Ils clés ici sont session_start (); En haut de toutes vos pages



4
votes

Vous ne commencez pas la session. Afin d'utiliser des variables de session et de les transporter sur des pages, vous devez mettre xxx

en haut de chaque page avant toute autre page.


0 commentaires

1
votes

Simples! Assurez-vous que la page que vous venez de (par ex. www.example.com) redirige vers un (par exemple www.example.com/redirect.php) Avis www au début. Si vous modifiez cela de la page à la page, alors oui, les choses sont wonky.


1 commentaires

Même problème, les redirections d'en-tête changeaient de la page à la page et je l'ai changée au schéma commun utilisé dans l'ensemble du projet et du tour de tour, cela a fonctionné .. vissé mon cul sur ceci pendant au moins une semaine ... merci homme, tu es une Sauveur...



0
votes

Ces sessions ne fonctionnent pas toujours comme nous nous attendons parfois. J'ai eu un problème similaire avec mon site Web en utilisant des sessions qui se perdent. Je l'ai essentiellement résolu en injectant la valeur que je veux conserver la session dans le champ de texte masqué la première fois que la page se charge. Puis la deuxième fois que j'appelle la page (page Soumettre), je lisais simplement la valeur du champ de texte masqué et continuez avec le reste de mon code.

C'est plus facile et plus propre que d'utiliser des sessions dans ce cas!


3 commentaires

C'est aussi très peu sûr. Certaines données de session ne sont pertinentes que pour le serveur et ne doivent pas être exposées au client.


D'accord avec Joso, les sessions sont plus propres qu'une vue d'opinion et de données de session ne sont pas considérées comme des données de vitesses ...


Qu'entendez-vous par champ de texte caché ...? champ de texte qui ne peut pas être vérifié en consultant votre code source HTML?



2
votes

J'essayais de définir l'ID de session de ma propre utilisation: xxx

mais comme le documentation dit, vous devez l'utiliser avant xxx

à l'aide de la session_start (), efface les paramètres de la session .


0 commentaires

0
votes

sortie; devrait être placé après la redirection de l'en-tête ou la session_regenee_id (vrai); peut être utilisé


0 commentaires

0
votes

Il vous suffit de vérifier la permission du fichier dans / var / lib / php Donnez à YJE Public Permersssion à / var / lib / php / session répertoire.

et tout fait.


0 commentaires