动态名称会话isset如何使用?

时间:2016-07-20 13:01:50

标签: php session session-variables session-cookies isset

我正在尝试在下面显示的第二页上获得动态Warning:(6, 25) Unused function MyComp ,但它不起作用(根据打印输出):

第一页网址

import com.typesafe.sbt.packager.rpm.RpmPlugin.autoImport._
import com.typesafe.sbt.packager.archetypes.ServerLoader

scalaVersion := "2.11.7"

name := "systemdtest"

organization := "myTestOrg"

enablePlugins(JavaServerAppPackaging)

version := "1.0"

// RPM SETTINGS
rpmVendor := "me"

packageSummary in Linux := "A summary"

packageDescription := "Do some stuff"

rpmRelease := "1"

rpmBrpJavaRepackJars := false

rpmLicense := Some("Copyright this project")

rpmGroup := Some("mygroup")

rpmPrefix := Some("/opt/mypath")

//THIS IS THE KEY PIECE!!
serverLoading in Rpm := ServerLoader.Systemd

首页代码

$_SESSION[$id]

第二页网址

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

第二页代码

<?php 
session_start();

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

?>

2 个答案:

答案 0 :(得分:1)

我发现问题我们不能使用$ _SESSION的数字索引

但是我们可以通过将数字转换为罗马数字来使用$ _SESSION中的数字

第一页网址

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

第一页代码

<?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; 
        } 

?>

第二页网址

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

第二页代码

<?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; 
            } 

    ?>

输出

working

感谢@gre_gor和@Katie

答案 1 :(得分:0)

可能是你的普通代码(这看起来像一个快速的模型),你有空格吗?&gt;某处。这可能会导致问题。

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

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

适合我。注意没有?&gt;字符。

更新

关于会话名称限制(can a php $_SESSION variable have numeric id thus : $_SESSION['1234’]

,以下内容可能会引起您的兴趣

您的示例中存在此问题,您只需添加id_,然后在验证/获取会话时执行相同的检查。