2016-07-20 38 views
1

Ich versuche, dynamische $_SESSION[$id] auf der zweiten Seite unten zu bekommen, aber seine Arbeit nicht (gemäß dem Ausdruck):dynamisch Name Sitzung isset wie zu verwenden?

Erste Seite url

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

Erste Seite Code

<?php 
session_start(); 

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

?> 

Zweite Seite url

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

Zweite Seite Code

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

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

$ _SESSION [ 'id'] ist der richtige Weg. –

+0

Verwenden Sie keine Variablen innerhalb einer Sitzungsvariablen –

+0

Bitte beachten Sie http: // stackoverflow.com/questions/19879839/how-create-session-mit-dynamic-name – Hemang

Antwort

1

fand ich Problem, das wir nicht numerischen Index für $ _SESSION

aber wir können durch convert Anzahl an römischen Ziffern

erste Seite url

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

erste Seite verwenden Nummer in $ _SESSION verwenden können 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; 
     } 

?> 

zweite Seite URL

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

Zweite Seite 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; 
      } 

    ?> 

Ausgang

working 

dank @gre_gor und @Katie

0

Könnte das in dem normalen Code (diese sieht aus wie eine schnelle Mockup), haben Sie ein Leerzeichen nach?> Irgendwo. Das könnte Probleme verursachen.

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

und

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

Arbeiten für mich. Hinweis nein?> Zeichen.

UPDATE:

Die folgende könnte von Interesse sein, in Bezug auf Sitzungsnamen Einschränkungen (can a php $_SESSION variable have numeric id thus : $_SESSION['1234’])

Sie haben diese Frage in Ihrem Beispiel Sie nur ein id_ hinzufügen könnte und dann die gleiche Prüfung tun, wenn die Validierung/die Sitzung bekommen.

+0

funktioniert nicht auf meiner Seite – Hemang