2010-08-31 6 views
1

Pour une raison quelconque, ma session d'identification de poste ne s'applique pas à ma page de script de classement. Je prends le post_id à partir de l'URL des messages dans ma page posts et le transforme en $_SESSION pour l'apporter à ma page de script de classement. Mon $_SESSION qui contient l'ID d'utilisateur connecté $_SESSION['user_id'] s'il est connecté est reporté dans le script de classement, mais pas le poste $_SESSION. Comment puis-je transférer mes identifiants de posts sur ma page de script de classement? J'ai session_start(); en haut de mes deux pages.

$_SESSION['post_id'] = $_GET['pid']; 
+0

Est-ce que '$ _SESSION ['post_id'] = $ _GET ['pid'];' en haut de chaque page? Si c'est le cas, $ _SESSION ['post_id'] 'sera remplacé par rien si aucun pid n'est fourni. – fredley

+0

non ce n'est pas son juste dans la page de la poste. – aatteot

Répondre

2

Vous pouvez avoir une sortie avant de démarrer la session. Si tel est le cas, il se peut que la session ne puisse pas être définie correctement. Activer le mode de débogage et la recherche d'une erreur concernant la fonction session_start():

ini_set('display_errors', 'on'); 
error_reporting(E_ALL); 

Ou consultez le error_log si vous ne pouvez pas changer le débogage sur.

L'erreur pourrait ressembler à ceci:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\phptests\test.php:1) in C:\xampp\htdocs\phptests\test.php on line 4 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\phptests\test.php:1) in C:\xampp\htdocs\phptests\test.php on line 4 
+0

+1 Je tapais la même chose .. me obtient à chaque fois .. même une ligne vide peut le faire. – Mikey1980

+0

Où dois-je placer ce code? – aatteot

+0

@aatteot, en haut de votre script. – shamittomar

0

La raison la plus courante pour avoir des problèmes avec des sessions php est que le script php est quelque chose avant la délivrer en sortie session démarre. Ok, vous n'avez peut-être aucune instruction d'écho, ou vous n'avez peut-être même pas de code PHP à part lire la session ... mais prenez le temps de vérifier ce qui se passe AVANT que votre code ne commence.

Par exemple, nous allons jouer place la différence: (un seul code fonctionnera)

<?php 
    session_start(); 
    $_SESSION["test"] = "hello"; 
    if($_SESSION["test"] == "hello"; 
    { 
     echo "Session is working!"; 
    } 
    else 
    { 
     echo "Session is NOT working!"; 
    } 
?> 

et ...

<?php 
    session_start(); 
    $_SESSION["test"] = "hello"; 
    if($_SESSION["test"] == "hello"; 
    { 
     echo "Session is working!"; 
    } 
    else 
    { 
     echo "Session is NOT working!"; 
    } 
?> 

La différence est qu'il ya un espace avant l'ouverture TOUTES les données avant session_start() empêcheront le script de fonctionner.

J'ai été là - avoir un espace accidentel ou une ligne vide en haut du document va créer de sérieux problèmes, mais activer les sorties d'erreur php devrait vous montrer où vous allez mal si c'est le cas.

Questions connexes