php $ _SESSION with Switch

时间:2014-02-16 15:35:35

标签: php duplicates

我想创建一个$_SESSION值,但它只在普通页面中执行。如果我使用开关/外壳我无法获得该值。有人可以帮帮我吗?

开关/案例:

switch($_GET['act'])
  {
        case 'login':                    
              include('./include/login.php'); break; 
        case 'logout':                    
              include('./include/logout.php'); break;      
        case 'help': 
              include('./include/help.php'); break;
        case 'help2': 
              include('./include/help.php'); break;                                                    
        case 'contact': 
              include('./include/contat.php'); break;
        case 'admin': 
              include('./include/admin.php'); break;
        case 'moderate': 
              include('./include/moderate.php'); break;                   
        case 'check': 
              include('./include/check.php'); break;             
        case 'belevki': 
              include('./include/belevki.php'); break;
        case 'register': 
              include('./include/register.php'); break;            
        case 'ls': 
              include('./include/ls.php'); break;      
        case 'los': 
              include('./include/los.php'); break;   
        case 'profile': 
              include('./include/profile.php'); break;          
        case 'srok': 
              include('./include/check1visrok.php'); break;
        default: // разглеждане на index-a
              include('./include/index.php');
  }          

这是我想要创建会话

的链接
$egn = $_POST['student'];
     validegn($egn);
$_SESSION['favcolor'] = $egn;
header("location:../index.php");

这是我要显示值

的最后一页
$egn = $_SESSION['favcolor'];
echo $_SESSION['favcolor'];

1 个答案:

答案 0 :(得分:0)

当您通过header('location: ../index.php)进行重定向时,会删除所有$ _GET值。这与$ _SESSION值和session_start()分开,即使您根本不使用会话,它也会以这种方式工作。

在第一页上,请改为:

header("location:../index.php?act=help");'
例如,

。这将保留您的GET参数,您的开关将正常工作。您可能希望编写一个动态创建重定向地址的函数。

在第二页(包含switch($_GET['act']))上,您将收到act参数。

简化和总结:

  • $_SESSIONsession_start()
  • 之后可用
  • $_GET将包含上一页通过网址传递的值,例如 http://foo.com?firstParam=1&secondParam=2
  • $_POST将包含通过<form method='post'>...</form>发送的值。

您现在看到session_start()switch()在您的情况下不相关,因为您在switch语句中使用$_GET。您只需要正确传递$_GET参数,然后就可以了。