2014-11-06 128 views
-2

我的会话机制似乎打破了,所以我尝试了这个非常短的代码。这里有什么问题?我错过了什么吗?为什么这个简单的PHP会话不起作用?

的index.php

<?php session_start();?> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 
    <?php 
     echo '<form action="update.php?'. session_id().'" method="POST"><fieldset><input type="text" value="hello"/><input type="submit" value="OK"/></fieldset></form>'; 
     print_r($_SESSION); 
    ?> 
</body> 
</html> 

update.php

<?php 
    session_start(); 
    print_r($_POST); 
    foreach($_POST as $key => $value) 
     $_SESSION[$key]=$value; 
    session_write_close(); 
    print_r($_SESSION); 
?> 

<a href="index.php?<?php echo session_id();?>">hello</a> 
+2

定义 '破'。定义'不起作用'。 – Utkanos 2014-11-06 22:26:36

+0

你的结论提供的错误信息是“它不工作”。 – Vanitas 2014-11-06 22:29:37

+0

简单地说,print_r返回它不应该放置的空数组。 – Lapsusone 2014-11-06 22:57:27

回答

0

如果您的文章没有工作,可能是因为从输入你没有名字:

的index.php

<?php session_start();?> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 
     <form action="update.php" method="POST"> 
       <fieldset> 
        <input type="hidden" name="session_key" value="<?php echo session_id(); ?>" /> 
        <input type="text" name="message" value="hello"/> 
        <input name="submit" type="submit" value="OK"/> 
       </fieldset> 
     </form> 

     <?php print_r($_SESSION); ?> 
</body> 
</html> 

update.php

session_start(); 
    print_r($_POST); 
    foreach($_POST as $key => $value) 
     $_SESSION[$key] = $value; 
    session_write_close(); 
    print_r($_SESSION); 

<a href="index.php?id=<?php echo session_id();?>">hello</a> 
+0

尽管如此,在表单页上打印$ _SESSION是个不错的主意,if空。它会显示'array()'。如果这仅用于调试目的,请在旁边添加注释以在生产中删除。 – 2014-11-06 22:58:31

相关问题