2016-07-20 1 views
1

Je suis en train de faire dynamique $_SESSION[$id] sur la deuxième page présentée ci-dessous, mais sa ne fonctionne pas (selon l'impression):dynamiquement nom session isset comment utiliser?

url Première page

https://example.com/test.php?id=1548393 

premier code de la page

<?php 
session_start(); 

$id = $_GET['id']; 
$_SESSION[$id] = "mysecretstringline"; 

?> 

Deuxième page url

https://example.com/test2.php?id=1548393 

Deuxième code de la page

<?php 
session_start(); 
$id = $_GET['id']; 

if(isset($_SESSION[$id])){ 
echo "working"; 
}else{ 
echo "not working"; 
} 
?> 
+1

$ _SESSION [ 'id'] est la bonne façon. –

+0

N'utilisez pas de variables à l'intérieur d'une variable de session –

+0

veuillez voir ceci http: // stackoverflow.com/questions/19879839/how-create-session-avec-dynamique-nom – Hemang

Répondre

1

j'ai trouvé problème que nous ne pouvons pas utiliser l'index numérique pour $ _SESSION

mais nous pouvons utiliser le numéro de _SESSION $ par numéro de convertir en chiffres romains

première page URL

https://example.com/test.php?id=1548393 

première page Code

<?php 
session_start(); 

$roman_id = romanic_number($_GET['id']); 
$_SESSION[$roman_id] = "mysecretstringline"; 


     function romanic_number($integer, $upcase = true) 
     { 
      $table = array('M'=>1000, 'CM'=>900, 'D'=>500, 'CD'=>400, 'C'=>100, 'XC'=>90, 'L'=>50, 'XL'=>40, 'X'=>10, 'IX'=>9, 'V'=>5, 'IV'=>4, 'I'=>1); 
      $return = ''; 
      while($integer > 0) 
      { 
       foreach($table as $rom=>$arb) 
       { 
        if($integer >= $arb) 
        { 
         $integer -= $arb; 
         $return .= $rom; 
         break; 
        } 
       } 
      } 

      return $return; 
     } 

?> 

page deuxième adresse URL

https://example.com/test2.php?id=1548393 

deuxième page Code

<?php 
session_start(); 

$roman_id = romanic_number($_GET['id']); 

if(isset($_SESSION[$roman_id])){ 
echo "working"; 
}else{ 
echo "not working"; 
} 


      function romanic_number($integer, $upcase = true) 
      { 
       $table = array('M'=>1000, 'CM'=>900, 'D'=>500, 'CD'=>400, 'C'=>100, 'XC'=>90, 'L'=>50, 'XL'=>40, 'X'=>10, 'IX'=>9, 'V'=>5, 'IV'=>4, 'I'=>1); 
       $return = ''; 
       while($integer > 0) 
       { 
        foreach($table as $rom=>$arb) 
        { 
         if($integer >= $arb) 
         { 
          $integer -= $arb; 
          $return .= $rom; 
          break; 
         } 
        } 
       } 

       return $return; 
      } 

    ?> 

sortie

working 

grâce @gre_gor et @Katie

0

Peut-être que dans votre code normal (ce qui ressemble à un rapide mockup), vous avez un espace après?> Quelque part. Cela pourrait causer des problèmes.

<?php 
// start.php 
session_start(); 
$id = $_GET['id']; 
$_SESSION[$id] = "mysecretstringline"; 

et

<?php 
// next.php 
session_start(); 
$id = $_GET['id']; 
if (isset($_SESSION[$id])) { 
    echo "working"; 
} else { 
    echo "not working"; 
} 

fonctionne pour moi. Remarquez pas?> Caractères.

MISE À JOUR:

Voici peut-être d'intérêt en ce qui concerne les contraintes de nom de session (can a php $_SESSION variable have numeric id thus : $_SESSION['1234’])

Vous avez cette question dans votre exemple, vous pouvez simplement ajouter un id_ puis faire la même vérification lors de la validation/Obtenir la session.

+0

ne travaille pas de mon côté – Hemang