0

Un utilisateur cliquera sur un lien qui ouvrira une nouvelle page (code ci-dessous). Mon problème est que lorsque cette nouvelle page est ouverte, elle crée un nouvel ID de session. Comment puis-je empêcher cela de se produire?Variables de session PHP

require_once('../../config.php'); //Database connection details 
require_once('../../connect.php'); //Connect to database 

session_start(); <----------- HERE 


if(isset($_GET['id'])) 
{ 

$id = $_GET['id']; 
$tbl_uploads = $_SESSION['COMPANY_ID'].'_uploads'; 

$query = "SELECT username, type, size, content FROM $tbl_uploads WHERE id = '$id'"; 

$result = mysql_query($query) or die('Error, query failed'); 
list($username, $type, $size, $content) = mysql_fetch_array($result); 

header("Content-length: $size"); 
header("Content-type: $type"); 
header("Content-Disposition: inline; filename=$username"); 
echo $content; 

mysql_close($link); 
exit; 
} 

Répondre

1

assurez-vous que vous avez sur la première ligne du fichier error_reporting(E_ALL);

Je pense que vous avez un autre bug ici, le session_start() ne devrait pas affecter cela.

+0

J'ajoutions que, et aucune erreur à déclaration obligatoire. La page reste vide! – Michael

0

Est-ce que $_GET['id'] est défini? Appliquez une clause else sur cette première if et crachez une erreur quelconque si ce n'est pas le cas. Peut-être que quelque chose tourne votre clic dans un POST.

+0

C'est, j'ai vérifié cela. Si je supprime le session_start(); et changez le code pour taper un nom de table spécifique à la place de $ tbl_uploads, ça marche! J'ai essayé de mettre un session_write_close(); fonctionner là avant les en-têtes, mais cela n'aide pas non plus! – Michael

+0

Ce script s'exécute-t-il sur un domaine différent (sous-domaine) de celui où se trouve le lien d'origine? Ou sur un chemin différent? L'identifiant de l'hôte de votre cookie de session est peut-être trop restrictif et ce script ne tombe pas sous les limites de la "vraie" session, donc vous obtenez une nouvelle session. –

2

L'un des fichiers requis envoie réellement n'importe quelle sortie. Si c'est le cas, session_start() devrait aller devant eux.

+0

Vous devez déclarer l'instruction if mieux! Je suggère d'utiliser un point d'interrogation après la première phrase. ;) –

+0

En tiendra compte à partir de maintenant. Merci :) – Alfabravo

0

session_start() peut être le problème. Lorsque vous démarrez une session, elle doit créer un identifiant de session. C'est comme ça que ça me semble quand même. Pourriez-vous inclure le code pour session_start()?

0

Pourquoi essayez-vous pas ceci:

$sid = session_id(); 
if ($sid == ""){ 
     //Session should be created 
     session_start(); 
}//else Session already exists